aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/utils
diff options
context:
space:
mode:
authorMatthew Wong <wongma7@outlook.com>2016-05-14 20:30:55 -0400
committerMatthew Wong <wongma7@outlook.com>2016-05-14 20:30:55 -0400
commitcacf739f6d5af79ddfe623cc764b07ff8a6136f6 (patch)
tree9699a66bd7a411fe1098ec11b91fc30468c8222b /app/src/main/java/com/zeapo/pwdstore/utils
parent2b01219e5c4a47b685d49b8aeb7671fafe9de8b0 (diff)
downloadHardenedPass-cacf739f6d5af79ddfe623cc764b07ff8a6136f6.tar.gz
HardenedPass-cacf739f6d5af79ddfe623cc764b07ff8a6136f6.zip
add edit long press action
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/utils')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java22
1 files changed, 21 insertions, 1 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java
index c9158b30..45dd0d0b 100644
--- a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java
+++ b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java
@@ -25,6 +25,7 @@ public class PasswordRecyclerAdapter extends RecyclerView.Adapter<PasswordRecycl
private final PasswordFragment.OnFragmentInteractionListener listener;
private final Set<Integer> selectedItems;
private ActionMode mActionMode;
+ private Boolean canEdit;
// Provide a reference to the views for each data item
// Complex data items may need more than one view per item, and
@@ -85,6 +86,14 @@ public class PasswordRecyclerAdapter extends RecyclerView.Adapter<PasswordRecycl
toggleSelection(holder.getAdapterPosition(), holder.card, pass.getType());
if (selectedItems.isEmpty()) {
mActionMode.finish();
+ } else if (selectedItems.size() == 1 && !canEdit) {
+ if (values.get(selectedItems.iterator().next()).getType() == PasswordItem.TYPE_PASSWORD) {
+ canEdit = true;
+ mActionMode.invalidate();
+ }
+ } else if (selectedItems.size() >= 1 && canEdit) {
+ canEdit = false;
+ mActionMode.invalidate();
}
} else {
listener.onFragmentInteraction(pass);
@@ -99,8 +108,10 @@ public class PasswordRecyclerAdapter extends RecyclerView.Adapter<PasswordRecycl
return false;
}
toggleSelection(holder.getAdapterPosition(), holder.card, pass.getType());
+ canEdit = pass.getType() == PasswordItem.TYPE_PASSWORD;
// Start the CAB using the ActionMode.Callback
mActionMode = activity.startSupportActionMode(mActionModeCallback);
+ mActionMode.invalidate();
return true;
}
});
@@ -123,7 +134,12 @@ public class PasswordRecyclerAdapter extends RecyclerView.Adapter<PasswordRecycl
// may be called multiple times if the mode is invalidated.
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- return false; // Return false if nothing is done
+ if (canEdit) {
+ menu.findItem(R.id.menu_edit_password).setVisible(true);
+ } else {
+ menu.findItem(R.id.menu_edit_password).setVisible(false);
+ }
+ return true; // Return false if nothing is done
}
// Called when the user selects a contextual menu item
@@ -134,6 +150,10 @@ public class PasswordRecyclerAdapter extends RecyclerView.Adapter<PasswordRecycl
activity.deletePasswords(PasswordRecyclerAdapter.this, new TreeSet<>(selectedItems));
mode.finish(); // Action picked, so close the CAB
return true;
+ case R.id.menu_edit_password:
+ activity.editPassword(values.get(selectedItems.iterator().next()));
+ mode.finish();
+ return true;
default:
return false;
}