--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/TeamSelectionActivity.java Thu Aug 04 17:34:21 2011 +0200
@@ -0,0 +1,157 @@
+package org.hedgewars.mobile;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.hedgewars.mobile.EngineProtocol.FrontendDataUtils;
+import org.hedgewars.mobile.EngineProtocol.Team;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.view.ContextMenu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.AdapterView;
+import android.widget.AdapterView.AdapterContextMenuInfo;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ImageButton;
+import android.widget.ListView;
+import android.widget.SimpleAdapter;
+
+public class TeamSelectionActivity extends Activity{
+
+ private ImageButton addTeam, back;
+ private ListView availableTeams, selectedTeams;
+ private ArrayList<HashMap<String, ?>> availableTeamsList, selectedTeamsList;
+ private int minTeams = 2;
+
+ public void onCreate(Bundle savedInstanceState){
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.team_selector);
+
+ addTeam = (ImageButton) findViewById(R.id.btnAdd);
+ back = (ImageButton) findViewById(R.id.btnBack);
+
+ addTeam.setOnClickListener(addTeamClicker);
+ back.setOnClickListener(backClicker);
+
+ availableTeams = (ListView) findViewById(R.id.availableTeams);
+ availableTeamsList = FrontendDataUtils.getTeams(this);
+ SimpleAdapter adapter = new SimpleAdapter(this, availableTeamsList, R.layout.team_selection_entry, new String[]{"txt", "img"}, new int[]{R.id.txtName, R.id.imgDifficulty});
+ availableTeams.setAdapter(adapter);
+ registerForContextMenu(availableTeams);
+ availableTeams.setOnItemClickListener(availableClicker);
+
+ selectedTeams = (ListView) findViewById(R.id.selectedTeams);
+ selectedTeamsList = new ArrayList<HashMap<String, ?>>();
+ ArrayList<HashMap<String, ?>> toBeRemoved = new ArrayList<HashMap<String, ?>>();
+ ArrayList<Team> teamsStartGame = getIntent().getParcelableArrayListExtra("teams");
+ for(HashMap<String, ?> hashmap : availableTeamsList){
+ for(Team t : teamsStartGame){
+ if(((Team)hashmap.get("team")).equals(t)){
+ toBeRemoved.add(hashmap);
+ selectedTeamsList.add(hashmap);
+ }
+ }
+ }
+ for(HashMap<String, ?> hashmap : toBeRemoved) availableTeamsList.remove(hashmap);
+
+ adapter = new SimpleAdapter(this, selectedTeamsList, R.layout.team_selection_entry, new String[]{"txt", "img"}, new int[]{R.id.txtName, R.id.imgDifficulty});
+ selectedTeams.setAdapter(adapter);
+ selectedTeams.setOnItemClickListener(selectedClicker);
+
+
+
+
+ }
+
+ public void onBackPressed(){
+ returnTeams();
+ super.onBackPressed();
+ }
+
+ private OnClickListener addTeamClicker = new OnClickListener(){
+ public void onClick(View v) {
+ startActivity(new Intent(TeamSelectionActivity.this, TeamCreatorActivity.class));
+
+ }
+ };
+
+ private OnClickListener backClicker = new OnClickListener(){
+ public void onClick(View v){
+ returnTeams();
+ finish();
+ }
+ };
+
+ private OnItemClickListener availableClicker = new OnItemClickListener(){
+ public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) {
+ selectAvailableTeamsItem(position);
+ }
+ };
+ private OnItemClickListener selectedClicker = new OnItemClickListener(){
+ public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) {
+ availableTeamsList.add((HashMap<String, ?>) selectedTeamsList.get(position));
+ selectedTeamsList.remove(position);
+ ((SimpleAdapter)availableTeams.getAdapter()).notifyDataSetChanged();
+ ((SimpleAdapter)selectedTeams.getAdapter()).notifyDataSetChanged();
+ }
+
+ };
+
+ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuinfo){
+ menu.add(ContextMenu.NONE, 0, ContextMenu.NONE, R.string.select);
+ menu.add(ContextMenu.NONE, 2, ContextMenu.NONE, R.string.edit);
+ menu.add(ContextMenu.NONE, 1, ContextMenu.NONE, R.string.delete);
+
+ }
+ public boolean onContextItemSelected(MenuItem item){
+ AdapterView.AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
+ int position = menuInfo.position;
+ switch(item.getItemId()){
+ case 0://select
+ selectAvailableTeamsItem(position);
+ return true;
+ case 1://delete
+ availableTeamsList.remove(position);
+ ((SimpleAdapter)availableTeams.getAdapter()).notifyDataSetChanged();
+ File f = new File(String.format("%s/%s/%s.xml", TeamSelectionActivity.this.getFilesDir(), Team.DIRECTORY_TEAMS, availableTeamsList.get(position).get("txt")));
+ f.delete();
+ return true;
+ case 2://edit
+ Intent i = new Intent(TeamSelectionActivity.this, TeamCreatorActivity.class);
+ Team t = (Team)availableTeamsList.get(position).get("team");
+ i.putExtra("team", t);
+ startActivity(i);
+ return true;
+ }
+ return false;
+ }
+
+ private void selectAvailableTeamsItem(int position){
+ selectedTeamsList.add((HashMap<String, ?>) availableTeamsList.get(position));
+ availableTeamsList.remove(position);
+ ((SimpleAdapter)availableTeams.getAdapter()).notifyDataSetChanged();
+ ((SimpleAdapter)selectedTeams.getAdapter()).notifyDataSetChanged();
+ }
+
+ private void returnTeams(){
+ int teamsCount = selectedTeamsList.size();
+ if(teamsCount >= minTeams){
+ Intent i = new Intent();
+ Parcelable[] teams = new Parcelable[teamsCount];
+ for(int x = 0 ; x < teamsCount; x++){
+ teams[x] = (Team)selectedTeamsList.get(x).get("team");
+ }
+ i.putExtra("teams", teams);
+ setResult(Activity.RESULT_OK, i);
+ }else{
+ setResult(Activity.RESULT_CANCELED);
+ }
+ }
+}