project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/TeamListActivity.java
changeset 10017 de822cd3df3a
parent 7584 7831c84cc644
equal deleted inserted replaced
10015:4feced261c68 10017:de822cd3df3a
    41 import android.widget.AdapterView.OnItemClickListener;
    41 import android.widget.AdapterView.OnItemClickListener;
    42 import android.widget.ImageButton;
    42 import android.widget.ImageButton;
    43 import android.widget.SimpleAdapter;
    43 import android.widget.SimpleAdapter;
    44 
    44 
    45 public class TeamListActivity extends ListActivity implements OnItemClickListener {
    45 public class TeamListActivity extends ListActivity implements OnItemClickListener {
    46 	private List<Team> teams;
    46     private List<Team> teams;
    47 	private ImageButton addButton;
    47     private ImageButton addButton;
    48 
    48 
    49 	@Override
    49     @Override
    50 	protected void onCreate(Bundle savedInstanceState) {
    50     protected void onCreate(Bundle savedInstanceState) {
    51 		super.onCreate(savedInstanceState);
    51         super.onCreate(savedInstanceState);
    52 		setContentView(R.layout.activity_teamlist);
    52         setContentView(R.layout.activity_teamlist);
    53 		addButton = (ImageButton)findViewById(R.id.btnAdd);
    53         addButton = (ImageButton)findViewById(R.id.btnAdd);
    54 		addButton.setOnClickListener(new OnClickListener() {
    54         addButton.setOnClickListener(new OnClickListener() {
    55 			public void onClick(View v) {
    55             public void onClick(View v) {
    56 				editTeam(null);
    56                 editTeam(null);
    57 			}
    57             }
    58 		});
    58         });
    59 	}
    59     }
    60 	
       
    61 	@Override
       
    62 	public void onResume() {
       
    63 		super.onResume();
       
    64 		updateList();
       
    65 		getListView().setOnItemClickListener(this);
       
    66 		registerForContextMenu(getListView());
       
    67 	}
       
    68 	
       
    69 	public void onItemClick(AdapterView<?> adapterView, View v, int position, long arg3) {
       
    70 		editTeam(teams.get(position).name);
       
    71 	}
       
    72 	
       
    73 	@Override
       
    74 	public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuinfo){
       
    75 		menu.add(ContextMenu.NONE, 0, ContextMenu.NONE, R.string.edit);
       
    76 		menu.add(ContextMenu.NONE, 1, ContextMenu.NONE, R.string.delete);
       
    77 	}
       
    78 	
       
    79 	@Override
       
    80 	public boolean onContextItemSelected(MenuItem item){
       
    81 		AdapterView.AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
       
    82 		int position = menuInfo.position;
       
    83 		Team team = teams.get(position);
       
    84 		switch(item.getItemId()){
       
    85 		case 0:
       
    86 			editTeam(team.name);
       
    87 			return true;
       
    88 		case 1:
       
    89 			Team.getTeamfileByName(getApplicationContext(), team.name).delete();
       
    90 			updateList();
       
    91 			return true;
       
    92 		}
       
    93 		return false;
       
    94 	}
       
    95 	
       
    96 	private void updateList() {
       
    97 		teams = FrontendDataUtils.getTeams(getApplicationContext());
       
    98 		Collections.sort(teams, Team.NAME_ORDER);
       
    99 		SimpleAdapter adapter = new SimpleAdapter(this, teamsToMaps(teams), R.layout.team_selection_entry_simple, new String[]{"txt", "img"}, new int[]{R.id.txtName, R.id.imgDifficulty});
       
   100 		setListAdapter(adapter);
       
   101 	}
       
   102 	
       
   103 	private void editTeam(String teamName) {
       
   104 		Intent i = new Intent(this, TeamCreatorActivity.class);
       
   105 		i.putExtra(TeamCreatorActivity.PARAMETER_EXISTING_TEAMNAME, teamName);
       
   106 		startActivity(i);
       
   107 	}
       
   108 
    60 
   109 	private static final int[] botlevelDrawables = new int[] {
    61     @Override
   110 		R.drawable.human, R.drawable.bot5, R.drawable.bot4, R.drawable.bot3, R.drawable.bot2, R.drawable.bot1
    62     public void onResume() {
   111 	};
    63         super.onResume();
   112 	
    64         updateList();
   113 	private List<Map<String, ?>> teamsToMaps(List<Team> teams) {
    65         getListView().setOnItemClickListener(this);
   114 		List<Map<String, ?>> result = new ArrayList<Map<String,?>>();
    66         registerForContextMenu(getListView());
   115 		for(Team t : teams) {
    67     }
   116 			HashMap<String, Object> map = new HashMap<String, Object>();
    68 
   117 			map.put("team", t);
    69     public void onItemClick(AdapterView<?> adapterView, View v, int position, long arg3) {
   118 			map.put("txt", t.name);
    70         editTeam(teams.get(position).name);
   119 			int botlevel = t.hogs.get(0).level;
    71     }
   120 			if(botlevel<0 || botlevel>=botlevelDrawables.length) {
    72 
   121 				map.put("img", R.drawable.bot1);
    73     @Override
   122 			} else {
    74     public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuinfo){
   123 				map.put("img", botlevelDrawables[botlevel]);
    75         menu.add(ContextMenu.NONE, 0, ContextMenu.NONE, R.string.edit);
   124 			}
    76         menu.add(ContextMenu.NONE, 1, ContextMenu.NONE, R.string.delete);
   125 			result.add(map);
    77     }
   126 		}
    78 
   127 		return result;
    79     @Override
   128 	}
    80     public boolean onContextItemSelected(MenuItem item){
       
    81         AdapterView.AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
       
    82         int position = menuInfo.position;
       
    83         Team team = teams.get(position);
       
    84         switch(item.getItemId()){
       
    85         case 0:
       
    86             editTeam(team.name);
       
    87             return true;
       
    88         case 1:
       
    89             Team.getTeamfileByName(getApplicationContext(), team.name).delete();
       
    90             updateList();
       
    91             return true;
       
    92         }
       
    93         return false;
       
    94     }
       
    95 
       
    96     private void updateList() {
       
    97         teams = FrontendDataUtils.getTeams(getApplicationContext());
       
    98         Collections.sort(teams, Team.NAME_ORDER);
       
    99         SimpleAdapter adapter = new SimpleAdapter(this, teamsToMaps(teams), R.layout.team_selection_entry_simple, new String[]{"txt", "img"}, new int[]{R.id.txtName, R.id.imgDifficulty});
       
   100         setListAdapter(adapter);
       
   101     }
       
   102 
       
   103     private void editTeam(String teamName) {
       
   104         Intent i = new Intent(this, TeamCreatorActivity.class);
       
   105         i.putExtra(TeamCreatorActivity.PARAMETER_EXISTING_TEAMNAME, teamName);
       
   106         startActivity(i);
       
   107     }
       
   108 
       
   109     private static final int[] botlevelDrawables = new int[] {
       
   110         R.drawable.human, R.drawable.bot5, R.drawable.bot4, R.drawable.bot3, R.drawable.bot2, R.drawable.bot1
       
   111     };
       
   112 
       
   113     private List<Map<String, ?>> teamsToMaps(List<Team> teams) {
       
   114         List<Map<String, ?>> result = new ArrayList<Map<String,?>>();
       
   115         for(Team t : teams) {
       
   116             HashMap<String, Object> map = new HashMap<String, Object>();
       
   117             map.put("team", t);
       
   118             map.put("txt", t.name);
       
   119             int botlevel = t.hogs.get(0).level;
       
   120             if(botlevel<0 || botlevel>=botlevelDrawables.length) {
       
   121                 map.put("img", R.drawable.bot1);
       
   122             } else {
       
   123                 map.put("img", botlevelDrawables[botlevel]);
       
   124             }
       
   125             result.add(map);
       
   126         }
       
   127         return result;
       
   128     }
   129 }
   129 }