From d108dc6229fe524a1523b25577f9e5ed0db205dc Mon Sep 17 00:00:00 2001 From: Joey Date: Fri, 6 Apr 2018 22:27:18 +0200 Subject: [PATCH] Updater: Use popup menu instead of ActionMode Change-Id: I707682708711679a7cbe1b0058cea9b1ed003cb6 --- res/drawable/ic_delete.xml | 9 -- res/drawable/ic_save.xml | 9 -- res/drawable/list_item_background.xml | 5 - res/menu/menu_action_mode.xml | 14 +- res/values/colors.xml | 2 - res/values/styles.xml | 6 + .../lineageos/updater/UpdatesListAdapter.java | 140 +++++++----------- 7 files changed, 59 insertions(+), 126 deletions(-) delete mode 100644 res/drawable/ic_delete.xml delete mode 100644 res/drawable/ic_save.xml delete mode 100644 res/drawable/list_item_background.xml diff --git a/res/drawable/ic_delete.xml b/res/drawable/ic_delete.xml deleted file mode 100644 index f9213d2b..00000000 --- a/res/drawable/ic_delete.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/res/drawable/ic_save.xml b/res/drawable/ic_save.xml deleted file mode 100644 index a7a81a25..00000000 --- a/res/drawable/ic_save.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/res/drawable/list_item_background.xml b/res/drawable/list_item_background.xml deleted file mode 100644 index c38cac59..00000000 --- a/res/drawable/list_item_background.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/res/menu/menu_action_mode.xml b/res/menu/menu_action_mode.xml index 6b355e60..4af76603 100644 --- a/res/menu/menu_action_mode.xml +++ b/res/menu/menu_action_mode.xml @@ -3,19 +3,11 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> + android:title="@string/menu_export_update" /> + android:title="@string/menu_delete_update" /> + android:title="@string/menu_copy_url" /> diff --git a/res/values/colors.xml b/res/values/colors.xml index 23597925..e820b3f5 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -4,7 +4,5 @@ #ff000000 #ff009688 - #ffdddddd - #f5f5f5 diff --git a/res/values/styles.xml b/res/values/styles.xml index c48409fe..fbf812b8 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -22,4 +22,10 @@ + + diff --git a/src/org/lineageos/updater/UpdatesListAdapter.java b/src/org/lineageos/updater/UpdatesListAdapter.java index 15768ff0..db4985ba 100644 --- a/src/org/lineageos/updater/UpdatesListAdapter.java +++ b/src/org/lineageos/updater/UpdatesListAdapter.java @@ -20,7 +20,10 @@ import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.support.design.widget.Snackbar; import android.support.v7.app.AlertDialog; -import android.support.v7.view.ActionMode; +import android.support.v7.view.ContextThemeWrapper; +import android.support.v7.view.menu.MenuBuilder; +import android.support.v7.view.menu.MenuPopupHelper; +import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; import android.text.SpannableString; import android.text.format.Formatter; @@ -28,10 +31,8 @@ import android.text.method.LinkMovementMethod; import android.text.util.Linkify; import android.util.Log; import android.util.TypedValue; +import android.view.Gravity; import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; @@ -65,7 +66,6 @@ public class UpdatesListAdapter extends RecyclerView.Adapter { if (clickListener != null) { clickListener.onClick(v); - stopActionMode(); } }); } @@ -413,11 +415,9 @@ public class UpdatesListAdapter extends RecyclerView.Adapter { - if (mActionMode == null) { - startActionMode(update, canDelete); - } + startActionMode(update, canDelete, anchor); return true; }; } @@ -461,86 +461,47 @@ public class UpdatesListAdapter extends RecyclerView.Adapter mode.finish()) - .show(); - return true; - case R.id.menu_copy_url: - Utils.addToClipboard(mActivity, - mActivity.getString(R.string.label_download_url), - update.getDownloadUrl(), - mActivity.getString(R.string.toast_download_url_copied)); - mode.finish(); - return true; - case R.id.menu_export_update: - // TODO: start exporting once the permission has been granted - boolean hasPermission = PermissionsUtils.checkAndRequestStoragePermission( - mActivity, 0); - if (hasPermission) { - exportUpdate(update); - } - return true; - } - return false; - } - - @Override - public void onDestroyActionMode(ActionMode mode) { - mSelectedDownload = null; - mActionMode = null; - notifyItemChanged(update.getDownloadId()); - - if (showActionBar) { - mActivity.getSupportActionBar().show(); - } + MenuBuilder menu = (MenuBuilder) popupMenu.getMenu(); + menu.findItem(R.id.menu_delete_action).setVisible(canDelete); + menu.findItem(R.id.menu_copy_url).setVisible(update.getAvailableOnline()); + menu.findItem(R.id.menu_export_update).setVisible( + update.getPersistentStatus() == UpdateStatus.Persistent.VERIFIED); + + popupMenu.setOnMenuItemClickListener(item -> { + switch (item.getItemId()) { + case R.id.menu_delete_action: + getDeleteDialog(update.getDownloadId()).show(); + return true; + case R.id.menu_copy_url: + Utils.addToClipboard(mActivity, + mActivity.getString(R.string.label_download_url), + update.getDownloadUrl(), + mActivity.getString(R.string.toast_download_url_copied)); + return true; + case R.id.menu_export_update: + // TODO: start exporting once the permission has been granted + boolean hasPermission = PermissionsUtils.checkAndRequestStoragePermission( + mActivity, 0); + if (hasPermission) { + exportUpdate(update); + } + return true; } + return false; }); + + MenuPopupHelper helper = new MenuPopupHelper(wrapper, menu, anchor); + helper.show(); } private void exportUpdate(UpdateInfo update) { @@ -553,7 +514,6 @@ public class UpdatesListAdapter extends RecyclerView.Adapter