mirror of
https://github.com/AntennaPod/AntennaPod.git
synced 2025-02-02 11:46:55 +01:00
Restore icon state after searching
This commit is contained in:
parent
7c2c97c747
commit
bec385a0a8
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user