diff -r 76392a62da2f -r 141c12a23787 project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/TeamCreatorActivity.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/TeamCreatorActivity.java Thu Aug 11 14:56:31 2011 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/TeamCreatorActivity.java Thu Aug 11 14:59:14 2011 +0200 @@ -17,6 +17,7 @@ import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; +import android.view.View.OnFocusChangeListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; @@ -42,6 +43,8 @@ private ScrollView scroller; private MediaPlayer mp = null; private ArrayList hogs; + private boolean settingsChanged = false; + private boolean saved = false; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); @@ -59,16 +62,17 @@ back = (ImageButton) findViewById(R.id.btnBack); save = (ImageButton) findViewById(R.id.btnSave); voiceButton = (ImageButton) findViewById(R.id.btnPlay); - + scroller = (ScrollView) findViewById(R.id.scroller); save.setOnClickListener(saveClicker); - + back.setOnClickListener(backClicker); + LinearLayout ll = (LinearLayout) findViewById(R.id.HogsContainer); hogs = new ArrayList(ll.getChildCount()); for(int i = 0; i < ll.getChildCount(); i++){ RelativeLayout team_creation_entry = (RelativeLayout) ll.getChildAt(i); - + hogHat.add((Spinner)team_creation_entry.findViewById(R.id.spinTeam1)); hogDice.add((ImageButton)team_creation_entry.findViewById(R.id.btnTeam1)); hogName.add((EditText)team_creation_entry.findViewById(R.id.txtTeam1)); @@ -77,16 +81,19 @@ SimpleAdapter sa = new SimpleAdapter(this, gravesData, R.layout.spinner_textimg_entry, new String[]{"txt", "img"}, new int[]{R.id.spinner_txt, R.id.spinner_img}); sa.setViewBinder(viewBinder); grave.setAdapter(sa); + grave.setOnFocusChangeListener(focusser); ArrayList> flagsData = FrontendDataUtils.getFlags(this); sa = new SimpleAdapter(this, flagsData, R.layout.spinner_textimg_entry, new String[]{"txt", "img"}, new int[]{R.id.spinner_txt, R.id.spinner_img}); sa.setViewBinder(viewBinder); flag.setAdapter(sa); - + flag.setOnFocusChangeListener(focusser); + ArrayList> typesData = FrontendDataUtils.getTypes(this); sa = new SimpleAdapter(this, typesData, R.layout.spinner_textimg_entry, new String[]{"txt", "img"}, new int[]{R.id.spinner_txt, R.id.spinner_img}); difficulty.setAdapter(sa); - + difficulty.setOnFocusChangeListener(focusser); + ArrayList> hatsData = FrontendDataUtils.getHats(this); sa = new SimpleAdapter(this, hatsData, R.layout.spinner_textimg_entry, new String[]{"txt", "img"}, new int[]{R.id.spinner_txt, R.id.spinner_img}); sa.setViewBinder(viewBinder); @@ -96,21 +103,23 @@ ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, FrontendDataUtils.getVoices(this)); voice.setAdapter(adapter); + voice.setOnFocusChangeListener(focusser); voiceButton.setOnClickListener(voiceClicker); - + adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, FrontendDataUtils.getForts(this)); fort.setAdapter(adapter); fort.setOnItemSelectedListener(fortSelector); - - + fort.setOnFocusChangeListener(focusser); + Team t = this.getIntent().getParcelableExtra("team"); if(t != null){ name.setText(t.name); int position = ((ArrayAdapter)voice.getAdapter()).getPosition(t.voice); voice.setSelection(position); + position = ((ArrayAdapter)fort.getAdapter()).getPosition(t.fort); fort.setSelection(position); - + position = 0; for(HashMap hashmap : typesData){ if(hashmap.get("txt").equals(t.levels[0])){ @@ -118,7 +127,7 @@ break; } } - + position = 0; for(HashMap hashmap : gravesData){ if(hashmap.get("txt").equals(t.grave)){ @@ -126,7 +135,7 @@ break; } } - + position = 0; for(HashMap hashmap : typesData){ if(hashmap.get("txt").equals(t.flag)){ @@ -134,7 +143,7 @@ break; } } - + for(int i = 0; i < Team.maxNumberOfHogs; i++){ position = 0; for(HashMap hashmap : hatsData){ @@ -142,7 +151,7 @@ hogHat.get(i).setSelection(position); } } - + hogName.get(i).setText(t.hogNames[i]); } } @@ -155,20 +164,49 @@ mp = null; } } + + private OnFocusChangeListener focusser = new OnFocusChangeListener(){ + public void onFocusChange(View v, boolean hasFocus) { + settingsChanged = true; + } + + }; + public void onBackPressed(){ + onFinishing(); + super.onBackPressed(); + + } + + private OnClickListener backClicker = new OnClickListener(){ + public void onClick(View v){ + onFinishing(); + finish(); + } + }; + + private void onFinishing(){ + if(settingsChanged){ + setResult(RESULT_OK); + }else{ + setResult(RESULT_CANCELED); + } + } + private OnClickListener saveClicker = new OnClickListener(){ public void onClick(View v) { + saved = true; Team team = new Team(); team.name = name.getText().toString(); HashMap hashmap = (HashMap) flag.getSelectedItem(); - + team.flag = (String)hashmap.get("txt"); team.fort = fort.getSelectedItem().toString(); hashmap = (HashMap)grave.getSelectedItem(); team.grave = hashmap.get("txt").toString(); team.hash = "0"; team.voice = voice.getSelectedItem().toString(); - + hashmap = ((HashMap)difficulty.getSelectedItem()); String levelString = hashmap.get("txt").toString(); int levelInt; @@ -185,7 +223,7 @@ }else { levelInt = 5; } - + for(int i = 0; i < hogName.size(); i++){ team.hogNames[i] = hogName.get(i).getText().toString(); hashmap = (HashMap)hogHat.get(i).getSelectedItem(); @@ -201,12 +239,13 @@ e.printStackTrace(); } } - + }; - + private OnItemSelectedListener fortSelector = new OnItemSelectedListener(){ @SuppressWarnings("unchecked") public void onItemSelected(AdapterView arg0, View arg1, int position, long arg3) { + settingsChanged = true; String fortName = (String) arg0.getAdapter().getItem(position); Drawable fortIconDrawable = Drawable.createFromPath(Utils.getDownloadPath(TeamCreatorActivity.this) + "Forts/" + fortName + "L.png"); imgFort.setImageDrawable(fortIconDrawable); @@ -226,7 +265,7 @@ File[] dirs = dir.listFiles(); File f = dirs[(int)Math.round(Math.random()*dirs.length)]; if(f.getName().endsWith(".ogg"))file = f.getAbsolutePath(); - + if(mp == null) mp = new MediaPlayer(); else mp.reset(); mp.setDataSource(file);