project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/SettingsFragment.java
changeset 7582 714310efad8f
parent 7568 75ba91f14ed5
child 7584 7831c84cc644
equal deleted inserted replaced
7580:c92596feac0d 7582:714310efad8f
     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 }