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