From 409a4b7a317f524d6288f63467b11e969b621b50 Mon Sep 17 00:00:00 2001 From: peer Date: Wed, 8 Apr 2015 00:55:58 +0200 Subject: [PATCH] cleaned up copy paste errors, utility for complexity enum, fixed bug with restricting types --- sudoq-app/AndroidManifest.xml | 2 +- .../res/layout-land/preferences_newsudoku.xml | 28 +------------- .../res/menu/action_bar_restrict_types.xml | 14 +++++++ .../res/menu/action_bar_sudoku_loading.xml | 5 +-- sudoq-app/res/values-de/strings.xml | 1 + sudoq-app/res/values-fr/strings.xml | 2 +- sudoq-app/res/values/strings.xml | 1 + .../menus/NewSudokuConfigurationActivity.java | 29 +++++++------- .../menus/SudokuLoadingAdapter.java | 24 +++--------- .../de/sudoq/controller/menus/Utility.java | 36 ++++++++++++++++-- .../AdvancedPreferencesActivity.java | 4 +- .../preferences/RestrictTypesActivity.java | 38 +++++-------------- .../preferences/RestrictTypesAdapter.java | 2 +- .../controller/sudoku/SudokuActivity.java | 2 +- 14 files changed, 88 insertions(+), 100 deletions(-) create mode 100644 sudoq-app/res/menu/action_bar_restrict_types.xml diff --git a/sudoq-app/AndroidManifest.xml b/sudoq-app/AndroidManifest.xml index 89d7c00c..ffbc1c6f 100644 --- a/sudoq-app/AndroidManifest.xml +++ b/sudoq-app/AndroidManifest.xml @@ -5,7 +5,7 @@ diff --git a/sudoq-app/res/layout-land/preferences_newsudoku.xml b/sudoq-app/res/layout-land/preferences_newsudoku.xml index 7a240503..3267b956 100644 --- a/sudoq-app/res/layout-land/preferences_newsudoku.xml +++ b/sudoq-app/res/layout-land/preferences_newsudoku.xml @@ -40,32 +40,8 @@ android:text="@string/profile_preference_button_advanced_preferences"/> - - - - - - - - - + + + + + + + + + + + \ No newline at end of file diff --git a/sudoq-app/res/menu/action_bar_sudoku_loading.xml b/sudoq-app/res/menu/action_bar_sudoku_loading.xml index 1136c971..62b1d245 100644 --- a/sudoq-app/res/menu/action_bar_sudoku_loading.xml +++ b/sudoq-app/res/menu/action_bar_sudoku_loading.xml @@ -16,7 +16,4 @@ android:title="@string/action_show_tutorial" android:showAsAction="never" /> - - - \ No newline at end of file + \ No newline at end of file diff --git a/sudoq-app/res/values-de/strings.xml b/sudoq-app/res/values-de/strings.xml index 323a0352..1cf5cde3 100644 --- a/sudoq-app/res/values-de/strings.xml +++ b/sudoq-app/res/values-de/strings.xml @@ -34,6 +34,7 @@ Profil wechseln Alle Gesten löschen Spezifische Geste löschen + Alle wiederherstellen diff --git a/sudoq-app/res/values-fr/strings.xml b/sudoq-app/res/values-fr/strings.xml index 9de166e8..f884de93 100644 --- a/sudoq-app/res/values-fr/strings.xml +++ b/sudoq-app/res/values-fr/strings.xml @@ -34,7 +34,7 @@ Changer de profil Supprimer tous les gestes Supprimer geste spécifique - + Restaurer Tous Oui diff --git a/sudoq-app/res/values/strings.xml b/sudoq-app/res/values/strings.xml index 563c4499..80f47e37 100644 --- a/sudoq-app/res/values/strings.xml +++ b/sudoq-app/res/values/strings.xml @@ -20,6 +20,7 @@ Switch Profile Delete all gestures Delete specific gesture + Restore all diff --git a/sudoq-app/src/de/sudoq/controller/menus/NewSudokuConfigurationActivity.java b/sudoq-app/src/de/sudoq/controller/menus/NewSudokuConfigurationActivity.java index 03948661..5a3a2662 100644 --- a/sudoq-app/src/de/sudoq/controller/menus/NewSudokuConfigurationActivity.java +++ b/sudoq-app/src/de/sudoq/controller/menus/NewSudokuConfigurationActivity.java @@ -98,7 +98,9 @@ public void onItemSelected(AdapterView parent, View view, int pos, long id) { sudokuType=null;//set to null to prevent: going to advanced -> disabling all -> coming back -> now disabled type still set //pass (user disabled all types, so a hint is shown. This hint may not be saved as a sudoku type!) }else{ - setSudokuType(Utility.string2enum(getApplicationContext(), item)); + Log.d(LOG_TAG, "OnItemSel_a "+sudokuType); + setSudokuType(Utility.string2type(getApplicationContext(), item)); + Log.d(LOG_TAG, "OnItemSel_z "+sudokuType); } } @@ -121,15 +123,7 @@ public void onNothingSelected(AdapterView parent) { public void onItemSelected(AdapterView parent, View view, int pos, long id) { String item = parent.getItemAtPosition(pos).toString(); - if (item.equals(getResources().getString(R.string.complexity_easy))) { - setSudokuDifficulty(Complexity.easy); - } else if (item.equals(getResources().getString(R.string.complexity_medium))) { - setSudokuDifficulty(Complexity.medium); - } else if (item.equals(getResources().getString(R.string.complexity_difficult))) { - setSudokuDifficulty(Complexity.difficult); - } else if (item.equals(getResources().getString(R.string.complexity_infernal))) { - setSudokuDifficulty(Complexity.infernal); - } + setSudokuDifficulty(Utility.string2complexity(getApplicationContext(), item)); } public void onNothingSelected(AdapterView parent) { @@ -146,7 +140,14 @@ public void onNothingSelected(AdapterView parent) { @Override public void onResume() { super.onResume(); - fillTypeSpinner(Profile.getInstance().getAssistances().getWantedTypesList()); + SudokuTypesList wtl = Profile.getInstance().getAssistances().getWantedTypesList(); + fillTypeSpinner(wtl); + /* this is a hack: for some reason when returning from settings, the typeSpinner selects the first position + * probably because it gets a new adapter. At the time I'm unable to debug this properly + * (judging from the LOG.d's it happens after this method) but it seems to work */ + if(wtl.contains(sudokuType)) + ((Spinner) findViewById(R.id.spinner_sudokutype)).setSelection(wtl.indexOf(sudokuType)); + Log.d(LOG_TAG, "Resume_ende: "+sudokuType); } private Spinner fillTypeSpinner(SudokuTypesList stl) { @@ -162,12 +163,14 @@ private Spinner fillTypeSpinner(SudokuTypesList stl) { Collections.sort(stl);//sortieren /* converse */ for(SudokuTypes st: stl) - wantedSudokuTypes.add(Utility.enum2string(this, st)); - + wantedSudokuTypes.add(Utility.type2string(this, st)); } + + Log.d(LOG_TAG, "Sudokutype_1: " + this.sudokuType); ArrayAdapter typeAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, wantedSudokuTypes); typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); typeSpinner.setAdapter(typeAdapter); + Log.d(LOG_TAG, "Sudokutype_4: " + this.sudokuType); return typeSpinner; } diff --git a/sudoq-app/src/de/sudoq/controller/menus/SudokuLoadingAdapter.java b/sudoq-app/src/de/sudoq/controller/menus/SudokuLoadingAdapter.java index a9b12980..1b721e1c 100644 --- a/sudoq-app/src/de/sudoq/controller/menus/SudokuLoadingAdapter.java +++ b/sudoq-app/src/de/sudoq/controller/menus/SudokuLoadingAdapter.java @@ -32,8 +32,6 @@ import de.sudoq.R; import de.sudoq.model.files.FileManager; import de.sudoq.model.game.GameData; -import de.sudoq.model.sudoku.complexity.Complexity; -import de.sudoq.model.sudoku.sudokuTypes.SudokuTypes; /** * Adapter für die Anzeige aller Spiele des Spielers @@ -43,8 +41,6 @@ public class SudokuLoadingAdapter extends ArrayAdapter { private static final String LOG_TAG = SudokuLoadingAdapter.class.getSimpleName(); private final Context context; private final List gameDatas; - private String[] typeStrings; - private String[] complexityStrings; /** * Erzeugt einen neuen SudokuLoadingAdpater mit den gegebenen Parametern @@ -58,7 +54,6 @@ public SudokuLoadingAdapter(Context context, List games) { super(context, R.layout.sudokuloadingitem, games); this.context = context; this.gameDatas = games; - initialiseComplexities(); } /** @@ -98,8 +93,8 @@ public View getView(int position, View convertView, ViewGroup parent) { ((SudokuLoadingActivity) context).finish(); } - sudokuType.setText(typeStrings[gameDatas.get(position).getType().ordinal()]); - sudokuComplexity.setText(complexityStrings[gameDatas.get(position).getComplexity().ordinal()]); + sudokuType. setText(Utility. type2string(getContext(), gameDatas.get(position).getType())); + sudokuComplexity.setText(Utility.complexity2string(getContext(), gameDatas.get(position).getComplexity())); TimeZone tz = TimeZone.getDefault(); SimpleDateFormat sdf = new SimpleDateFormat(context.getString(R.string.time_format)); @@ -111,22 +106,15 @@ public View getView(int position, View convertView, ViewGroup parent) { if (gameDatas.get(position).isFinished()) { sudokuState.setText(context.getString(R.string.check_mark)); - sudokuType.setTextColor(Color.GRAY); - sudokuComplexity.setTextColor(Color.GRAY); - sudokuTime.setTextColor(Color.GRAY); sudokuState.setTextColor(Color.GREEN); + sudokuType. setTextColor(Color.GRAY); + sudokuComplexity.setTextColor(Color.GRAY); + sudokuTime. setTextColor(Color.GRAY); + }else{ sudokuState.setText(""); } return rowView; } - - private void initialiseComplexities() { - complexityStrings = new String[Complexity.values().length]; - complexityStrings[Complexity.easy.ordinal()] = context.getString(R.string.complexity_easy); - complexityStrings[Complexity.medium.ordinal()] = context.getString(R.string.complexity_medium); - complexityStrings[Complexity.difficult.ordinal()] = context.getString(R.string.complexity_difficult); - complexityStrings[Complexity.infernal.ordinal()] = context.getString(R.string.complexity_infernal); - } } \ No newline at end of file diff --git a/sudoq-app/src/de/sudoq/controller/menus/Utility.java b/sudoq-app/src/de/sudoq/controller/menus/Utility.java index a6e1cae9..c752bb48 100644 --- a/sudoq-app/src/de/sudoq/controller/menus/Utility.java +++ b/sudoq-app/src/de/sudoq/controller/menus/Utility.java @@ -1,12 +1,13 @@ package de.sudoq.controller.menus; import android.content.Context; -import android.content.res.Resources; import de.sudoq.R; +import de.sudoq.model.sudoku.complexity.Complexity; import de.sudoq.model.sudoku.sudokuTypes.SudokuTypes; public class Utility { + private static String[] getSudokuTypeValues(Context context){ String[] typeStrings = new String[SudokuTypes.values().length]; typeStrings[SudokuTypes.standard4x4. ordinal()] = context.getString(R.string.sudoku_type_standard_4x4); @@ -23,8 +24,7 @@ private static String[] getSudokuTypeValues(Context context){ } - - public static SudokuTypes string2enum(Context context, String string){ + public static SudokuTypes string2type(Context context, String string){ String[] typeStrings = getSudokuTypeValues(context); for(int i=0; i= typeStrings.length ? null : typeStrings[index]; } + + + + + private static String[] getComplexityValues(Context context){ + String[] typeStrings = new String[Complexity.values().length]; + typeStrings[Complexity.easy. ordinal()] = context.getString(R.string.complexity_easy); + typeStrings[Complexity.medium. ordinal()] = context.getString(R.string.complexity_medium); + typeStrings[Complexity.difficult.ordinal()] = context.getString(R.string.complexity_difficult); + typeStrings[Complexity.infernal. ordinal()] = context.getString(R.string.complexity_infernal); + typeStrings[Complexity.arbitrary.ordinal()] = "error";//only for compatibility. There's no reason to convert 'arbitrary' to a string + return typeStrings; + } + + public static Complexity string2complexity(Context context, String string){ + String[] complexityStrings = getComplexityValues(context); + for(int i=0; i= complexityStrings.length ? null : complexityStrings[index]; + } + } diff --git a/sudoq-app/src/de/sudoq/controller/menus/preferences/AdvancedPreferencesActivity.java b/sudoq-app/src/de/sudoq/controller/menus/preferences/AdvancedPreferencesActivity.java index 15b68027..67d07355 100644 --- a/sudoq-app/src/de/sudoq/controller/menus/preferences/AdvancedPreferencesActivity.java +++ b/sudoq-app/src/de/sudoq/controller/menus/preferences/AdvancedPreferencesActivity.java @@ -17,9 +17,7 @@ import android.widget.Button; import android.widget.CheckBox; -import android.widget.Toast; import de.sudoq.R; -import de.sudoq.controller.menus.SudokuLoadingActivity; import de.sudoq.model.game.GameSettings; import de.sudoq.model.profile.Profile; @@ -83,7 +81,7 @@ public void selectTypesToRestrict(View view) { @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getSupportMenuInflater(); - inflater.inflate(R.menu.action_bar_player_preferences, menu); + inflater.inflate(R.menu.action_bar_standard, menu); return true; } diff --git a/sudoq-app/src/de/sudoq/controller/menus/preferences/RestrictTypesActivity.java b/sudoq-app/src/de/sudoq/controller/menus/preferences/RestrictTypesActivity.java index 30ee7844..e26fa494 100644 --- a/sudoq-app/src/de/sudoq/controller/menus/preferences/RestrictTypesActivity.java +++ b/sudoq-app/src/de/sudoq/controller/menus/preferences/RestrictTypesActivity.java @@ -13,24 +13,16 @@ import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; -import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; -import android.widget.TextView; +import android.widget.Toast; import de.sudoq.R; import de.sudoq.controller.SudoqListActivity; -import de.sudoq.controller.sudoku.SudokuActivity; -import de.sudoq.model.game.GameData; -import de.sudoq.model.game.GameManager; import de.sudoq.model.profile.Profile; import de.sudoq.model.sudoku.sudokuTypes.SudokuTypes; import de.sudoq.model.xml.SudokuTypesList; @@ -52,12 +44,6 @@ public class RestrictTypesActivity extends SudoqListActivity implements OnItemCl private RestrictTypesAdapter adapter; private SudokuTypesList types; - - protected static MenuItem menuDeleteFinished; - private static final int MENU_DELETE_FINISHED = 0; - - protected static MenuItem menuDeleteSpecific; - private static final int MENU_DELETE_SPECIFIC = 1; /** Constructors */ @@ -86,7 +72,7 @@ public void onCreate(Bundle savedInstanceState) { @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getSupportMenuInflater(); - inflater.inflate(R.menu.action_bar_sudoku_loading, menu); + inflater.inflate(R.menu.action_bar_restrict_types, menu); return true; } @@ -101,12 +87,11 @@ public boolean onCreateOptionsMenu(Menu menu) { @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case R.id.action_sudokuloading_delete_finished: - GameManager.getInstance().deleteFinishedGames(); - break; - case R.id.action_sudokuloading_delete_all: - for (GameData gd : GameManager.getInstance().getGameList()) - GameManager.getInstance().deleteGame(gd.getId()); + case R.id.action_restore_all: + /* add (only!) types that are not currently selected */ + for(SudokuTypes s: types.getAllTypes()) + if(!types.contains(s)) + types.add(s); break; default: super.onOptionsItemSelected(item); @@ -118,11 +103,9 @@ public boolean onOptionsItemSelected(MenuItem item) { @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); - List gamesList = GameManager.getInstance().getGameList(); - boolean noGames = gamesList.isEmpty(); - menu.findItem(R.id.action_sudokuloading_delete_finished).setVisible(!noGames); - menu.findItem(R.id.action_sudokuloading_delete_all ).setVisible(!noGames); + //Toast.makeText(getApplicationContext(), "prepOpt called. s_1: "+types.size()+" s_2: "+types.getAllTypes().size(), Toast.LENGTH_LONG).show(); + menu.findItem(R.id.action_restore_all).setVisible(types.size() < types.getAllTypes().size());//offer option to restore all only when some are disabled... return true; } @@ -183,8 +166,7 @@ public boolean onItemLongClick(AdapterView parent, View view, final int posit private void initialiseTypes() { types = Profile.getInstance().getAssistances().getWantedTypesList(); - Log.d(LOG_TAG, "typesSize: "+types.size()); - // initialize ArrayAdapter for the profile names and set it + // initialize ArrayAdapter for the type names and set it adapter = new RestrictTypesAdapter(this, types); setListAdapter(adapter); getListView().setOnItemClickListener(this); diff --git a/sudoq-app/src/de/sudoq/controller/menus/preferences/RestrictTypesAdapter.java b/sudoq-app/src/de/sudoq/controller/menus/preferences/RestrictTypesAdapter.java index be4446be..6811dcc8 100644 --- a/sudoq-app/src/de/sudoq/controller/menus/preferences/RestrictTypesAdapter.java +++ b/sudoq-app/src/de/sudoq/controller/menus/preferences/RestrictTypesAdapter.java @@ -56,7 +56,7 @@ public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = inflater.inflate(R.layout.restricttypes_item, parent, false); SudokuTypes type = super.getItem(position); - String full = Utility.enum2string(context, type);//translated name of Sudoku type; + String full = Utility.type2string(context, type);//translated name of Sudoku type; String lang = Locale.getDefault().getLanguage(); diff --git a/sudoq-app/src/de/sudoq/controller/sudoku/SudokuActivity.java b/sudoq-app/src/de/sudoq/controller/sudoku/SudokuActivity.java index 7d7261f5..0e3cb36f 100644 --- a/sudoq-app/src/de/sudoq/controller/sudoku/SudokuActivity.java +++ b/sudoq-app/src/de/sudoq/controller/sudoku/SudokuActivity.java @@ -344,7 +344,7 @@ public void onGlobalLayout() { private void setTypeText() { - String type = Utility.enum2string(this, this.game.getSudoku().getSudokuType().getEnumType()); + String type = Utility.type2string(this, this.game.getSudoku().getSudokuType().getEnumType()); int st; switch (this.game.getSudoku().getComplexity()) {