64 lines
2.9 KiB
Java
64 lines
2.9 KiB
Java
package de.danoeh.antennapod.ui.screen.subscriptions;
|
|
|
|
import android.annotation.SuppressLint;
|
|
import android.content.Context;
|
|
import android.content.DialogInterface;
|
|
import android.util.Log;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.fragment.app.Fragment;
|
|
import de.danoeh.antennapod.R;
|
|
import de.danoeh.antennapod.ui.common.ConfirmationDialog;
|
|
import de.danoeh.antennapod.storage.database.DBWriter;
|
|
import de.danoeh.antennapod.ui.screen.feed.RemoveFeedDialog;
|
|
import de.danoeh.antennapod.ui.screen.feed.RenameFeedDialog;
|
|
import de.danoeh.antennapod.ui.screen.feed.preferences.TagSettingsDialog;
|
|
import de.danoeh.antennapod.model.feed.Feed;
|
|
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.
|
|
*/
|
|
public abstract class FeedMenuHandler {
|
|
private static final String TAG = "FeedMenuHandler";
|
|
|
|
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 RenameFeedDialog(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 RenameFeedDialog(fragment.getActivity(), selectedFeed).show();
|
|
} else if (menuItemId == R.id.remove_feed) {
|
|
RemoveFeedDialog.show(context, selectedFeed, null);
|
|
} else {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
}
|