diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java | 47 |
1 files changed, 47 insertions, 0 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 de6056063..7aee499da 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java @@ -14,6 +14,19 @@ import de.danoeh.antennapod.dialog.IntraFeedSortDialog; import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.model.feed.SortOrder; import org.apache.commons.lang3.StringUtils; +import android.content.DialogInterface; +import android.annotation.SuppressLint; +import androidx.fragment.app.Fragment; +import de.danoeh.antennapod.core.dialog.ConfirmationDialog; +import de.danoeh.antennapod.dialog.RemoveFeedDialog; +import de.danoeh.antennapod.dialog.RenameItemDialog; +import de.danoeh.antennapod.dialog.TagSettingsDialog; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; +import java.util.Collections; +import java.util.concurrent.Callable; +import java.util.concurrent.Future; /** * Handles interactions with the FeedItemMenu. @@ -75,4 +88,38 @@ public class FeedMenuHandler { sortDialog.openDialog(); } + public static boolean onMenuItemClicked(@NonNull Fragment fragment, int menuItemId, + @NonNull Feed selectedFeed, Runnable callback) { + @NonNull Context context = fragment.requireContext(); + if (menuItemId == R.id.rename_folder_item) { + new RenameItemDialog(fragment.getActivity(), selectedFeed).show(); + } else if (menuItemId == R.id.remove_all_inbox_item) { + ConfirmationDialog dialog = new ConfirmationDialog(fragment.getActivity(), + R.string.remove_all_inbox_label, R.string.remove_all_inbox_confirmation_msg) { + @Override + @SuppressLint("CheckResult") + public void onConfirmButtonPressed(DialogInterface clickedDialog) { + clickedDialog.dismiss(); + Observable.fromCallable((Callable<Future>) () -> DBWriter.removeFeedNewFlag(selectedFeed.getId())) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(result -> callback.run(), + error -> Log.e(TAG, Log.getStackTraceString(error))); + } + }; + dialog.createNewDialog().show(); + + } else if (menuItemId == R.id.edit_tags) { + TagSettingsDialog.newInstance(Collections.singletonList(selectedFeed.getPreferences())) + .show(fragment.getChildFragmentManager(), TagSettingsDialog.TAG); + } else if (menuItemId == R.id.rename_item) { + new RenameItemDialog(fragment.getActivity(), selectedFeed).show(); + } else if (menuItemId == R.id.remove_feed) { + RemoveFeedDialog.show(context, selectedFeed); + } else { + return false; + } + return true; + } + } |