|
1 package org.hedgewars.hedgeroid; |
|
2 |
|
3 import java.io.IOException; |
|
4 import java.util.ArrayList; |
|
5 import java.util.Collections; |
|
6 import java.util.List; |
|
7 import java.util.Map; |
|
8 |
|
9 import org.hedgewars.hedgeroid.Datastructures.Weaponset; |
|
10 import org.hedgewars.hedgeroid.Datastructures.Weaponsets; |
|
11 |
|
12 import android.app.ListActivity; |
|
13 import android.content.Intent; |
|
14 import android.os.Bundle; |
|
15 import android.view.ContextMenu; |
|
16 import android.view.MenuItem; |
|
17 import android.view.View; |
|
18 import android.view.View.OnClickListener; |
|
19 import android.widget.AdapterView; |
|
20 import android.widget.AdapterView.AdapterContextMenuInfo; |
|
21 import android.widget.AdapterView.OnItemClickListener; |
|
22 import android.widget.Button; |
|
23 import android.widget.ListAdapter; |
|
24 import android.widget.SimpleAdapter; |
|
25 import android.widget.Toast; |
|
26 |
|
27 public class WeaponsetListActivity extends ListActivity implements OnItemClickListener { |
|
28 private List<Weaponset> userWeaponsets; |
|
29 private Button addButton; |
|
30 |
|
31 @Override |
|
32 protected void onCreate(Bundle savedInstanceState) { |
|
33 super.onCreate(savedInstanceState); |
|
34 setContentView(R.layout.activity_weaponsetlist); |
|
35 addButton = (Button)findViewById(R.id.addButton); |
|
36 addButton.setOnClickListener(new OnClickListener() { |
|
37 public void onClick(View v) { |
|
38 editWeaponset(null); |
|
39 } |
|
40 }); |
|
41 } |
|
42 |
|
43 @Override |
|
44 public void onResume() { |
|
45 super.onResume(); |
|
46 updateList(); |
|
47 getListView().setOnItemClickListener(this); |
|
48 registerForContextMenu(getListView()); |
|
49 } |
|
50 |
|
51 private List<Map<String, ?>> weaponsetsToMap(List<Weaponset> weaponsets) { |
|
52 List<Map<String, ?>> result = new ArrayList<Map<String, ?>>(); |
|
53 for(Weaponset weaponset : weaponsets) { |
|
54 result.add(Collections.singletonMap("txt", weaponset.name)); |
|
55 } |
|
56 return result; |
|
57 } |
|
58 |
|
59 public void onItemClick(AdapterView<?> adapterView, View v, int position, long arg3) { |
|
60 editWeaponset(userWeaponsets.get(position).name); |
|
61 } |
|
62 |
|
63 @Override |
|
64 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuinfo){ |
|
65 menu.add(ContextMenu.NONE, 0, ContextMenu.NONE, R.string.edit); |
|
66 menu.add(ContextMenu.NONE, 1, ContextMenu.NONE, R.string.delete); |
|
67 } |
|
68 |
|
69 @Override |
|
70 public boolean onContextItemSelected(MenuItem item){ |
|
71 AdapterView.AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo(); |
|
72 int position = menuInfo.position; |
|
73 Weaponset weaponset = userWeaponsets.get(position); |
|
74 switch(item.getItemId()){ |
|
75 case 0: |
|
76 editWeaponset(weaponset.name); |
|
77 return true; |
|
78 case 1: |
|
79 try { |
|
80 Weaponsets.deleteUserWeaponset(this, weaponset.name); |
|
81 } catch (IOException e) { |
|
82 Toast.makeText(this.getApplicationContext(), R.string.error_missing_sdcard_or_files, Toast.LENGTH_SHORT).show(); |
|
83 } |
|
84 updateList(); |
|
85 return true; |
|
86 } |
|
87 return false; |
|
88 } |
|
89 |
|
90 private void updateList() { |
|
91 try { |
|
92 userWeaponsets = Weaponsets.loadUserWeaponsets(this); |
|
93 } catch (IOException e) { |
|
94 Toast.makeText(this, R.string.error_missing_sdcard_or_files, Toast.LENGTH_LONG).show(); |
|
95 finish(); |
|
96 } |
|
97 Collections.sort(userWeaponsets, Weaponset.NAME_ORDER); |
|
98 ListAdapter adapter = new SimpleAdapter(this, weaponsetsToMap(userWeaponsets), android.R.layout.simple_list_item_1, new String[]{"txt"}, new int[]{android.R.id.text1}); |
|
99 setListAdapter(adapter); |
|
100 } |
|
101 |
|
102 private void editWeaponset(String weaponsetName) { |
|
103 Intent i = new Intent(this, WeaponsetCreatorActivity.class); |
|
104 i.putExtra(WeaponsetCreatorActivity.PARAMETER_EXISTING_WEAPONSETNAME, weaponsetName); |
|
105 startActivity(i); |
|
106 } |
|
107 } |