From 89bbc8882680fe0f8585d0995495e7ee2a2f8e36 Mon Sep 17 00:00:00 2001 From: Tom Hennen Date: Sat, 10 Oct 2015 19:17:49 -0400 Subject: replaced context menu with popup menu. still a couple of other issues --- .../adapter/AllEpisodesRecycleAdapter.java | 68 +++++++++++++++- .../antennapod/fragment/AllEpisodesFragment.java | 91 ++-------------------- 2 files changed, 71 insertions(+), 88 deletions(-) (limited to 'app/src/main') diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java index 6963d1745..dc8ade1ca 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java @@ -3,13 +3,15 @@ package de.danoeh.antennapod.adapter; import android.content.Context; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; import android.text.format.DateUtils; import android.util.Log; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.BaseAdapter; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ProgressBar; @@ -28,10 +30,12 @@ import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.glide.ApGlideSettings; +import de.danoeh.antennapod.core.storage.DownloadRequestException; import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.core.util.NetworkUtils; import de.danoeh.antennapod.fragment.ItemFragment; +import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler; /** * List adapter for the list of new episodes @@ -82,6 +86,8 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter episodes; - private LongList queuedItemsIds; private List downloaderList; private boolean itemsLoaded = false; @@ -297,7 +294,7 @@ public class AllEpisodesFragment extends Fragment { txtvEmpty = (TextView) root.findViewById(android.R.id.empty); progLoading = (ProgressBar) root.findViewById(R.id.progLoading); - registerForContextMenu(listView); + //registerForContextMenu(listView); if (!itemsLoaded) { progLoading.setVisibility(View.VISIBLE); @@ -313,75 +310,6 @@ public class AllEpisodesFragment extends Fragment { return root; } - private final FeedItemMenuHandler.MenuInterface contextMenuInterface = new FeedItemMenuHandler.MenuInterface() { - @Override - public void setItemVisibility(int id, boolean visible) { - if(contextMenu == null) { - return; - } - MenuItem item = contextMenu.findItem(id); - if (item != null) { - item.setVisible(visible); - } - } - }; - - @Override - public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, v, menuInfo); - if (menuInfo == null) { return; } - AdapterView.AdapterContextMenuInfo adapterInfo = (AdapterView.AdapterContextMenuInfo) menuInfo; - FeedItem item = itemAccess.getItem(adapterInfo.position); - MenuInflater inflater = getActivity().getMenuInflater(); - inflater.inflate(R.menu.allepisodes_context, menu); - - if (item != null) { - menu.setHeaderTitle(item.getTitle()); - } - - contextMenu = menu; - lastMenuInfo = (AdapterView.AdapterContextMenuInfo) menuInfo; - FeedItemMenuHandler.onPrepareMenu(getActivity(), contextMenuInterface, item, true, queuedItemsIds); - } - - @Override - public boolean onContextItemSelected(MenuItem item) { - if (!getUserVisibleHint()) { - // we're not visible, don't do anything. - return false; - } - AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); - if (menuInfo == null) { - menuInfo = lastMenuInfo; - } - if (menuInfo == null) { - Log.e(TAG, "menuInfo is null, not doing anything"); - return false; - } - - FeedItem selectedItem = null; - - // make sure the item still makes sense - if (menuInfo.position >= 0 && menuInfo.position < itemAccess.getCount()) { - selectedItem = itemAccess.getItem(menuInfo.position); - } else { - Log.d(TAG, "Selected item at position " + menuInfo.position + " does not exist, only " + itemAccess.getCount() + " items available"); - } - - if (selectedItem == null) { - Log.i(TAG, "Selected item at position " + menuInfo.position + " was null, ignoring selection"); - return super.onContextItemSelected(item); - } - - try { - return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem); - } catch (DownloadRequestException e) { - e.printStackTrace(); - Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show(); - return true; - } - } - private void onFragmentLoaded() { if (listAdapter == null) { listAdapter = new AllEpisodesRecycleAdapter(activity.get(), activity.get(), itemAccess, @@ -439,11 +367,10 @@ public class AllEpisodesFragment extends Fragment { @Override public boolean isInQueue(FeedItem item) { - if (itemsLoaded) { - return queuedItemsIds.contains(item.getId()); - } else { - return false; + if (item != null) { + return item.isTagged(FeedItem.TAG_QUEUE); } + return false; } }; @@ -478,8 +405,7 @@ public class AllEpisodesFragment extends Fragment { listView.setVisibility(View.VISIBLE); progLoading.setVisibility(View.GONE); if (data != null) { - episodes = data.first; - queuedItemsIds = data.second; + episodes = data; itemsLoaded = true; if (viewsCreated && activity.get() != null) { onFragmentLoaded(); @@ -490,11 +416,8 @@ public class AllEpisodesFragment extends Fragment { }); } - protected Pair,LongList> loadData() { - List items; - items = DBReader.getRecentlyPublishedEpisodes(RECENT_EPISODES_LIMIT); - LongList queuedIds = DBReader.getQueueIDList(); - return Pair.create(items, queuedIds); + protected List loadData() { + return DBReader.getRecentlyPublishedEpisodes(RECENT_EPISODES_LIMIT); } } -- cgit v1.2.3