summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/menuhandler
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/menuhandler')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java5
-rw-r--r--app/src/main/java/de/danoeh/antennapod/menuhandler/MenuItemUtils.java56
2 files changed, 42 insertions, 19 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java
index 5446d0191..9ceed9369 100644
--- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java
+++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java
@@ -34,11 +34,6 @@ public class FeedMenuHandler {
private static final String TAG = "FeedMenuHandler";
- public static boolean onCreateOptionsMenu(MenuInflater inflater, Menu menu) {
- inflater.inflate(R.menu.feedlist, menu);
- return true;
- }
-
public static boolean onPrepareOptionsMenu(Menu menu, Feed selectedFeed) {
if (selectedFeed == null) {
return true;
diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/MenuItemUtils.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/MenuItemUtils.java
index 6b3c99975..9c54a529b 100644
--- a/app/src/main/java/de/danoeh/antennapod/menuhandler/MenuItemUtils.java
+++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/MenuItemUtils.java
@@ -1,9 +1,10 @@
package de.danoeh.antennapod.menuhandler;
+import android.annotation.SuppressLint;
import android.content.Context;
-import android.content.res.TypedArray;
import android.view.Menu;
import android.view.MenuItem;
+import androidx.appcompat.view.menu.MenuItemImpl;
import androidx.appcompat.widget.SearchView;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
@@ -11,24 +12,23 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.util.ThemeUtils;
import de.danoeh.antennapod.fragment.SearchFragment;
+import java.util.HashMap;
+import java.util.Map;
+
/**
- * Utilities for menu items
+ * Utilities for menu items.
*/
public class MenuItemUtils extends de.danoeh.antennapod.core.menuhandler.MenuItemUtils {
- @SuppressWarnings("ResourceType")
public static void refreshLockItem(Context context, Menu menu) {
- final MenuItem queueLock = menu.findItem(de.danoeh.antennapod.R.id.queue_lock);
- int[] lockIcons = new int[] { de.danoeh.antennapod.R.attr.ic_lock_open, de.danoeh.antennapod.R.attr.ic_lock_closed };
- TypedArray ta = context.obtainStyledAttributes(lockIcons);
+ final MenuItem queueLock = menu.findItem(R.id.queue_lock);
if (UserPreferences.isQueueLocked()) {
queueLock.setTitle(de.danoeh.antennapod.R.string.unlock_queue);
- queueLock.setIcon(ta.getDrawable(0));
+ queueLock.setIcon(ThemeUtils.getDrawableFromAttr(context, R.attr.ic_lock_open));
} else {
queueLock.setTitle(de.danoeh.antennapod.R.string.lock_queue);
- queueLock.setIcon(ta.getDrawable(1));
+ queueLock.setIcon(ThemeUtils.getDrawableFromAttr(context, R.attr.ic_lock_closed));
}
- ta.recycle();
}
public static void setupSearchItem(Menu menu, MainActivity activity, long feedId, String feedTitle) {
@@ -51,21 +51,49 @@ public class MenuItemUtils extends de.danoeh.antennapod.core.menuhandler.MenuIte
}
});
searchItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
+ private final Map<Integer, Integer> oldShowAsActionState = new HashMap<>();
+
@Override
- public boolean onMenuItemActionExpand(MenuItem item) {
+ public boolean onMenuItemActionExpand(MenuItem clickedItem) {
+ oldShowAsActionState.clear();
for (int i = 0; i < menu.size(); i++) {
- if (menu.getItem(i).getItemId() != searchItem.getItemId()) {
- menu.getItem(i).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+ MenuItem item = menu.getItem(i);
+ if (item.getItemId() != searchItem.getItemId()) {
+ oldShowAsActionState.put(item.getItemId(), getShowAsActionFlag(item));
+ item.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
}
}
return true;
}
@Override
- public boolean onMenuItemActionCollapse(MenuItem item) {
- activity.invalidateOptionsMenu();
+ public boolean onMenuItemActionCollapse(MenuItem collapsedItem) {
+ for (int i = 0; i < menu.size(); i++) {
+ MenuItem item = menu.getItem(i);
+ if (item.getItemId() != searchItem.getItemId()
+ && oldShowAsActionState.containsKey(item.getItemId())) {
+ item.setShowAsAction(oldShowAsActionState.get(item.getItemId()));
+ }
+ }
return true;
}
});
}
+
+ @SuppressLint("RestrictedApi")
+ private static int getShowAsActionFlag(MenuItem item) {
+ if (!(item instanceof MenuItemImpl)) {
+ return MenuItemImpl.SHOW_AS_ACTION_NEVER;
+ }
+ MenuItemImpl itemImpl = ((MenuItemImpl) item);
+ if (itemImpl.requiresActionButton()) {
+ return MenuItemImpl.SHOW_AS_ACTION_ALWAYS;
+ } else if (itemImpl.requestsActionButton()) {
+ return MenuItemImpl.SHOW_AS_ACTION_IF_ROOM;
+ } else if (itemImpl.showsTextAsAction()) {
+ return MenuItemImpl.SHOW_AS_ACTION_WITH_TEXT;
+ } else {
+ return MenuItemImpl.SHOW_AS_ACTION_NEVER;
+ }
+ }
}