19
19
import java .util .ArrayList ;
20
20
21
21
import vocabletrainer .heinecke .aron .vocabletrainer .R ;
22
+ import vocabletrainer .heinecke .aron .vocabletrainer .dialog .ItemPickerDialog ;
22
23
import vocabletrainer .heinecke .aron .vocabletrainer .dialog .VEntryEditorDialog ;
23
24
import vocabletrainer .heinecke .aron .vocabletrainer .dialog .VListEditorDialog ;
24
25
import vocabletrainer .heinecke .aron .vocabletrainer .lib .Adapter .EntryListAdapter ;
36
37
/**
37
38
* List editor activity
38
39
*/
39
- public class EditorActivity extends AppCompatActivity implements VEntryEditorDialog .EditorDialogDataProvider , VListEditorDialog .ListEditorDataProvider {
40
+ public class EditorActivity extends AppCompatActivity implements VEntryEditorDialog .EditorDialogDataProvider , VListEditorDialog .ListEditorDataProvider , ItemPickerDialog . ItemPickerHandler {
40
41
/**
41
42
* Param key for new list, default is false
42
43
*/
@@ -47,24 +48,22 @@ public class EditorActivity extends AppCompatActivity implements VEntryEditorDia
47
48
public static final String PARAM_TABLE = "list" ;
48
49
public static final String TAG = "EditorActivity" ;
49
50
private static final String P_KEY_EA_SORT = "EA_sorting" ;
51
+ private static final String P_KEY_SORTING_DIALOG = "sorting_dialog_editor" ;
50
52
private static final String KEY_EDITOR_POSITION = "editorPosition" ;
51
53
private static final String KEY_EDITOR_ENTRY = "editorEntry" ;
52
54
private VList list ;
53
55
private ArrayList <VEntry > entries ;
54
56
private EntryListAdapter adapter ;
55
57
private ListView listView ;
56
58
private Database db ;
57
- private VEntry lastDeleted ;
58
- private int deletedPosition ;
59
59
private int sortSetting ;
60
60
private GenEntryComparator cComp ;
61
61
private GenEntryComparator compA ;
62
62
private GenEntryComparator compB ;
63
63
private GenEntryComparator compTip ;
64
- private MenuItem mSort_ColA ;
65
- private MenuItem mSort_ColB ;
66
- VEntryEditorDialog editorDialog ;
67
- VListEditorDialog listEditorDialog ;
64
+ private ItemPickerDialog sortingDialog ;
65
+ private VEntryEditorDialog editorDialog ;
66
+ private VListEditorDialog listEditorDialog ;
68
67
69
68
// current edit
70
69
private int editPosition = MIN_ID_TRESHOLD -1 ; // store position for viewport change, shared object
@@ -108,7 +107,7 @@ protected void onCreate(Bundle savedInstanceState) {
108
107
109
108
110
109
SharedPreferences settings = getSharedPreferences (PREFS_NAME , 0 );
111
- sortSetting = settings .getInt (P_KEY_EA_SORT , R . id . eMenu_sort_A );
110
+ sortSetting = settings .getInt (P_KEY_EA_SORT , 0 );
112
111
updateComp ();
113
112
114
113
// handle passed params
@@ -152,11 +151,24 @@ protected void onCreate(Bundle savedInstanceState) {
152
151
editorEntry = savedInstanceState .getParcelable (KEY_EDITOR_ENTRY );
153
152
setEditorDialogActions ();
154
153
}
154
+ sortingDialog = (ItemPickerDialog ) getSupportFragmentManager ().getFragment (savedInstanceState ,P_KEY_SORTING_DIALOG );
155
+ if (sortingDialog != null ) {
156
+ setSortingDialogParams ();
157
+ }
155
158
}
156
159
157
160
this .setTitle (list .getName ());
158
161
}
159
162
163
+ /**
164
+ * Set handlers & overrides for sortingDialog
165
+ */
166
+ private void setSortingDialogParams (){
167
+ sortingDialog .setItemPickerHandler (this );
168
+ sortingDialog .overrideEntry (0 ,list .getNameA ());
169
+ sortingDialog .overrideEntry (1 ,list .getNameB ());
170
+ }
171
+
160
172
/**
161
173
* Clear current edit state
162
174
*/
@@ -169,8 +181,6 @@ private void clearEdit() {
169
181
* Handles list column name changes
170
182
*/
171
183
private void updateColumnNames (){
172
- mSort_ColB .setTitle (list .getNameB ());
173
- mSort_ColA .setTitle (list .getNameA ());
174
184
adapter .setTableData (list );
175
185
}
176
186
@@ -179,18 +189,18 @@ private void updateColumnNames(){
179
189
*/
180
190
private void updateComp (){
181
191
switch (sortSetting ){
182
- case R . id . eMenu_sort_A :
192
+ case 0 :
183
193
cComp = compA ;
184
194
break ;
185
- case R . id . eMenu_sort_B :
195
+ case 1 :
186
196
cComp = compB ;
187
197
break ;
188
- case R . id . eMenu_sort_Tip :
198
+ case 2 :
189
199
cComp = compTip ;
190
200
break ;
191
201
default :
192
202
cComp = compA ;
193
- sortSetting = R . id . eMenu_sort_A ;
203
+ sortSetting = 0 ;
194
204
break ;
195
205
}
196
206
adapter .updateSorting (cComp );
@@ -199,8 +209,6 @@ private void updateComp(){
199
209
@ Override
200
210
public boolean onCreateOptionsMenu (Menu menu ) {
201
211
getMenuInflater ().inflate (R .menu .editor , menu );
202
- mSort_ColA = menu .findItem (R .id .eMenu_sort_A );
203
- mSort_ColB = menu .findItem (R .id .eMenu_sort_B );
204
212
updateColumnNames ();
205
213
return true ;
206
214
}
@@ -214,11 +222,10 @@ public boolean onOptionsItemSelected(MenuItem item) {
214
222
case R .id .tEditorListEdit :
215
223
showTableInfoDialog ();
216
224
return true ;
217
- case R .id .eMenu_sort_A :
218
- case R .id .eMenu_sort_B :
219
- case R .id .eMenu_sort_Tip :
220
- sortSetting = item .getItemId ();
221
- updateComp ();
225
+ case R .id .eMenu_sort :
226
+ sortingDialog = ItemPickerDialog .newInstance (R .array .sort_entries ,R .string .GEN_Sort );
227
+ setSortingDialogParams ();
228
+ sortingDialog .show (getSupportFragmentManager (),P_KEY_SORTING_DIALOG );
222
229
return true ;
223
230
}
224
231
@@ -417,6 +424,8 @@ protected void onSaveInstanceState(Bundle outState) {
417
424
outState .putBoolean (PARAM_NEW_TABLE ,true );
418
425
outState .putParcelable (PARAM_TABLE ,list );
419
426
}
427
+ if (sortingDialog != null && sortingDialog .isAdded ())
428
+ getSupportFragmentManager ().putFragment (outState ,P_KEY_SORTING_DIALOG ,sortingDialog );
420
429
}
421
430
422
431
@ Override
@@ -439,4 +448,10 @@ public VEntry getEditVEntry() {
439
448
public VList getList () {
440
449
return list ;
441
450
}
451
+
452
+ @ Override
453
+ public void onItemPickerSelected (int position ) {
454
+ sortSetting = position ;
455
+ updateComp ();
456
+ }
442
457
}
0 commit comments