summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod
diff options
context:
space:
mode:
authorTom Hennen <tom.hennen@gmail.com>2015-09-20 14:54:54 -0400
committerTom Hennen <tom.hennen@gmail.com>2015-09-20 14:54:54 -0400
commited679b8a17b4c140a8cc0fc1c312c7996f12d5d7 (patch)
tree0daac809e2635c321728af80d116775a715bf8ad /app/src/main/java/de/danoeh/antennapod
parent1993f779e8b25507a4096effd72618937c2f4ad0 (diff)
downloadAntennaPod-ed679b8a17b4c140a8cc0fc1c312c7996f12d5d7.zip
refactored after merging in changes from #1212
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java29
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java38
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java34
3 files changed, 43 insertions, 58 deletions
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<List<FeedItem>,LongList> loadData() {
+ protected Pair<List<FeedItem>,LongList> loadData() {
List<FeedItem> 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<List<FeedItem>,LongList> loadData() {
+ List<FeedItem> 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<List<FeedItem>,LongList> loadData() {
+ List<FeedItem> items;
+ items = DBReader.getNewItemsList();
+ LongList queuedIds = DBReader.getQueueIDList();
+ return Pair.create(items, queuedIds);
}
}