Skip to content

Commit 097e4ec

Browse files
committed
Unify list editing to one button, Icons for main
Part of #42 Signed-off-by: Aron Heinecke <aron.heinecke@t-online.de>
1 parent bcc9531 commit 097e4ec

File tree

9 files changed

+81
-102
lines changed

9 files changed

+81
-102
lines changed

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/activity/ListActivity.java

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,18 @@ public class ListActivity extends FragmentActivity implements ListPickerFragment
3131
*/
3232
public static final String RETURN_LISTS = "selected";
3333
/**
34-
* Pass this flag as true to call this as an deletion activity
34+
* Pass this flag as true to call this with creation & deletion capabilities
3535
*/
36-
public static final String PARAM_DELETE_FLAG = "delete";
36+
public static final String PARAM_FULL_FEATURESET = "full_features";
3737
/**
3838
* Optional Param key for already selected lists, available when multiselect is set<br>
3939
* Expects a {@link List} of {@link VList}<br>
4040
* This can be null, if nothing is selected
4141
*/
4242
public static final String PARAM_SELECTED = "selected";
43-
/**
44-
* Param, if set runs in editor mode, calling EditorActivity & not returning
45-
*/
46-
public static final String PARAM_RUN_EDITOR = "editorMode";
4743
private boolean multiselect;
44+
private boolean fullFeatures;
4845
ListPickerFragment listPickerFragment;
49-
private boolean editorMode;
5046

5147
@Override
5248
protected void onCreate(Bundle savedInstanceState) {
@@ -63,14 +59,14 @@ protected void onCreate(Bundle savedInstanceState) {
6359
Intent intent = getIntent();
6460
// handle passed params
6561
multiselect = intent.getBooleanExtra(PARAM_MULTI_SELECT, false);
66-
boolean delete = intent.getBooleanExtra(PARAM_DELETE_FLAG, false);
67-
editorMode = intent.getBooleanExtra(PARAM_RUN_EDITOR,false);
68-
if(editorMode){
69-
multiselect = false;
70-
delete = false;
71-
ab.setTitle(R.string.ListSelector_Title_Edit);
62+
fullFeatures = intent.getBooleanExtra(PARAM_FULL_FEATURESET, false);
63+
if(fullFeatures){
64+
ab.setTitle(R.string.Lists_Title);
65+
} else {
66+
ab.setTitle(R.string.List_Select_Title);
7267
}
7368

69+
7470
ArrayList<VList> preselected;
7571
if (intent.hasExtra(PARAM_SELECTED)) {
7672
preselected = intent.getParcelableArrayListExtra(PARAM_SELECTED);
@@ -82,7 +78,7 @@ protected void onCreate(Bundle savedInstanceState) {
8278
//Restore the fragment's instance
8379
listPickerFragment = (ListPickerFragment) getSupportFragmentManager().getFragment(savedInstanceState, ListPickerFragment.TAG);
8480
} else {
85-
listPickerFragment = ListPickerFragment.newInstance(multiselect, delete,preselected,true);
81+
listPickerFragment = ListPickerFragment.newInstance(multiselect, !fullFeatures,preselected);
8682
}
8783

8884
setFragment(listPickerFragment);
@@ -103,7 +99,7 @@ public boolean onSupportNavigateUp() {
10399

104100
@Override
105101
public void onBackPressed() {
106-
if(editorMode) {
102+
if(fullFeatures) {
107103
super.onBackPressed();
108104
} else {
109105
Intent returnIntent = new Intent();
@@ -115,7 +111,7 @@ public void onBackPressed() {
115111

116112
@Override
117113
public void selectionUpdate(ArrayList<VList> selected) {
118-
if(editorMode) {
114+
if(fullFeatures) {
119115
ListPickerViewModel listPickerViewModel = ViewModelProviders.of(this).get(ListPickerViewModel.class);
120116
listPickerViewModel.setDataInvalidated(); // editor changed entry
121117

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/activity/MainActivity.java

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -100,25 +100,14 @@ public void continueSession(View view) {
100100
this.startActivity(myIntent);
101101
}
102102

103-
/**
104-
* Open new table intent
105-
*
106-
* @param view
107-
*/
108-
public void showNewTable(View view) {
109-
Intent myIntent = new Intent(this, EditorActivity.class);
110-
myIntent.putExtra(EditorActivity.PARAM_NEW_TABLE, true);
111-
this.startActivity(myIntent);
112-
}
113-
114103
/**
115104
* Open edit table intent
116105
*
117106
* @param view
118107
*/
119108
public void showEditTable(View view) {
120109
Intent myIntent = new Intent(this, ListActivity.class);
121-
myIntent.putExtra(ListActivity.PARAM_RUN_EDITOR, true);
110+
myIntent.putExtra(ListActivity.PARAM_FULL_FEATURESET, true);
122111
this.startActivity(myIntent);
123112
}
124113

@@ -132,17 +121,6 @@ public void showTrainer(View view) {
132121
this.startActivity(myIntent);
133122
}
134123

135-
/**
136-
* Open list delete
137-
*
138-
* @param view
139-
*/
140-
public void showDeleteTable(View view) {
141-
Intent myIntent = new Intent(this, ListActivity.class);
142-
myIntent.putExtra(ListActivity.PARAM_DELETE_FLAG, true);
143-
this.startActivity(myIntent);
144-
}
145-
146124
/**
147125
* Open about activity
148126
*

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/activity/TrainerSettingsActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ private void initViewPager(Bundle savedInstanceState){
6666
if (savedInstanceState != null) {
6767
listPicker = (ListPickerFragment) getSupportFragmentManager().getFragment(savedInstanceState, ListPickerFragment.TAG);
6868
} else {
69-
listPicker = ListPickerFragment.newInstance(true, false, null, false);
69+
listPicker = ListPickerFragment.newInstance(true, true, null);
7070
}
7171
viewPagerAdapter.addFragment(listPicker,R.string.TSettings_Tab_List);
7272
TrainerSettingsFragment settingsFragment = TrainerSettingsFragment.newInstance();

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/fragment/ImportFragment.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -488,8 +488,7 @@ public void selectList() {
488488
}
489489
Intent myIntent = new Intent(getActivity(), ListActivity.class);
490490
myIntent.putExtra(ListActivity.PARAM_MULTI_SELECT, false);
491-
myIntent.putExtra(ListActivity.PARAM_DELETE_FLAG, false);
492-
myIntent.putExtra(ListActivity.PARAM_RUN_EDITOR,false);
491+
myIntent.putExtra(ListActivity.PARAM_FULL_FEATURESET,false);
493492
myIntent.putExtra(ListActivity.PARAM_SELECTED, targetList);
494493
startActivityForResult(myIntent, REQUEST_LIST_SELECT_CODE);
495494
}

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/fragment/ListPickerFragment.java

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import android.arch.lifecycle.ViewModelProviders;
44
import android.content.Context;
5+
import android.content.Intent;
56
import android.content.SharedPreferences;
67
import android.os.Bundle;
78
import android.support.annotation.NonNull;
89
import android.support.annotation.Nullable;
10+
import android.support.design.widget.FloatingActionButton;
911
import android.support.design.widget.Snackbar;
1012
import android.support.v7.app.ActionBar;
1113
import android.support.v7.widget.DividerItemDecoration;
@@ -19,10 +21,12 @@
1921
import android.view.MenuItem;
2022
import android.view.View;
2123
import android.view.ViewGroup;
24+
import android.widget.Button;
2225

2326
import java.util.ArrayList;
2427

2528
import vocabletrainer.heinecke.aron.vocabletrainer.R;
29+
import vocabletrainer.heinecke.aron.vocabletrainer.activity.EditorActivity;
2630
import vocabletrainer.heinecke.aron.vocabletrainer.dialog.ItemPickerDialog;
2731
import vocabletrainer.heinecke.aron.vocabletrainer.lib.Adapter.ListRecyclerAdapter;
2832
import vocabletrainer.heinecke.aron.vocabletrainer.lib.Adapter.ListTouchHelper;
@@ -45,17 +49,17 @@ public class ListPickerFragment extends PagerFragment implements ListRecyclerAda
4549
public static final String TAG = "ListPickerFragment";
4650
private static final String P_KEY_LA_SORT = "LA_sorting";
4751
private static final String P_KEY_SORTING_DIALOG = "sorting_dialog_list";
48-
private static final String K_MULTISELECT = "multiSelect";
49-
private static final String K_SHOWOK = "showok";
5052
private static final String K_PRESELECT = "preselect";
51-
private static final String K_DELETE = "delete";
53+
private static final String K_MULTISELECT = "multiSelect";
54+
private static final String K_SELECT_ONLY = "select_only";
55+
private static final int CODE_NEW_LIST = 1001;
5256

5357
private View view;
5458
private boolean multiSelect;
5559
private boolean showOkButton;
5660
private RecyclerView recyclerView;
5761
private ListRecyclerAdapter adapter;
58-
private boolean delete;
62+
private boolean selectOnly;
5963
private int sort_type;
6064
private GenTableComparator compName;
6165
private GenTableComparator compA;
@@ -64,6 +68,7 @@ public class ListPickerFragment extends PagerFragment implements ListRecyclerAda
6468
private FinishListener listener;
6569
private ListPickerViewModel listPickerViewModel;
6670
private ItemPickerDialog sortingDialog;
71+
private FloatingActionButton bNewList;
6772

6873
@Override
6974
protected void onFragmentInvisible() {
@@ -141,20 +146,17 @@ public interface FinishListener {
141146
/**
142147
* Create new ListPickerFragment instance
143148
* @param multiSelect Multi select enabled
144-
* @param delete Delete mode
149+
* @param selectOnly Whether only selection is allowed, no delete / creation
145150
* @param selected List of pre-selected VList
146-
* @param showOkButton True for ok-submit button
147151
* @return ListPickerFragment
148152
*/
149153
@NonNull
150-
public static ListPickerFragment newInstance(final boolean multiSelect, final boolean delete,
151-
final ArrayList<VList> selected,
152-
final boolean showOkButton){
154+
public static ListPickerFragment newInstance(final boolean multiSelect, final boolean selectOnly,
155+
final ArrayList<VList> selected){
153156
ListPickerFragment lpf = new ListPickerFragment();
154157
Bundle args = new Bundle();
155-
args.putBoolean(K_DELETE, delete);
158+
args.putBoolean(K_SELECT_ONLY, selectOnly);
156159
args.putBoolean(K_MULTISELECT, multiSelect);
157-
args.putBoolean(K_SHOWOK, showOkButton);
158160
args.putParcelableArrayList(K_PRESELECT, selected);
159161
lpf.setArguments(args);
160162
return lpf;
@@ -207,6 +209,15 @@ public void onResume() {
207209
}
208210
}
209211

212+
@Override
213+
public void onActivityResult(int requestCode, int resultCode, Intent data) {
214+
if(requestCode == CODE_NEW_LIST){
215+
listPickerViewModel.loadLists(getContext());
216+
} else {
217+
super.onActivityResult(requestCode, resultCode, data);
218+
}
219+
}
220+
210221
@Override
211222
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
212223
Log.d(TAG, "onCreateView "+(savedInstanceState != null));
@@ -220,8 +231,18 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
220231
}
221232
// default values required for {@link ExImportActivity.ViewPagerAdapter.class} solution, using no arguments
222233
multiSelect = bundle.getBoolean(K_MULTISELECT,true);
223-
showOkButton = bundle.getBoolean(K_SHOWOK,false);
224-
delete = bundle.getBoolean(K_DELETE,false);
234+
selectOnly = bundle.getBoolean(K_SELECT_ONLY,false);
235+
236+
bNewList = view.findViewById(R.id.bListNew);
237+
bNewList.setVisibility(selectOnly ? View.GONE : View.VISIBLE);
238+
bNewList.setOnClickListener(new View.OnClickListener() {
239+
@Override
240+
public void onClick(View v) {
241+
Intent myIntent = new Intent(getActivity(), EditorActivity.class);
242+
myIntent.putExtra(EditorActivity.PARAM_NEW_TABLE, true);
243+
startActivityForResult(myIntent,CODE_NEW_LIST);
244+
}
245+
});
225246

226247
ActionBar ab = getACActivity().getSupportActionBar();
227248
if (ab != null) {
@@ -307,9 +328,8 @@ private void updateComp() {
307328
public void onSaveInstanceState(@NonNull Bundle outState) {
308329
super.onSaveInstanceState(outState);
309330
Log.d(TAG,"onSaveInstanceState");
310-
outState.putBoolean(K_SHOWOK,showOkButton);
311331
outState.putBoolean(K_MULTISELECT, multiSelect);
312-
outState.putBoolean(K_DELETE, delete);
332+
outState.putBoolean(K_SELECT_ONLY, selectOnly);
313333
if(sortingDialog != null && sortingDialog.isAdded()){
314334
getACActivity().getSupportFragmentManager().putFragment(outState, P_KEY_SORTING_DIALOG, sortingDialog);
315335
}
@@ -335,20 +355,20 @@ private void initRecyclerView() {
335355
// }
336356
ArrayList<VList> lists = new ArrayList<>();
337357
adapter = new ListRecyclerAdapter(lists, multiSelect, getContext());
338-
if (!delete){
339-
adapter.setItemClickListener(this);
340-
}
358+
adapter.setItemClickListener(this);
359+
bNewList.setEnabled(!selectOnly);
360+
341361
LinearLayoutManager manager = new LinearLayoutManager(getActivity());
342362
recyclerView.setLayoutManager(manager);
343363

344364
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));
345365
recyclerView.setAdapter(adapter);
346366

347-
if(delete) {
367+
if(!selectOnly) {
348368
ListTouchHelper touchHelper = new ListTouchHelper(this);
349369
new ItemTouchHelper(touchHelper).attachToRecyclerView(recyclerView);
350370

351-
getACActivity().getSupportActionBar().setTitle(R.string.ListSelector_Title_Delete);
371+
getACActivity().getSupportActionBar().setTitle(R.string.Lists_Title);
352372
}
353373
}
354374

app/src/main/res/layout/activity_main.xml

Lines changed: 7 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -44,48 +44,19 @@
4444

4545
<Button
4646
android:id="@+id/bEditTable"
47+
style="@style/Widget.AppCompat.Button.Colored"
4748
android:layout_width="0dp"
4849
android:layout_height="wrap_content"
4950
android:layout_marginLeft="8dp"
50-
android:layout_marginRight="8dp"
5151
android:layout_marginTop="8dp"
52+
android:layout_marginRight="8dp"
53+
android:drawableStart="@drawable/ic_edit_white_24dp"
5254
android:onClick="showEditTable"
5355
android:text="@string/Main_btn_Edit_List"
54-
android:drawableStart="@drawable/ic_edit_white_24dp"
55-
style="@style/Widget.AppCompat.Button.Colored"
56-
app:layout_constraintLeft_toLeftOf="parent"
57-
app:layout_constraintRight_toRightOf="parent"
58-
app:layout_constraintTop_toBottomOf="@+id/bNewTable" />
59-
60-
<Button
61-
android:id="@+id/bNewTable"
62-
android:layout_width="0dp"
63-
android:layout_height="wrap_content"
64-
android:layout_marginLeft="8dp"
65-
android:layout_marginRight="8dp"
66-
android:layout_marginTop="8dp"
67-
android:onClick="showNewTable"
68-
android:text="@string/Main_btn_New_List"
69-
style="@style/Widget.AppCompat.Button.Colored"
7056
app:layout_constraintLeft_toLeftOf="parent"
7157
app:layout_constraintRight_toRightOf="parent"
7258
app:layout_constraintTop_toBottomOf="@+id/bTrainerEnter" />
7359

74-
<Button
75-
android:id="@+id/bDeleteTable"
76-
android:layout_width="0dp"
77-
android:layout_height="wrap_content"
78-
android:layout_marginLeft="8dp"
79-
android:layout_marginRight="8dp"
80-
android:layout_marginTop="8dp"
81-
android:onClick="showDeleteTable"
82-
android:text="@string/Main_btn_Delete_List"
83-
style="@style/Widget.AppCompat.Button.Colored"
84-
app:layout_constraintHorizontal_bias="0.0"
85-
app:layout_constraintLeft_toLeftOf="parent"
86-
app:layout_constraintRight_toRightOf="parent"
87-
app:layout_constraintTop_toBottomOf="@+id/bEditTable" />
88-
8960
<Button
9061
android:id="@+id/button"
9162
android:layout_width="0dp"
@@ -103,18 +74,18 @@
10374

10475
<Button
10576
android:id="@+id/bExport"
77+
style="@style/Widget.AppCompat.Button.Colored"
10678
android:layout_width="0dp"
10779
android:layout_height="wrap_content"
10880
android:layout_marginLeft="8dp"
109-
android:layout_marginRight="8dp"
11081
android:layout_marginTop="8dp"
82+
android:layout_marginRight="8dp"
83+
android:drawableStart="@drawable/ic_file_upload_white_24dp"
11184
android:onClick="showExport"
11285
android:text="@string/Main_btn_Export"
113-
android:drawableStart="@drawable/ic_file_upload_white_24dp"
114-
style="@style/Widget.AppCompat.Button.Colored"
11586
app:layout_constraintLeft_toLeftOf="parent"
11687
app:layout_constraintRight_toRightOf="parent"
117-
app:layout_constraintTop_toBottomOf="@+id/bDeleteTable" />
88+
app:layout_constraintTop_toBottomOf="@+id/bEditTable" />
11889

11990
<Button
12091
android:layout_width="0dp"

app/src/main/res/layout/fragment_list_selector.xml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,28 @@
66
android:layout_height="match_parent"
77
tools:context="vocabletrainer.heinecke.aron.vocabletrainer.fragment.ListPickerFragment">
88

9+
<android.support.design.widget.FloatingActionButton
10+
android:id="@+id/bListNew"
11+
android:layout_width="wrap_content"
12+
android:layout_height="wrap_content"
13+
android:layout_marginEnd="24dp"
14+
android:layout_marginBottom="24dp"
15+
android:clickable="true"
16+
android:focusable="true"
17+
app:fabSize="normal"
18+
app:layout_constraintBottom_toBottomOf="parent"
19+
app:layout_constraintEnd_toEndOf="parent"
20+
app:srcCompat="@drawable/ic_add_white_24dp" />
21+
922
<android.support.v7.widget.RecyclerView
1023
android:id="@+id/listViewRecyclerView"
1124
android:layout_width="0dp"
1225
android:layout_height="0dp"
1326
app:layout_constraintBottom_toBottomOf="parent"
1427
app:layout_constraintEnd_toEndOf="parent"
1528
app:layout_constraintStart_toStartOf="parent"
16-
app:layout_constraintTop_toTopOf="parent" />
29+
app:layout_constraintTop_toTopOf="parent">
30+
31+
</android.support.v7.widget.RecyclerView>
1732

1833
</android.support.constraint.ConstraintLayout>

0 commit comments

Comments
 (0)