From f9e00f72a0dfeea3e5b9db8a522f7251e158dc7d Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Sun, 24 Feb 2013 12:30:23 +0100 Subject: limited access to feed items, feeds, playback history and download log --- .../antennapod/fragment/ItemlistFragment.java | 44 +++++++++++++--------- 1 file changed, 26 insertions(+), 18 deletions(-) (limited to 'src/de/danoeh/antennapod/fragment/ItemlistFragment.java') diff --git a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java index cdccdc338..6b516f888 100644 --- a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.fragment; import java.util.List; +import android.annotation.SuppressLint; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -34,35 +35,30 @@ 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"; 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 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; /** Argument for FeeditemlistAdapter */ protected boolean showFeedtitle; - public ItemlistFragment(List 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 +90,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); } @@ -178,7 +186,7 @@ public class ItemlistFragment extends SherlockListFragment { getSherlockActivity() .setSupportProgressBarIndeterminateVisibility(false); } - getSherlockActivity().invalidateOptionsMenu(); + getSherlockActivity().supportInvalidateOptionsMenu(); } } -- cgit v1.2.3 From 955d296638b240d8bbf4be8cce4b27485ac4c517 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Mon, 25 Feb 2013 10:47:37 +0100 Subject: Implemented EventDistributor --- .../antennapod/fragment/ItemlistFragment.java | 59 ++++++++++------------ 1 file changed, 26 insertions(+), 33 deletions(-) (limited to 'src/de/danoeh/antennapod/fragment/ItemlistFragment.java') diff --git a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java index 6b516f888..9e9389838 100644 --- a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -1,12 +1,7 @@ package de.danoeh.antennapod.fragment; -import java.util.List; - import android.annotation.SuppressLint; -import android.content.BroadcastReceiver; -import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.os.Bundle; import android.util.Log; import android.view.ContextMenu; @@ -26,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; @@ -37,8 +33,13 @@ 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; @@ -48,14 +49,15 @@ public class ItemlistFragment extends SherlockListFragment { private AbstractFeedItemlistAdapter.ItemAccess itemAccess; private Feed feed; - + protected FeedItem selectedItem = null; protected boolean contextMenuClosed = true; /** Argument for FeeditemlistAdapter */ protected boolean showFeedtitle; - public ItemlistFragment(AbstractFeedItemlistAdapter.ItemAccess itemAccess, boolean showFeedtitle) { + public ItemlistFragment(AbstractFeedItemlistAdapter.ItemAccess itemAccess, + boolean showFeedtitle) { super(); this.itemAccess = itemAccess; this.showFeedtitle = showFeedtitle; @@ -95,12 +97,12 @@ public class ItemlistFragment extends SherlockListFragment { 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); @@ -122,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 @@ -141,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 @@ -161,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(); + } } } }; -- cgit v1.2.3