diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2013-03-06 21:04:05 +0100 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2013-03-06 21:04:05 +0100 |
commit | b3a250c766253da57a917814a6f60e44f616e938 (patch) | |
tree | d26aec2b75fa0fa0117499110a7650317930b64b /src/de/danoeh/antennapod/fragment/ItemlistFragment.java | |
parent | ec1992f36c5bf1916ebaed8196705b2324486388 (diff) | |
parent | 7fe0e05304b5683d3a3cc0ba5a1938f73ffd54de (diff) | |
download | AntennaPod-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.java | 95 |
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(); } } |