Project

General

Profile

« Previous | Next » 

Revision 19e20990

Added by Leszek Koltunski 2 days ago

Make it possible to control when to save solves:

- always
- never
- aks each time

View differences:

src/main/java/org/distorted/main/MainActivity.java
63 63
    private int mCurrentObject;
64 64
    private MainScrollGrid mGrid;
65 65
    private int mSortMode;
66
    private int mSaveMode;
66 67

  
67 68
///////////////////////////////////////////////////////////////////////////////////////////////////
68 69

  
......
209 210

  
210 211
      editor.putString("appVersion", mCurrVersion );
211 212
      editor.putInt("sortMode", mSortMode);
213
      editor.putInt("saveMode", mSaveMode);
212 214

  
213 215
      RubikObjectList.savePreferences(editor);
214 216
      editor.apply();
......
221 223
      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
222 224
      mOldVersion = preferences.getString("appVersion","");
223 225
      mSortMode = preferences.getInt("sortMode", MainSettingsPopup.SORT_DEFAULT);
226
      mSaveMode = preferences.getInt("saveMode", MainSettingsPopup.SAVE_DEFAULT);
224 227

  
225 228
      RubikObjectList.restorePreferences(this,preferences,justStarted);
226 229
      RubikScores scores = RubikScores.getInstance(this);
......
383 386
    public void onSettings(View v)
384 387
      {
385 388
      int sw = (int)(345*mDensity + 0.5f);
386
      int sh = (int)(188*mDensity + 0.5f);
389
      int sh = (int)(255*mDensity + 0.5f);
387 390

  
388 391
      int vw = v.getWidth();
389 392

  
390
      MainSettingsPopup popup = new MainSettingsPopup(this,mSortMode,mCurrentTheme,sw,sh);
393
      MainSettingsPopup popup = new MainSettingsPopup(this,mSortMode,mCurrentTheme,mSaveMode,sw,sh);
391 394
      popup.displayPopup(this,v,((vw-sw)/2),0);
392 395
      }
393 396

  
397
///////////////////////////////////////////////////////////////////////////////////////////////////
398

  
399
    public void changeSaveTo(int saveMode)
400
      {
401
      mSaveMode = saveMode;
402

  
403
      // TODO
404
      }
405

  
394 406
///////////////////////////////////////////////////////////////////////////////////////////////////
395 407

  
396 408
    public void onUpdates(View v)
src/main/java/org/distorted/main/MainSettingsPopup.java
36 36
  public static final int SORT_YEAR       = 4;
37 37

  
38 38
  public static final int SORT_DEFAULT    = SORT_SHAPE;
39
  public static final int SAVE_DEFAULT    = 2;  // ask
39 40

  
40 41
  private static final int[] mLocation = new int[2];
41 42

  
......
46 47
  private String[] mSortNames;
47 48
  private int mCurrTheme;
48 49
  private String[] mThemeNames;
50
  private int mCurrSave;
51
  private String[] mSaveNames;
49 52

  
50 53
///////////////////////////////////////////////////////////////////////////////////////////////////
51 54
// this is supposed to prevent showing the navigational bar when we show the drop down list,
......
83 86

  
84 87
///////////////////////////////////////////////////////////////////////////////////////////////////
85 88

  
86
  MainSettingsPopup(MainActivity act, int sortMethod, int themeValue, int popupWidth, int popupHeight)
89
  MainSettingsPopup(MainActivity act, int sortMethod, int themeValue, int saveValue, int popupWidth, int popupHeight)
87 90
    {
88 91
    mAct = new WeakReference<>(act);
89 92

  
......
110 113
    title.setBackground(new ColorDrawable(d));
111 114
    mPopup.setElevation(100);
112 115

  
116
    /////// SORT ////////////////////////////////////////////////////
113 117
    Spinner sortSpinner  = layout.findViewById(R.id.sortMethod);
114 118
    sortSpinner.setOnItemSelectedListener(this);
115 119

  
......
122 126

  
123 127
    if( sortMethod>=0 && sortMethod<mSortNames.length ) sortSpinner.setSelection(sortMethod);
124 128

  
129
    /////// THEME ///////////////////////////////////////////////////
125 130
    Spinner themeSpinner  = layout.findViewById(R.id.themeValue);
126 131
    themeSpinner.setOnItemSelectedListener(this);
127 132

  
......
133 138
    themeSpinner.setAdapter(themeAdapter);
134 139

  
135 140
    if( themeValue>=0 && themeValue<mThemeNames.length ) themeSpinner.setSelection(themeValue);
141

  
142
    /////// SAVE ////////////////////////////////////////////////////
143
    Spinner saveSpinner  = layout.findViewById(R.id.saveValue);
144
    saveSpinner.setOnItemSelectedListener(this);
145

  
146
    mCurrSave = saveValue;
147
    buildSaveOptions(act);
148

  
149
    ArrayAdapter<String> saveAdapter = new ArrayAdapter<>(act, R.layout.settings_spinner_item, mSaveNames);
150
    saveAdapter.setDropDownViewResource(R.layout.settings_spinner_item);
151
    saveSpinner.setAdapter(saveAdapter);
152

  
153
    if( saveValue>=0 && saveValue<mSaveNames.length ) saveSpinner.setSelection(saveValue);
136 154
    }
137 155

  
138 156
///////////////////////////////////////////////////////////////////////////////////////////////////
......
163 181
    mThemeNames[4] = res.getString(R.string.theme_orange);
164 182
    }
165 183

  
184
///////////////////////////////////////////////////////////////////////////////////////////////////
185

  
186
  private void buildSaveOptions(MainActivity act)
187
    {
188
    Resources res = act.getResources();
189
    mSaveNames = new String[3];
190

  
191
    mSaveNames[0] = res.getString(R.string.save_always);
192
    mSaveNames[1] = res.getString(R.string.save_never);
193
    mSaveNames[2] = res.getString(R.string.save_ask);
194
    }
195

  
166 196
///////////////////////////////////////////////////////////////////////////////////////////////////
167 197
// work around lame bugs in Android's version <= 10 pop-up and split-screen modes
168 198

  
......
231 261
      mAct = null;
232 262
      act.changeThemeTo(pos);
233 263
      }
264
    if( parent.getId()==R.id.saveValue && mCurrSave!=pos )
265
      {
266
      mPopup.dismiss();
267
      mCurrSave = pos;
268
      MainActivity act = mAct.get();
269
      act.changeSaveTo(pos);
270
      }
234 271
    }
235 272

  
236 273
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/res/layout/settings_popup.xml
17 17
   <GridLayout
18 18
        android:layout_width="match_parent"
19 19
        android:layout_height="wrap_content"
20
        android:rowCount="2"
20
        android:rowCount="3"
21 21
        android:columnCount="2">
22 22

  
23 23
        <TextView
......
64 64
            android:layout_marginBottom="10dp"
65 65
            android:popupBackground="?darkC"/>
66 66

  
67
        <TextView
68
            android:id="@+id/saveText"
69
            android:layout_marginStart="10dp"
70
            android:layout_marginEnd="15dp"
71
            android:layout_marginTop="10dp"
72
            android:layout_marginBottom="10dp"
73
            android:layout_width="wrap_content"
74
            android:layout_height="match_parent"
75
            android:text="@string/saves"
76
            android:textSize="24sp"
77
            android:gravity="start|center_vertical"/>
78

  
79
        <Spinner
80
            android:id="@+id/saveValue"
81
            android:layout_width="wrap_content"
82
            android:layout_height="match_parent"
83
            android:layout_marginStart="15dp"
84
            android:layout_marginEnd="10dp"
85
            android:layout_marginTop="10dp"
86
            android:layout_marginBottom="10dp"
87
            android:popupBackground="?darkC"/>
88

  
67 89
   </GridLayout>
68 90
</LinearLayout>
src/main/res/layout/settings_popup_android25.xml
66 66
            android:spinnerMode="dialog"
67 67
            android:gravity="start|center_vertical"/>
68 68

  
69
        <TextView
70
            android:id="@+id/saveText"
71
            android:layout_marginStart="10dp"
72
            android:layout_marginEnd="15dp"
73
            android:layout_marginTop="10dp"
74
            android:layout_marginBottom="10dp"
75
            android:layout_width="wrap_content"
76
            android:layout_height="match_parent"
77
            android:text="@string/saves"
78
            android:textSize="24sp"
79
            android:gravity="start|center_vertical"/>
80

  
81
        <Spinner
82
            android:id="@+id/saveValue"
83
            android:layout_width="wrap_content"
84
            android:layout_height="match_parent"
85
            android:layout_marginStart="15dp"
86
            android:layout_marginEnd="10dp"
87
            android:layout_marginTop="10dp"
88
            android:layout_marginBottom="10dp"
89
            android:spinnerMode="dialog"
90
            android:gravity="start|center_vertical"/>
91

  
69 92
   </GridLayout>
70 93
</LinearLayout>
src/main/res/values-de/strings.xml
60 60
    <string name="interrupt">Unterbrechen</string>
61 61
    <string name="sort_by">Ordnung</string>
62 62
    <string name="settings_title">Einstellungen</string>
63
    <string name="saves">Speichern</string>
64
    <string name="save_ask">Nachfragen</string>
65
    <string name="save_always">Immer</string>
66
    <string name="save_never">Nie</string>
63 67

  
64 68
    <string name="object_solver">Löser</string>
65 69
    <string name="object_pattern">Muster</string>
src/main/res/values-es/strings.xml
60 60
    <string name="interrupt">Interrumpirlo</string>
61 61
    <string name="sort_by">Ordenar</string>
62 62
    <string name="settings_title">Ajustes</string>
63
    <string name="saves">Guardar</string>
64
    <string name="save_ask">Preguntar</string>
65
    <string name="save_always">Siempre</string>
66
    <string name="save_never">Nunca</string>
63 67

  
64 68
    <string name="object_solver">Solucionador</string>
65 69
    <string name="object_pattern">Patrones</string>
src/main/res/values-fr/strings.xml
59 59
    <string name="interrupt">Interrompre</string>
60 60
    <string name="sort_by">Trier par</string>
61 61
    <string name="settings_title">Paramètres</string>
62
    <string name="saves">Enreg.</string>
63
    <string name="save_ask">Demander</string>
64
    <string name="save_always">Toujours</string>
65
    <string name="save_never">Jamais</string>
62 66

  
63 67
    <string name="object_solver">Solveur</string>
64 68
    <string name="object_pattern">Motifs</string>
src/main/res/values-ja/strings.xml
60 60
    <string name="interrupt">割り込み</string>
61 61
    <string name="sort_by">並べ替え</string>
62 62
    <string name="settings_title">設定</string>
63
    <string name="saves">保存</string>
64
    <string name="save_ask">確認する</string>
65
    <string name="save_always">常に</string>
66
    <string name="save_never">しない</string>
63 67

  
64 68
    <string name="object_solver">ソルバー</string>
65 69
    <string name="object_pattern">パターン</string>
src/main/res/values-ko/strings.xml
60 60
    <string name="interrupt">방해하다</string>
61 61
    <string name="sort_by">정렬 기준</string>
62 62
    <string name="settings_title">설정</string>
63
    <string name="saves">저장</string>
64
    <string name="save_ask">매번 묻기</string>
65
    <string name="save_always">항상</string>
66
    <string name="save_never">절대 안 함</string>
63 67

  
64 68
    <string name="object_solver">솔버</string>
65 69
    <string name="object_pattern">패턴</string>
src/main/res/values-pl/strings.xml
60 60
    <string name="interrupt">Przerwij</string>
61 61
    <string name="sort_by">Sortuj po</string>
62 62
    <string name="settings_title">Ustawienia</string>
63
    <string name="saves">Zapisz</string>
64
    <string name="save_ask">Pytaj</string>
65
    <string name="save_always">Zawsze</string>
66
    <string name="save_never">Nigdy</string>
63 67

  
64 68
    <string name="object_solver">Rozwiązywacz</string>
65 69
    <string name="object_pattern">Wzory</string>
src/main/res/values-ru/strings.xml
60 60
    <string name="interrupt">Прерви</string>
61 61
    <string name="sort_by">Группа по</string>
62 62
    <string name="settings_title">Настройки</string>
63
    <string name="saves">Сохранить</string>
64
    <string name="save_ask">Спрашивать</string>
65
    <string name="save_always">Всегда</string>
66
    <string name="save_never">Никогда</string>
63 67

  
64 68
    <string name="object_solver">Решатель</string>
65 69
    <string name="object_pattern">Узоры</string>
src/main/res/values-zh-rCN/strings.xml
59 59
    <string name="interrupt">打断</string>
60 60
    <string name="sort_by">排序方式</string>
61 61
    <string name="settings_title">设置</string>
62
    <string name="saves">保存</string>
63
    <string name="save_ask">询问</string>
64
    <string name="save_always">始终</string>
65
    <string name="save_never">从不</string>
62 66

  
63 67
    <string name="object_solver">求解器</string>
64 68
    <string name="object_pattern">图案</string>
src/main/res/values-zh-rTW/strings.xml
59 59
    <string name="interrupt">打斷</string>
60 60
    <string name="sort_by">排序方式</string>
61 61
    <string name="settings_title">設定</string>
62
    <string name="saves">儲存</string>
63
    <string name="save_ask">詢問</string>
64
    <string name="save_always">總是</string>
65
    <string name="save_never">從不</string>
62 66

  
63 67
    <string name="object_solver">求解器</string>
64 68
    <string name="object_pattern">圖案</string>
src/main/res/values/strings.xml
64 64
    <string name="resume">Resume</string>
65 65
    <string name="old_solve">Old Solve</string>
66 66
    <string name="new_solve">New Solve</string>
67
    <string name="saves">Save</string>
68
    <string name="save_ask">Ask</string>
69
    <string name="save_always">Always</string>
70
    <string name="save_never">Never</string>
67 71

  
68 72
    <string name="stars">Stars</string>
69 73
    <string name="scores">High Scores</string>

Also available in: Unified diff