project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/TeamSelectionActivity.java
changeset 6447 0bb16bc5c8b4
parent 6432 ffb18b44415d
child 6488 c356ddebab84
equal deleted inserted replaced
6446:a49d01b96185 6447:0bb16bc5c8b4
    20 package org.hedgewars.hedgeroid;
    20 package org.hedgewars.hedgeroid;
    21 
    21 
    22 import java.io.File;
    22 import java.io.File;
    23 import java.util.ArrayList;
    23 import java.util.ArrayList;
    24 import java.util.HashMap;
    24 import java.util.HashMap;
       
    25 import java.util.List;
    25 
    26 
    26 import org.hedgewars.hedgeroid.EngineProtocol.FrontendDataUtils;
    27 import org.hedgewars.hedgeroid.EngineProtocol.FrontendDataUtils;
    27 import org.hedgewars.hedgeroid.EngineProtocol.Team;
    28 import org.hedgewars.hedgeroid.EngineProtocol.Team;
    28 
    29 
    29 import android.app.Activity;
    30 import android.app.Activity;
    43 import android.widget.RelativeLayout;
    44 import android.widget.RelativeLayout;
    44 import android.widget.SimpleAdapter;
    45 import android.widget.SimpleAdapter;
    45 import android.widget.SimpleAdapter.ViewBinder;
    46 import android.widget.SimpleAdapter.ViewBinder;
    46 import android.widget.TextView;
    47 import android.widget.TextView;
    47 
    48 
    48 public class TeamSelectionActivity extends Activity{
    49 public class TeamSelectionActivity extends Activity implements Runnable{
    49 
    50 
    50 	private static final int ACTIVITY_TEAMCREATION = 0;
    51 	private static final int ACTIVITY_TEAMCREATION = 0;
    51 
    52 
    52 	private ImageButton addTeam, back;
    53 	private ImageButton addTeam, back;
    53 	private ListView availableTeams, selectedTeams;
    54 	private ListView availableTeams, selectedTeams;
    54 	private ArrayList<HashMap<String, Object>> availableTeamsList, selectedTeamsList;
    55 	private List<HashMap<String, Object>> availableTeamsList, selectedTeamsList;
    55 	private TextView txtInfo;
    56 	private TextView txtInfo;
    56 
    57 
    57 	public void onCreate(Bundle savedInstanceState){
    58 	public void onCreate(Bundle savedInstanceState){
    58 		super.onCreate(savedInstanceState);
    59 		super.onCreate(savedInstanceState);
    59 
    60 
    60 		setContentView(R.layout.team_selector);
    61 		setContentView(R.layout.team_selector);
    61 
    62 
    62 		addTeam = (ImageButton) findViewById(R.id.btnAdd);
    63 		addTeam = (ImageButton) findViewById(R.id.btnAdd);
    63 		back = (ImageButton) findViewById(R.id.btnBack);
    64 		back = (ImageButton) findViewById(R.id.btnBack);
    64 		txtInfo = (TextView) findViewById(R.id.txtInfo);
    65 		txtInfo = (TextView) findViewById(R.id.txtInfo);
    65 
    66 		selectedTeams = (ListView) findViewById(R.id.selectedTeams);
       
    67 		availableTeams = (ListView) findViewById(R.id.availableTeams);
    66 		addTeam.setOnClickListener(addTeamClicker);
    68 		addTeam.setOnClickListener(addTeamClicker);
    67 		back.setOnClickListener(backClicker);
    69 		back.setOnClickListener(backClicker);
    68 
    70 
    69 		availableTeams = (ListView) findViewById(R.id.availableTeams);
    71 		availableTeamsList = new ArrayList<HashMap<String, Object>>();
    70 		availableTeamsList = FrontendDataUtils.getTeams(this);
       
    71 		SimpleAdapter adapter = new SimpleAdapter(this, availableTeamsList, R.layout.team_selection_entry_simple, new String[]{"txt", "img"}, new int[]{R.id.txtName, R.id.imgDifficulty});
    72 		SimpleAdapter adapter = new SimpleAdapter(this, availableTeamsList, R.layout.team_selection_entry_simple, new String[]{"txt", "img"}, new int[]{R.id.txtName, R.id.imgDifficulty});
    72 		availableTeams.setAdapter(adapter);
    73 		availableTeams.setAdapter(adapter);
       
    74 		availableTeams.setOnItemClickListener(availableClicker);
    73 		registerForContextMenu(availableTeams);
    75 		registerForContextMenu(availableTeams);
    74 		availableTeams.setOnItemClickListener(availableClicker);
    76 
    75 
       
    76 		selectedTeams = (ListView) findViewById(R.id.selectedTeams);
       
    77 		selectedTeamsList = new ArrayList<HashMap<String, Object>>();
    77 		selectedTeamsList = new ArrayList<HashMap<String, Object>>();
    78 		ArrayList<HashMap<String, ?>> toBeRemoved = new ArrayList<HashMap<String, ?>>();
       
    79 		ArrayList<Team> teamsStartGame = getIntent().getParcelableArrayListExtra("teams");
       
    80 		for(HashMap<String, Object> hashmap : availableTeamsList){
       
    81 			for(Team t : teamsStartGame){
       
    82 				if(((Team)hashmap.get("team")).equals(t)){
       
    83 					toBeRemoved.add(hashmap);
       
    84 					selectedTeamsList.add(FrontendDataUtils.teamToHashMap(t));//create a new hashmap to ensure all variables are entered into the map
       
    85 				}
       
    86 			}
       
    87 		}
       
    88 		for(HashMap<String, ?> hashmap : toBeRemoved) availableTeamsList.remove(hashmap);
       
    89 
       
    90 		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});
    78 		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});
    91 		adapter.setViewBinder(viewBinder);
    79 		adapter.setViewBinder(viewBinder);
    92 		selectedTeams.setAdapter(adapter);
    80 		selectedTeams.setAdapter(adapter);
    93 		selectedTeams.setOnItemClickListener(selectedClicker);
    81 		selectedTeams.setOnItemClickListener(selectedClicker);
    94 
    82 
    95 		txtInfo.setText(String.format(getResources().getString(R.string.teams_info_template), selectedTeams.getChildCount()));
    83 		txtInfo.setText(String.format(getResources().getString(R.string.teams_info_template), selectedTeams.getChildCount()));
       
    84 
       
    85 		new Thread(this).start();//load the teams from xml async
       
    86 	}
       
    87 
       
    88 	public void run(){
       
    89 		List<HashMap<String, Object>> teamsList = FrontendDataUtils.getTeams(this);//teams from xml
       
    90 		ArrayList<Team> teamsStartGame = getIntent().getParcelableArrayListExtra("teams");//possible selected teams
       
    91 
       
    92 		for(HashMap<String, Object> hashmap : teamsList){
       
    93 			boolean added = false;
       
    94 			for(Team t : teamsStartGame){
       
    95 				if(((Team)hashmap.get("team")).equals(t)){//add to available or add to selected
       
    96 					selectedTeamsList.add(FrontendDataUtils.teamToMap(t));//create a new hashmap to ensure all variables are entered into the map
       
    97 					added = true;
       
    98 					break;
       
    99 				}
       
   100 			}
       
   101 			if(!added) availableTeamsList.add(hashmap);
       
   102 		}
       
   103 
       
   104 		this.runOnUiThread(new Runnable(){
       
   105 			public void run() {
       
   106 				((SimpleAdapter)selectedTeams.getAdapter()).notifyDataSetChanged();
       
   107 				((SimpleAdapter)availableTeams.getAdapter()).notifyDataSetChanged();		
       
   108 			}
       
   109 		});
    96 	}
   110 	}
    97 
   111 
    98 	private ViewBinder viewBinder = new ViewBinder(){
   112 	private ViewBinder viewBinder = new ViewBinder(){
    99 		public boolean setViewValue(View view, Object data,	String textRepresentation) {
   113 		public boolean setViewValue(View view, Object data,	String textRepresentation) {
   100 			switch(view.getId()){
   114 			switch(view.getId()){
   118 		}else{
   132 		}else{
   119 			super.onActivityResult(requestCode, resultCode, data);
   133 			super.onActivityResult(requestCode, resultCode, data);
   120 		}
   134 		}
   121 	}
   135 	}
   122 
   136 
       
   137 	/*
       
   138 	 * Updates the list view when TeamCreationActivity is shutdown and the user returns to this point
       
   139 	 */
   123 	private void updateListViews(){
   140 	private void updateListViews(){
   124 		unregisterForContextMenu(availableTeams);
   141 		unregisterForContextMenu(availableTeams);
   125 		availableTeamsList = FrontendDataUtils.getTeams(this);
   142 		availableTeamsList = FrontendDataUtils.getTeams(this);
   126 		ArrayList<HashMap<String, Object>> toBeRemoved = new ArrayList<HashMap<String, Object>>();
   143 		ArrayList<HashMap<String, Object>> toBeRemoved = new ArrayList<HashMap<String, Object>>();
   127 		for(HashMap<String, Object> hashmap : selectedTeamsList){
   144 		for(HashMap<String, Object> hashmap : selectedTeamsList){