Add share to feed multi-select menu (#8187)

This commit is contained in:
Hans-Peter Lehmann
2025-12-27 19:23:10 +01:00
committed by GitHub
parent b7cbd0012b
commit d42f3725de
3 changed files with 23 additions and 11 deletions

View File

@ -36,25 +36,21 @@ public abstract class FeedMenuHandler {
if (menu == null || selectedItems == null || selectedItems.isEmpty() || selectedItems.get(0) == null) {
return false;
}
boolean allNotSubscribed = true;
boolean allSubscribed = true;
boolean allArchived = true;
for (Feed feed : selectedItems) {
if (feed.getState() != Feed.STATE_NOT_SUBSCRIBED) {
allNotSubscribed = false;
if (feed.getState() != Feed.STATE_SUBSCRIBED) {
allSubscribed = false;
}
if (feed.getState() != Feed.STATE_ARCHIVED) {
allArchived = false;
}
}
if (allNotSubscribed) {
setItemVisibility(menu, R.id.remove_archive_feed, false);
setItemVisibility(menu, R.id.remove_all_inbox_item, false);
}
setItemVisibility(menu, R.id.remove_archive_feed, !allArchived);
setItemVisibility(menu, R.id.remove_all_inbox_item, allSubscribed);
setItemVisibility(menu, R.id.remove_archive_feed, !allArchived && allSubscribed);
setItemVisibility(menu, R.id.remove_restore_feed, allArchived);
if (selectedItems.size() != 1 || selectedItems.get(0).isLocalFeed()) {
setItemVisibility(menu, R.id.share_feed, false);
}
boolean singleNonLocalFeedSelected = selectedItems.size() == 1 && !selectedItems.get(0).isLocalFeed();
setItemVisibility(menu, R.id.share_feed, singleNonLocalFeedSelected);
return true;
}

View File

@ -23,6 +23,8 @@ import de.danoeh.antennapod.ui.screen.preferences.PreferenceListDialog;
import de.danoeh.antennapod.ui.screen.preferences.PreferenceSwitchDialog;
import org.greenrobot.eventbus.EventBus;
import de.danoeh.antennapod.ui.share.ShareUtils;
public class FeedMultiSelectActionHandler {
private static final String TAG = "FeedSelectHandler";
private final FragmentActivity activity;
@ -34,6 +36,9 @@ public class FeedMultiSelectActionHandler {
}
public void handleAction(int id) {
if (selectedItems.isEmpty()) {
return;
}
if (id == R.id.remove_archive_feed || id == R.id.remove_restore_feed) {
new RemoveFeedDialog(selectedItems).show(activity.getSupportFragmentManager(), null);
} else if (id == R.id.notify_new_episodes) {
@ -48,6 +53,10 @@ public class FeedMultiSelectActionHandler {
playbackSpeedPrefHandler();
} else if (id == R.id.edit_tags) {
editFeedPrefTags();
} else if (id == R.id.share_feed) {
if (!selectedItems.get(0).isLocalFeed()) {
ShareUtils.shareFeedLink(activity, selectedItems.get(0));
}
} else {
Log.e(TAG, "Unrecognized speed dial action item. Do nothing. id=" + id);
}

View File

@ -5,6 +5,13 @@
android:menuCategory="container"
android:title="@string/edit_tags"
android:icon="@drawable/ic_tag"/>
<item
android:id="@+id/share_feed"
android:menuCategory="container"
android:title="@string/share_label"
android:icon="@drawable/ic_share"/>
<item
android:id="@+id/remove_archive_feed"
android:menuCategory="container"