From da9bb8d578c44d16aa191e4bf6f1d150f639b634 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Fri, 7 Apr 2023 14:25:51 +0200 Subject: Fix long-pressing subscription on home screen (#6419) --- .../main/java/de/danoeh/antennapod/ui/home/HomeSection.java | 9 +++++++++ .../antennapod/ui/home/sections/SubscriptionsSection.java | 11 ++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'app/src/main') diff --git a/app/src/main/java/de/danoeh/antennapod/ui/home/HomeSection.java b/app/src/main/java/de/danoeh/antennapod/ui/home/HomeSection.java index 7b7d999ad..6cde2927b 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/home/HomeSection.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/home/HomeSection.java @@ -14,9 +14,12 @@ import androidx.core.view.ViewCompat; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.DefaultItemAnimator; import de.danoeh.antennapod.adapter.EpisodeItemListAdapter; +import de.danoeh.antennapod.adapter.HorizontalFeedListAdapter; import de.danoeh.antennapod.adapter.HorizontalItemListAdapter; import de.danoeh.antennapod.databinding.HomeSectionBinding; import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler; +import de.danoeh.antennapod.menuhandler.FeedMenuHandler; +import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.model.feed.FeedItem; import org.greenrobot.eventbus.EventBus; @@ -58,6 +61,12 @@ public abstract class HomeSection extends Fragment implements View.OnCreateConte // Apparently, none of the visibility check method works reliably on its own, so we just use all. return false; } + if (viewBinding.recyclerView.getAdapter() instanceof HorizontalFeedListAdapter) { + HorizontalFeedListAdapter adapter = (HorizontalFeedListAdapter) viewBinding.recyclerView.getAdapter(); + Feed selectedFeed = adapter.getLongPressedItem(); + return selectedFeed != null + && FeedMenuHandler.onMenuItemClicked(this, item.getItemId(), selectedFeed, () -> { }); + } FeedItem longPressedItem; if (viewBinding.recyclerView.getAdapter() instanceof EpisodeItemListAdapter) { EpisodeItemListAdapter adapter = (EpisodeItemListAdapter) viewBinding.recyclerView.getAdapter(); diff --git a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/SubscriptionsSection.java b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/SubscriptionsSection.java index b9a1bf8e8..9dbd34b4a 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/SubscriptionsSection.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/SubscriptionsSection.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.ui.home.sections; import android.os.Bundle; import android.util.Log; +import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,6 +13,7 @@ import androidx.recyclerview.widget.RecyclerView; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.adapter.HorizontalFeedListAdapter; +import de.danoeh.antennapod.core.menuhandler.MenuItemUtils; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.event.FeedListUpdateEvent; import de.danoeh.antennapod.fragment.SubscriptionFragment; @@ -41,7 +43,14 @@ public class SubscriptionsSection extends HomeSection { final View view = super.onCreateView(inflater, container, savedInstanceState); viewBinding.recyclerView.setLayoutManager( new LinearLayoutManager(getActivity(), RecyclerView.HORIZONTAL, false)); - listAdapter = new HorizontalFeedListAdapter((MainActivity) getActivity()); + listAdapter = new HorizontalFeedListAdapter((MainActivity) getActivity()) { + @Override + public void onCreateContextMenu(ContextMenu contextMenu, View view, + ContextMenu.ContextMenuInfo contextMenuInfo) { + super.onCreateContextMenu(contextMenu, view, contextMenuInfo); + MenuItemUtils.setOnClickListeners(contextMenu, SubscriptionsSection.this::onContextItemSelected); + } + }; listAdapter.setDummyViews(NUM_FEEDS); viewBinding.recyclerView.setAdapter(listAdapter); int paddingHorizontal = (int) (12 * getResources().getDisplayMetrics().density); -- cgit v1.2.3