3 import java.io.File; |
3 import java.io.File; |
4 import java.io.FileNotFoundException; |
4 import java.io.FileNotFoundException; |
5 import java.io.IOException; |
5 import java.io.IOException; |
6 import java.util.Collections; |
6 import java.util.Collections; |
7 import java.util.List; |
7 import java.util.List; |
|
8 import java.util.Map; |
8 |
9 |
9 import org.hedgewars.hedgeroid.R; |
10 import org.hedgewars.hedgeroid.R; |
10 import org.hedgewars.hedgeroid.Datastructures.FrontendDataUtils; |
11 import org.hedgewars.hedgeroid.Datastructures.FrontendDataUtils; |
11 import org.hedgewars.hedgeroid.Datastructures.MapRecipe; |
12 import org.hedgewars.hedgeroid.Datastructures.MapRecipe; |
12 import org.hedgewars.hedgeroid.Datastructures.Scheme; |
13 import org.hedgewars.hedgeroid.Datastructures.Scheme; |
13 import org.hedgewars.hedgeroid.Datastructures.Schemes; |
14 import org.hedgewars.hedgeroid.Datastructures.Schemes; |
|
15 import org.hedgewars.hedgeroid.Datastructures.TeamInGame; |
14 import org.hedgewars.hedgeroid.Datastructures.Weaponset; |
16 import org.hedgewars.hedgeroid.Datastructures.Weaponset; |
15 import org.hedgewars.hedgeroid.Datastructures.Weaponsets; |
17 import org.hedgewars.hedgeroid.Datastructures.Weaponsets; |
16 import org.hedgewars.hedgeroid.util.FileUtils; |
18 import org.hedgewars.hedgeroid.util.FileUtils; |
17 |
19 |
18 import android.graphics.drawable.Drawable; |
20 import android.graphics.drawable.Drawable; |
27 import android.widget.ArrayAdapter; |
29 import android.widget.ArrayAdapter; |
28 import android.widget.ImageView; |
30 import android.widget.ImageView; |
29 import android.widget.Spinner; |
31 import android.widget.Spinner; |
30 import android.widget.Toast; |
32 import android.widget.Toast; |
31 |
33 |
32 public class SettingsFragment extends Fragment implements RoomStateManager.Observer { |
34 public class SettingsFragment extends Fragment { |
33 private static final String TAG = SettingsFragment.class.getSimpleName(); |
|
34 |
|
35 private Spinner styleSpinner, schemeSpinner, weaponsetSpinner, themeSpinner; |
35 private Spinner styleSpinner, schemeSpinner, weaponsetSpinner, themeSpinner; |
36 private ImageView themeIcon; |
36 private ImageView themeIcon; |
37 |
37 |
38 private List<String> styles; |
38 private List<String> styles; |
39 private List<Scheme> schemes; |
39 private List<Scheme> schemes; |
67 styleSpinner = prepareSpinner(v, R.id.spinGameplay, styles, styleSelectedListener); |
67 styleSpinner = prepareSpinner(v, R.id.spinGameplay, styles, styleSelectedListener); |
68 schemeSpinner = prepareSpinner(v, R.id.spinGamescheme, Schemes.toNameList(schemes), schemeSelectedListener); |
68 schemeSpinner = prepareSpinner(v, R.id.spinGamescheme, Schemes.toNameList(schemes), schemeSelectedListener); |
69 weaponsetSpinner = prepareSpinner(v, R.id.spinweapons, Weaponsets.toNameList(weaponsets), weaponsetSelectedListener); |
69 weaponsetSpinner = prepareSpinner(v, R.id.spinweapons, Weaponsets.toNameList(weaponsets), weaponsetSelectedListener); |
70 themeSpinner = prepareSpinner(v, R.id.spinTheme, themes, themeSelectedListener); |
70 themeSpinner = prepareSpinner(v, R.id.spinTheme, themes, themeSelectedListener); |
71 |
71 |
72 stateManager.registerObserver(this); |
72 stateManager.addListener(roomStateChangeListener); |
73 |
73 |
74 if(stateManager.getGameStyle() != null) { |
74 if(stateManager.getGameStyle() != null) { |
75 styleSpinner.setSelection(styles.indexOf(stateManager.getGameStyle()), false); |
75 styleSpinner.setSelection(styles.indexOf(stateManager.getGameStyle()), false); |
76 } |
76 } |
77 if(stateManager.getScheme() != null) { |
77 if(stateManager.getScheme() != null) { |
109 } |
109 } |
110 |
110 |
111 @Override |
111 @Override |
112 public void onDestroy() { |
112 public void onDestroy() { |
113 super.onDestroy(); |
113 super.onDestroy(); |
114 stateManager.unregisterObserver(this); |
114 stateManager.removeListener(roomStateChangeListener); |
115 } |
115 } |
116 |
116 |
117 private static int getSchemePosition(List<Scheme> schemes, String scheme) { |
117 private static int getSchemePosition(List<Scheme> schemes, String scheme) { |
118 for(int i=0; i<schemes.size(); i++) { |
118 for(int i=0; i<schemes.size(); i++) { |
119 if(schemes.get(i).name.equals(scheme)) { |
119 if(schemes.get(i).name.equals(scheme)) { |
180 } |
180 } |
181 }; |
181 }; |
182 public void onNothingSelected(AdapterView<?> arg0) {}; |
182 public void onNothingSelected(AdapterView<?> arg0) {}; |
183 }; |
183 }; |
184 |
184 |
185 public void onChiefStatusChanged(boolean isChief) { |
185 private final RoomStateManager.Listener roomStateChangeListener = new RoomStateManager.Listener() { |
186 setChiefState(isChief); |
186 public void onWeaponsetChanged(Weaponset weaponset) { |
187 } |
187 weaponsetSpinner.setSelection(getWeaponsetPosition(weaponsets, weaponset.name)); |
188 |
188 } |
189 public void onGameStyleChanged(String gameStyle) { |
189 |
190 styleSpinner.setSelection(styles.indexOf(gameStyle)); |
190 public void onTeamsChanged(Map<String, TeamInGame> teams) {} |
191 } |
191 |
192 |
192 public void onSchemeChanged(Scheme scheme) { |
193 public void onMapChanged(MapRecipe recipe) { |
193 schemeSpinner.setSelection(getSchemePosition(schemes, scheme.name)); |
194 themeSpinner.setSelection(themes.indexOf(recipe.theme)); |
194 } |
195 } |
195 |
196 |
196 public void onMapChanged(MapRecipe recipe) { |
197 public void onSchemeChanged(Scheme scheme) { |
197 themeSpinner.setSelection(themes.indexOf(recipe.theme)); |
198 schemeSpinner.setSelection(getSchemePosition(schemes, scheme.name)); |
198 } |
199 } |
199 |
200 |
200 public void onGameStyleChanged(String gameStyle) { |
201 public void onWeaponsetChanged(Weaponset weaponset) { |
201 styleSpinner.setSelection(styles.indexOf(gameStyle)); |
202 weaponsetSpinner.setSelection(getWeaponsetPosition(weaponsets, weaponset.name)); |
202 } |
203 } |
203 |
|
204 public void onChiefStatusChanged(boolean isChief) { |
|
205 setChiefState(isChief); |
|
206 } |
|
207 }; |
204 } |
208 } |