From ed679b8a17b4c140a8cc0fc1c312c7996f12d5d7 Mon Sep 17 00:00:00 2001 From: Tom Hennen Date: Sun, 20 Sep 2015 14:54:54 -0400 Subject: refactored after merging in changes from #1212 --- .../antennapod/fragment/AllEpisodesFragment.java | 29 ++++++++++++----- .../fragment/FavoriteEpisodesFragment.java | 38 ++++++++-------------- .../antennapod/fragment/NewEpisodesFragment.java | 34 ++++++------------- 3 files changed, 43 insertions(+), 58 deletions(-) (limited to 'app/src/main/java/de/danoeh') diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java index b2932ddb7..82ee43d38 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java @@ -339,7 +339,6 @@ public class AllEpisodesFragment extends Fragment { super.onCreateContextMenu(menu, v, menuInfo); AdapterView.AdapterContextMenuInfo adapterInfo = (AdapterView.AdapterContextMenuInfo) menuInfo; FeedItem item = itemAccess.getItem(adapterInfo.position); - MenuInflater inflater = getActivity().getMenuInflater(); inflater.inflate(R.menu.allepisodes_context, menu); @@ -354,11 +353,27 @@ public class AllEpisodesFragment extends Fragment { @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) { + if (menuInfo == null) { menuInfo = lastMenuInfo; } - FeedItem selectedItem = itemAccess.getItem(menuInfo.position); + 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"); @@ -484,13 +499,9 @@ public class AllEpisodesFragment extends Fragment { }); } - private Pair,LongList> loadData() { + protected Pair,LongList> loadData() { List items; - if(showOnlyNewEpisodes) { - items = DBReader.getNewItemsList(); - } else { - items = DBReader.getRecentlyPublishedEpisodes(RECENT_EPISODES_LIMIT); - } + items = DBReader.getRecentlyPublishedEpisodes(RECENT_EPISODES_LIMIT); LongList queuedIds = DBReader.getQueueIDList(); return Pair.create(items, queuedIds); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java index aff1e575a..d72f00610 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java @@ -3,6 +3,7 @@ package de.danoeh.antennapod.fragment; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; +import android.support.v4.util.Pair; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -10,12 +11,15 @@ import android.view.ViewGroup; import com.mobeta.android.dslv.DragSortListView; +import java.util.List; + import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.QueueEvent; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; +import de.danoeh.antennapod.core.util.LongList; import de.danoeh.antennapod.core.util.gui.FeedItemUndoToken; import de.danoeh.antennapod.core.util.gui.UndoBarController; import de.greenrobot.event.EventBus; @@ -40,7 +44,7 @@ public class FavoriteEpisodesFragment extends AllEpisodesFragment { public void onEvent(QueueEvent event) { Log.d(TAG, "onEvent(" + event + ")"); - startItemLoader(); + loadItems(); } @Override @@ -68,7 +72,9 @@ public class FavoriteEpisodesFragment extends AllEpisodesFragment { listView.setRemoveListener(which -> { Log.d(TAG, "remove(" + which + ")"); - stopItemLoader(); + if (subscription != null) { + subscription.unsubscribe(); + } FeedItem item = (FeedItem) listView.getAdapter().getItem(which); // TODO: actually remove the item from favorites @@ -103,28 +109,10 @@ public class FavoriteEpisodesFragment extends AllEpisodesFragment { } @Override - protected void startItemLoader() { - if (itemLoader != null) { - itemLoader.cancel(true); - } - itemLoader = new FavItemLoader(); - itemLoader.execute(); - } - - private class FavItemLoader extends AllEpisodesFragment.ItemLoader { - - @Override - protected Object[] doInBackground(Void... params) { - Context context = mainActivity.get(); - if (context != null) { - return new Object[]{ - DBReader.getFavoriteItemsList(), - DBReader.getQueueIDList() - }; - } else { - return null; - } - } + protected Pair,LongList> loadData() { + List items; + items = DBReader.getFavoriteItemsList(); + LongList queuedIds = DBReader.getQueueIDList(); + return Pair.create(items, queuedIds); } - } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java index 41630f6d9..826e6dbb8 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.fragment; import android.content.Context; import android.os.Bundle; +import android.support.v4.util.Pair; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -9,12 +10,15 @@ import android.view.ViewGroup; import com.mobeta.android.dslv.DragSortListView; +import java.util.List; + import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.QueueEvent; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; +import de.danoeh.antennapod.core.util.LongList; import de.danoeh.antennapod.core.util.gui.FeedItemUndoToken; import de.danoeh.antennapod.core.util.gui.UndoBarController; import de.greenrobot.event.EventBus; @@ -69,7 +73,7 @@ public class NewEpisodesFragment extends AllEpisodesFragment { @Override public void remove(int which) { Log.d(TAG, "remove(" + which + ")"); - if(subscription != null) { + if (subscription != null) { subscription.unsubscribe(); } FeedItem item = (FeedItem) listView.getAdapter().getItem(which); @@ -110,29 +114,11 @@ public class NewEpisodesFragment extends AllEpisodesFragment { } @Override - protected void startItemLoader() { - if (itemLoader != null) { - itemLoader.cancel(true); - } - itemLoader = new NewItemLoader(); - itemLoader.execute(); - } - - private class NewItemLoader extends AllEpisodesFragment.ItemLoader { - - @Override - protected Object[] doInBackground(Void... params) { - Context context = mainActivity.get(); - if (context != null) { - return new Object[] { - DBReader.getNewItemsList(), - DBReader.getQueueIDList(), - null // see ItemAccess.isNew - }; - } else { - return null; - } - } + protected Pair,LongList> loadData() { + List items; + items = DBReader.getNewItemsList(); + LongList queuedIds = DBReader.getQueueIDList(); + return Pair.create(items, queuedIds); } } -- cgit v1.2.3