project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/TeamSelectionActivity.java
branchhedgeroid
changeset 5506 2b0c4fcde4c6
parent 5467 88e25840f532
child 5532 3d7ac2b3b703
equal deleted inserted replaced
5504:96d735b83d43 5506:2b0c4fcde4c6
    17 import android.view.View.OnClickListener;
    17 import android.view.View.OnClickListener;
    18 import android.widget.AdapterView;
    18 import android.widget.AdapterView;
    19 import android.widget.AdapterView.AdapterContextMenuInfo;
    19 import android.widget.AdapterView.AdapterContextMenuInfo;
    20 import android.widget.AdapterView.OnItemClickListener;
    20 import android.widget.AdapterView.OnItemClickListener;
    21 import android.widget.ImageButton;
    21 import android.widget.ImageButton;
       
    22 import android.widget.ImageView;
    22 import android.widget.ListView;
    23 import android.widget.ListView;
       
    24 import android.widget.RelativeLayout;
    23 import android.widget.SimpleAdapter;
    25 import android.widget.SimpleAdapter;
       
    26 import android.widget.SimpleAdapter.ViewBinder;
    24 
    27 
    25 public class TeamSelectionActivity extends Activity{
    28 public class TeamSelectionActivity extends Activity{
    26 
    29 
    27 	private ImageButton addTeam, back;
    30 	private ImageButton addTeam, back;
    28 	private ListView availableTeams, selectedTeams;
    31 	private ListView availableTeams, selectedTeams;
    34 
    37 
    35 		setContentView(R.layout.team_selector);
    38 		setContentView(R.layout.team_selector);
    36 
    39 
    37 		addTeam = (ImageButton) findViewById(R.id.btnAdd);
    40 		addTeam = (ImageButton) findViewById(R.id.btnAdd);
    38 		back = (ImageButton) findViewById(R.id.btnBack);
    41 		back = (ImageButton) findViewById(R.id.btnBack);
    39 		
    42 
    40 		addTeam.setOnClickListener(addTeamClicker);
    43 		addTeam.setOnClickListener(addTeamClicker);
    41 		back.setOnClickListener(backClicker);
    44 		back.setOnClickListener(backClicker);
    42 
    45 
    43 		availableTeams = (ListView) findViewById(R.id.availableTeams);
    46 		availableTeams = (ListView) findViewById(R.id.availableTeams);
    44 		availableTeamsList = FrontendDataUtils.getTeams(this);
    47 		availableTeamsList = FrontendDataUtils.getTeams(this);
    45 		SimpleAdapter adapter = new SimpleAdapter(this, availableTeamsList, R.layout.team_selection_entry, new String[]{"txt", "img"}, new int[]{R.id.txtName, R.id.imgDifficulty});
    48 		SimpleAdapter adapter = new SimpleAdapter(this, availableTeamsList, R.layout.team_selection_entry, new String[]{"txt", "img"}, new int[]{R.id.txtName, R.id.imgDifficulty});
    46 		availableTeams.setAdapter(adapter);
    49 		availableTeams.setAdapter(adapter);
    47 		registerForContextMenu(availableTeams);
    50 		registerForContextMenu(availableTeams);
    48 		availableTeams.setOnItemClickListener(availableClicker);
    51 		availableTeams.setOnItemClickListener(availableClicker);
    49 		
    52 
    50 		selectedTeams = (ListView) findViewById(R.id.selectedTeams);
    53 		selectedTeams = (ListView) findViewById(R.id.selectedTeams);
    51 		selectedTeamsList = new ArrayList<HashMap<String, ?>>();
    54 		selectedTeamsList = new ArrayList<HashMap<String, ?>>();
    52 		ArrayList<HashMap<String, ?>> toBeRemoved = new ArrayList<HashMap<String, ?>>();
    55 		ArrayList<HashMap<String, ?>> toBeRemoved = new ArrayList<HashMap<String, ?>>();
    53 		ArrayList<Team> teamsStartGame = getIntent().getParcelableArrayListExtra("teams");
    56 		ArrayList<Team> teamsStartGame = getIntent().getParcelableArrayListExtra("teams");
    54 		for(HashMap<String, ?> hashmap : availableTeamsList){
    57 		for(HashMap<String, ?> hashmap : availableTeamsList){
    58 					selectedTeamsList.add(hashmap);
    61 					selectedTeamsList.add(hashmap);
    59 				}
    62 				}
    60 			}
    63 			}
    61 		}
    64 		}
    62 		for(HashMap<String, ?> hashmap : toBeRemoved) availableTeamsList.remove(hashmap);
    65 		for(HashMap<String, ?> hashmap : toBeRemoved) availableTeamsList.remove(hashmap);
    63 		
    66 
    64 		adapter = new SimpleAdapter(this, selectedTeamsList, R.layout.team_selection_entry, new String[]{"txt", "img"}, new int[]{R.id.txtName, R.id.imgDifficulty});
    67 		adapter = new SimpleAdapter(this, selectedTeamsList, R.layout.team_selection_entry, new String[]{"txt", "img", "color", "count"}, new int[]{R.id.txtName, R.id.imgDifficulty, R.id.teamColor, R.id.teamCount});
       
    68 		adapter.setViewBinder(viewBinder);
    65 		selectedTeams.setAdapter(adapter);
    69 		selectedTeams.setAdapter(adapter);
    66 		selectedTeams.setOnItemClickListener(selectedClicker);
    70 		selectedTeams.setOnItemClickListener(selectedClicker);
    67 		
    71 
    68 		
    72 	}
    69 		
    73 
    70 		
    74 	private ViewBinder viewBinder = new ViewBinder(){
    71 	}
    75 		public boolean setViewValue(View view, Object data,	String textRepresentation) {
    72 	
    76 			switch(view.getId()){
       
    77 			case R.id.teamColor:
       
    78 				setTeamColor(view, (Integer)data);
       
    79 				return true;
       
    80 			case R.id.teamCount:
       
    81 				setTeamHogCount((ImageView)view, (Integer)data);
       
    82 				return true;
       
    83 			default:
       
    84 				return false;
       
    85 			}
       
    86 		}
       
    87 	};
       
    88 
       
    89 	private void setTeamColor(int position, int color){
       
    90 		View iv = ((RelativeLayout)selectedTeams.getChildAt(position)).findViewById(R.id.teamCount);
       
    91 		setTeamColor(iv, color);
       
    92 	}
       
    93 	private void setTeamColor(View iv, int color){
       
    94 		iv.setBackgroundColor(color);
       
    95 	}
       
    96 
       
    97 	private void setTeamHogCount(int position, int count){
       
    98 		ImageView iv = (ImageView)((RelativeLayout)selectedTeams.getChildAt(position)).findViewById(R.id.teamCount);
       
    99 		setTeamHogCount(iv, count);
       
   100 	}
       
   101 
       
   102 	private void setTeamHogCount(ImageView iv, int count){
       
   103 
       
   104 		switch(count){
       
   105 		case 0:
       
   106 			iv.setImageResource(R.drawable.teamcount0);
       
   107 			break;
       
   108 		case 1:
       
   109 			iv.setImageResource(R.drawable.teamcount1);
       
   110 			break;
       
   111 		case 2:
       
   112 			iv.setImageResource(R.drawable.teamcount2);
       
   113 			break;
       
   114 		case 3:
       
   115 			iv.setImageResource(R.drawable.teamcount3);
       
   116 			break;
       
   117 		case 4:
       
   118 			iv.setImageResource(R.drawable.teamcount4);
       
   119 			break;
       
   120 		case 5:
       
   121 			iv.setImageResource(R.drawable.teamcount5);
       
   122 			break;
       
   123 		case 6:
       
   124 			iv.setImageResource(R.drawable.teamcount6);
       
   125 			break;
       
   126 		case 7:
       
   127 			iv.setImageResource(R.drawable.teamcount7);
       
   128 			break;
       
   129 		case 8:
       
   130 			iv.setImageResource(R.drawable.teamcount8);
       
   131 			break;
       
   132 		case 9:
       
   133 			iv.setImageResource(R.drawable.teamcount9);
       
   134 			break;
       
   135 		}
       
   136 	}
       
   137 
    73 	public void onBackPressed(){
   138 	public void onBackPressed(){
    74 		returnTeams();
   139 		returnTeams();
    75 		super.onBackPressed();
   140 		super.onBackPressed();
    76 	}
   141 	}
    77 	
   142 
    78 	private OnClickListener addTeamClicker = new OnClickListener(){
   143 	private OnClickListener addTeamClicker = new OnClickListener(){
    79 		public void onClick(View v) {
   144 		public void onClick(View v) {
    80 			startActivity(new Intent(TeamSelectionActivity.this, TeamCreatorActivity.class));
   145 			startActivity(new Intent(TeamSelectionActivity.this, TeamCreatorActivity.class));
    81 			
   146 
    82 		}
   147 		}
    83 	};
   148 	};
    84 	
   149 
    85 	private OnClickListener backClicker = new OnClickListener(){
   150 	private OnClickListener backClicker = new OnClickListener(){
    86 		public void onClick(View v){
   151 		public void onClick(View v){
    87 			returnTeams();
   152 			returnTeams();
    88 			finish();
   153 			finish();
    89 		}
   154 		}
   106 
   171 
   107 	public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuinfo){
   172 	public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuinfo){
   108 		menu.add(ContextMenu.NONE, 0, ContextMenu.NONE, R.string.select);
   173 		menu.add(ContextMenu.NONE, 0, ContextMenu.NONE, R.string.select);
   109 		menu.add(ContextMenu.NONE, 2, ContextMenu.NONE, R.string.edit);
   174 		menu.add(ContextMenu.NONE, 2, ContextMenu.NONE, R.string.edit);
   110 		menu.add(ContextMenu.NONE, 1, ContextMenu.NONE, R.string.delete);
   175 		menu.add(ContextMenu.NONE, 1, ContextMenu.NONE, R.string.delete);
   111 		
   176 
   112 	}
   177 	}
   113 	public boolean onContextItemSelected(MenuItem item){
   178 	public boolean onContextItemSelected(MenuItem item){
   114 		AdapterView.AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
   179 		AdapterView.AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
   115 		int position = menuInfo.position;
   180 		int position = menuInfo.position;
   116 		switch(item.getItemId()){
   181 		switch(item.getItemId()){
   132 		}
   197 		}
   133 		return false;
   198 		return false;
   134 	}
   199 	}
   135 
   200 
   136 	private void selectAvailableTeamsItem(int position){
   201 	private void selectAvailableTeamsItem(int position){
   137 		selectedTeamsList.add((HashMap<String, ?>) availableTeamsList.get(position));
   202 		HashMap<String, Object> hash = (HashMap<String, Object>) availableTeamsList.get(position);
       
   203 		Team t = (Team)hash.get("team");
       
   204 		int[] illegalcolors = new int[selectedTeamsList.size()];
       
   205 		for(int i = 0; i < selectedTeamsList.size(); i++){
       
   206 			illegalcolors[i] = ((Team)selectedTeamsList.get(i).get("team")).color;
       
   207 		}
       
   208 		t.setRandomColor(illegalcolors);
       
   209 		hash.put("color", t.color);
       
   210 		hash.put("count", t.hogCount);
       
   211 		
       
   212 		selectedTeamsList.add(hash);
   138 		availableTeamsList.remove(position);
   213 		availableTeamsList.remove(position);
   139 		((SimpleAdapter)availableTeams.getAdapter()).notifyDataSetChanged();
   214 		((SimpleAdapter)availableTeams.getAdapter()).notifyDataSetChanged();
   140 		((SimpleAdapter)selectedTeams.getAdapter()).notifyDataSetChanged();
   215 		((SimpleAdapter)selectedTeams.getAdapter()).notifyDataSetChanged();
   141 	}
   216 	}
   142 
   217