diff --git a/app/src/main/java/com/keepassdroid/activities/GroupActivity.java b/app/src/main/java/com/keepassdroid/activities/GroupActivity.java index 59d257cd0..9369a3341 100644 --- a/app/src/main/java/com/keepassdroid/activities/GroupActivity.java +++ b/app/src/main/java/com/keepassdroid/activities/GroupActivity.java @@ -45,6 +45,7 @@ import com.keepassdroid.database.PwEntry; import com.keepassdroid.database.PwGroup; import com.keepassdroid.database.PwGroupId; import com.keepassdroid.database.PwNode; +import com.keepassdroid.database.SortNodeEnum; import com.keepassdroid.database.edit.AddGroup; import com.keepassdroid.database.edit.DeleteEntry; import com.keepassdroid.database.edit.DeleteGroup; @@ -207,7 +208,15 @@ public class GroupActivity extends ListNodesActivity } } - protected void setGroupIcon() { + @Override + public void onSortSelected(SortNodeEnum sortNodeEnum, boolean ascending, boolean groupsBefore, boolean recycleBinBottom) { + super.onSortSelected(sortNodeEnum, ascending, groupsBefore, recycleBinBottom); + + // Show button if hide after sort + rootView.showButton(); + } + + protected void setGroupIcon() { if (mCurrentGroup != null) { ImageView iv = (ImageView) findViewById(R.id.icon); App.getDB().drawFactory.assignDrawableTo(iv, getResources(), mCurrentGroup.getIcon()); diff --git a/app/src/main/java/com/keepassdroid/activities/ListNodesActivity.java b/app/src/main/java/com/keepassdroid/activities/ListNodesActivity.java index 43da5c177..aba4a5785 100644 --- a/app/src/main/java/com/keepassdroid/activities/ListNodesActivity.java +++ b/app/src/main/java/com/keepassdroid/activities/ListNodesActivity.java @@ -147,7 +147,7 @@ public abstract class ListNodesActivity extends LockCloseListActivity } @Override - public void onSortSelected(SortNodeEnum sortNodeEnum, boolean ascending, boolean groupsBefore) { + public void onSortSelected(SortNodeEnum sortNodeEnum, boolean ascending, boolean groupsBefore, boolean recycleBinBottom) { // Toggle setting Editor editor = prefs.edit(); editor.putString(getString(R.string.sort_node_key), sortNodeEnum.name()); diff --git a/app/src/main/java/com/keepassdroid/fragments/SortDialogFragment.java b/app/src/main/java/com/keepassdroid/fragments/SortDialogFragment.java index 353939db9..cdade3a23 100644 --- a/app/src/main/java/com/keepassdroid/fragments/SortDialogFragment.java +++ b/app/src/main/java/com/keepassdroid/fragments/SortDialogFragment.java @@ -40,6 +40,7 @@ public class SortDialogFragment extends DialogFragment { private static final String SORT_NODE_ENUM_BUNDLE_KEY = "SORT_NODE_ENUM_BUNDLE_KEY"; private static final String SORT_ASCENDING_BUNDLE_KEY = "SORT_ASCENDING_BUNDLE_KEY"; private static final String SORT_GROUPS_BEFORE_BUNDLE_KEY = "SORT_GROUPS_BEFORE_BUNDLE_KEY"; + private static final String SORT_RECYCLE_BIN_BOTTOM_BUNDLE_KEY = "SORT_RECYCLE_BIN_BOTTOM_BUNDLE_KEY"; private SortSelectionListener mListener; @@ -48,12 +49,33 @@ public class SortDialogFragment extends DialogFragment { int mCheckedId; private boolean mGroupsBefore; private boolean mAscending; + private boolean mRecycleBinBottom; - public static SortDialogFragment getInstance(SortNodeEnum sortNodeEnum, boolean ascending, boolean groupsBefore) { + private static Bundle buildBundle(SortNodeEnum sortNodeEnum, + boolean ascending, + boolean groupsBefore) { Bundle bundle = new Bundle(); bundle.putString(SORT_NODE_ENUM_BUNDLE_KEY, sortNodeEnum.name()); bundle.putBoolean(SORT_ASCENDING_BUNDLE_KEY, ascending); bundle.putBoolean(SORT_GROUPS_BEFORE_BUNDLE_KEY, groupsBefore); + return bundle; + } + + public static SortDialogFragment getInstance(SortNodeEnum sortNodeEnum, + boolean ascending, + boolean groupsBefore) { + Bundle bundle = buildBundle(sortNodeEnum, ascending, groupsBefore); + SortDialogFragment fragment = new SortDialogFragment(); + fragment.setArguments(bundle); + return fragment; + } + + public static SortDialogFragment getInstance(SortNodeEnum sortNodeEnum, + boolean ascending, + boolean groupsBefore, + boolean recycleBinBottom) { + Bundle bundle = buildBundle(sortNodeEnum, ascending, groupsBefore); + bundle.putBoolean(SORT_RECYCLE_BIN_BOTTOM_BUNDLE_KEY, recycleBinBottom); SortDialogFragment fragment = new SortDialogFragment(); fragment.setArguments(bundle); return fragment; @@ -79,14 +101,20 @@ public class SortDialogFragment extends DialogFragment { sortNodeEnum = SortNodeEnum.TITLE; mAscending = true; mGroupsBefore = true; + boolean recycleBinAllowed = false; + mRecycleBinBottom = true; - if (getArguments() != null - && getArguments().containsKey(SORT_NODE_ENUM_BUNDLE_KEY) - && getArguments().containsKey(SORT_ASCENDING_BUNDLE_KEY) - && getArguments().containsKey(SORT_GROUPS_BEFORE_BUNDLE_KEY)) { - sortNodeEnum = SortNodeEnum.valueOf(getArguments().getString(SORT_NODE_ENUM_BUNDLE_KEY)); - mAscending = getArguments().getBoolean(SORT_ASCENDING_BUNDLE_KEY); - mGroupsBefore = getArguments().getBoolean(SORT_GROUPS_BEFORE_BUNDLE_KEY); + if (getArguments() != null) { + if (getArguments().containsKey(SORT_NODE_ENUM_BUNDLE_KEY)) + sortNodeEnum = SortNodeEnum.valueOf(getArguments().getString(SORT_NODE_ENUM_BUNDLE_KEY)); + if (getArguments().containsKey(SORT_ASCENDING_BUNDLE_KEY)) + mAscending = getArguments().getBoolean(SORT_ASCENDING_BUNDLE_KEY); + if (getArguments().containsKey(SORT_GROUPS_BEFORE_BUNDLE_KEY)) + mGroupsBefore = getArguments().getBoolean(SORT_GROUPS_BEFORE_BUNDLE_KEY); + if (getArguments().containsKey(SORT_RECYCLE_BIN_BOTTOM_BUNDLE_KEY)) { + recycleBinAllowed = true; + mRecycleBinBottom = getArguments().getBoolean(SORT_RECYCLE_BIN_BOTTOM_BUNDLE_KEY); + } } mCheckedId = retrieveViewFromEnum(sortNodeEnum); @@ -98,7 +126,7 @@ public class SortDialogFragment extends DialogFragment { .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { - mListener.onSortSelected(sortNodeEnum, mAscending, mGroupsBefore); + mListener.onSortSelected(sortNodeEnum, mAscending, mGroupsBefore, mRecycleBinBottom); } }) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @@ -125,6 +153,20 @@ public class SortDialogFragment extends DialogFragment { } }); + CompoundButton recycleBinBottomView = (CompoundButton) rootView.findViewById(R.id.sort_selection_recycle_bin_bottom); + if (!recycleBinAllowed) { + recycleBinBottomView.setVisibility(View.GONE); + } else { + // Check if recycle bin at the bottom + recycleBinBottomView.setChecked(mRecycleBinBottom); + recycleBinBottomView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + mRecycleBinBottom = isChecked; + } + }); + } + RadioGroup sortSelectionRadioGroupView = (RadioGroup) rootView.findViewById(R.id.sort_selection_radio_group); // Check value by default sortSelectionRadioGroupView.check(mCheckedId); @@ -185,6 +227,9 @@ public class SortDialogFragment extends DialogFragment { } public interface SortSelectionListener { - void onSortSelected(SortNodeEnum sortNodeEnum, boolean ascending, boolean groupsBefore); + void onSortSelected(SortNodeEnum sortNodeEnum, + boolean ascending, + boolean groupsBefore, + boolean recycleBinBottom); } } diff --git a/app/src/main/res/layout/sort_selection.xml b/app/src/main/res/layout/sort_selection.xml index 2adbc3262..b38e3af64 100644 --- a/app/src/main/res/layout/sort_selection.xml +++ b/app/src/main/res/layout/sort_selection.xml @@ -47,4 +47,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/sort_groups_before"/> + \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 281d11794..05a3a0180 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -181,8 +181,9 @@ Rechercher Afficher le mot de passe Trier - Groupes avant Ascendant + Groupes avant + Corbeille à la fin Tri par défaut (base de données) Tri par Titre Tri par nom diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 089a7f792..7e26e6366 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -181,8 +181,9 @@ Search Show password Sort - Groups before Ascending + Groups before + Recycle bin at the bottom DB sort order Sort by Title Sort by Name