diff --git a/res/drawable/ic_delete.xml b/res/drawable/ic_delete.xml
deleted file mode 100644
index f9213d2..0000000
--- 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 a7a81a2..0000000
--- 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 c38cac5..0000000
--- 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 6b355e6..4af7660 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 4df19c4..fd4ad0f 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -4,8 +4,6 @@
#ff000000
#ff009688
- #ffdddddd
-
#f5f5f5
#333333
diff --git a/res/values/styles.xml b/res/values/styles.xml
index c48409f..fbf812b 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 15768ff..db4985b 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