summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2013-03-06 21:04:05 +0100
committerdaniel oeh <daniel.oeh@gmail.com>2013-03-06 21:04:05 +0100
commitb3a250c766253da57a917814a6f60e44f616e938 (patch)
treed26aec2b75fa0fa0117499110a7650317930b64b /src/de/danoeh/antennapod/fragment/ItemlistFragment.java
parentec1992f36c5bf1916ebaed8196705b2324486388 (diff)
parent7fe0e05304b5683d3a3cc0ba5a1938f73ffd54de (diff)
downloadAntennaPod-b3a250c766253da57a917814a6f60e44f616e938.zip
Merge branch 'apichanges' into develop
Diffstat (limited to 'src/de/danoeh/antennapod/fragment/ItemlistFragment.java')
-rw-r--r--src/de/danoeh/antennapod/fragment/ItemlistFragment.java95
1 files changed, 48 insertions, 47 deletions
diff --git a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
index cdccdc338..9e9389838 100644
--- a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
+++ b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
@@ -1,11 +1,7 @@
package de.danoeh.antennapod.fragment;
-import java.util.List;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
+import android.annotation.SuppressLint;
import android.content.Intent;
-import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
@@ -25,6 +21,7 @@ import de.danoeh.antennapod.adapter.AbstractFeedItemlistAdapter;
import de.danoeh.antennapod.adapter.ActionButtonCallback;
import de.danoeh.antennapod.adapter.FeedItemlistAdapter;
import de.danoeh.antennapod.dialog.DownloadRequestErrorDialogCreator;
+import de.danoeh.antennapod.feed.EventDistributor;
import de.danoeh.antennapod.feed.Feed;
import de.danoeh.antennapod.feed.FeedItem;
import de.danoeh.antennapod.feed.FeedManager;
@@ -34,22 +31,24 @@ import de.danoeh.antennapod.storage.DownloadRequester;
import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler;
/** Displays a list of FeedItems. */
+@SuppressLint("ValidFragment")
public class ItemlistFragment extends SherlockListFragment {
-
private static final String TAG = "ItemlistFragment";
+
+ private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED
+ | EventDistributor.DOWNLOAD_QUEUED
+ | EventDistributor.QUEUE_UPDATE
+ | EventDistributor.UNREAD_ITEMS_UPDATE;
+
public static final String EXTRA_SELECTED_FEEDITEM = "extra.de.danoeh.antennapod.activity.selected_feeditem";
public static final String ARGUMENT_FEED_ID = "argument.de.danoeh.antennapod.feed_id";
protected AbstractFeedItemlistAdapter fila;
- protected FeedManager manager;
- protected DownloadRequester requester;
+ protected FeedManager manager = FeedManager.getInstance();
+ protected DownloadRequester requester = DownloadRequester.getInstance();
- /** The feed which the activity displays */
- protected List<FeedItem> items;
- /**
- * This is only not null if the fragment displays the items of a specific
- * feed
- */
- protected Feed feed;
+ private AbstractFeedItemlistAdapter.ItemAccess itemAccess;
+
+ private Feed feed;
protected FeedItem selectedItem = null;
protected boolean contextMenuClosed = true;
@@ -57,12 +56,11 @@ public class ItemlistFragment extends SherlockListFragment {
/** Argument for FeeditemlistAdapter */
protected boolean showFeedtitle;
- public ItemlistFragment(List<FeedItem> items, boolean showFeedtitle) {
+ public ItemlistFragment(AbstractFeedItemlistAdapter.ItemAccess itemAccess,
+ boolean showFeedtitle) {
super();
- this.items = items;
+ this.itemAccess = itemAccess;
this.showFeedtitle = showFeedtitle;
- manager = FeedManager.getInstance();
- requester = DownloadRequester.getInstance();
}
public ItemlistFragment() {
@@ -94,15 +92,27 @@ public class ItemlistFragment extends SherlockListFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (items == null) {
+ if (itemAccess == null) {
long feedId = getArguments().getLong(ARGUMENT_FEED_ID);
- feed = FeedManager.getInstance().getFeed(feedId);
- items = feed.getItems();
+ final Feed feed = FeedManager.getInstance().getFeed(feedId);
+ this.feed = feed;
+ itemAccess = new AbstractFeedItemlistAdapter.ItemAccess() {
+
+ @Override
+ public FeedItem getItem(int position) {
+ return feed.getItemAtIndex(true, position);
+ }
+
+ @Override
+ public int getCount() {
+ return feed.getNumOfItems(true);
+ }
+ };
}
}
protected AbstractFeedItemlistAdapter createListAdapter() {
- return new FeedItemlistAdapter(getActivity(), 0, items,
+ return new FeedItemlistAdapter(getActivity(), itemAccess,
adapterCallback, showFeedtitle);
}
@@ -114,12 +124,7 @@ public class ItemlistFragment extends SherlockListFragment {
@Override
public void onDestroy() {
super.onDestroy();
- try {
- getActivity().unregisterReceiver(contentUpdate);
- } catch (IllegalArgumentException e) {
- Log.w(TAG,
- "IllegalArgumentException when trying to unregister contentUpdate receiver.");
- }
+ EventDistributor.getInstance().unregister(contentUpdate);
}
@Override
@@ -133,13 +138,7 @@ public class ItemlistFragment extends SherlockListFragment {
}
});
updateProgressBarVisibility();
- IntentFilter filter = new IntentFilter();
- filter.addAction(DownloadRequester.ACTION_DOWNLOAD_QUEUED);
- filter.addAction(DownloadService.ACTION_DOWNLOAD_HANDLED);
- filter.addAction(FeedManager.ACTION_QUEUE_UPDATE);
- filter.addAction(FeedManager.ACTION_UNREAD_ITEMS_UPDATE);
-
- getActivity().registerReceiver(contentUpdate, filter);
+ EventDistributor.getInstance().register(contentUpdate);
}
@Override
@@ -153,17 +152,19 @@ public class ItemlistFragment extends SherlockListFragment {
startActivity(showItem);
}
- private BroadcastReceiver contentUpdate = new BroadcastReceiver() {
+ private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
+
@Override
- public void onReceive(Context context, Intent intent) {
- if (AppConfig.DEBUG)
- Log.d(TAG, "Received contentUpdate Intent.");
- if (intent.getAction().equals(
- DownloadRequester.ACTION_DOWNLOAD_QUEUED)) {
- updateProgressBarVisibility();
- } else {
- fila.notifyDataSetChanged();
- updateProgressBarVisibility();
+ public void update(EventDistributor eventDistributor, Integer arg) {
+ if ((EVENTS & arg) != 0) {
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "Received contentUpdate Intent.");
+ if ((EventDistributor.DOWNLOAD_QUEUED & arg) != 0) {
+ updateProgressBarVisibility();
+ } else {
+ fila.notifyDataSetChanged();
+ updateProgressBarVisibility();
+ }
}
}
};
@@ -178,7 +179,7 @@ public class ItemlistFragment extends SherlockListFragment {
getSherlockActivity()
.setSupportProgressBarIndeterminateVisibility(false);
}
- getSherlockActivity().invalidateOptionsMenu();
+ getSherlockActivity().supportInvalidateOptionsMenu();
}
}