From d0ff8999900ca7d294c46a425079b90f52365eaf Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Sun, 11 May 2014 00:48:02 +0200 Subject: Fixed Download screen problems and download report notification --- .../fragment/CompletedDownloadsFragment.java | 49 ++++++++++++++++++---- .../antennapod/fragment/ItemlistFragment.java | 6 +-- .../antennapod/fragment/NewEpisodesFragment.java | 7 +--- .../fragment/PlaybackHistoryFragment.java | 4 +- .../danoeh/antennapod/fragment/QueueFragment.java | 6 +-- 5 files changed, 47 insertions(+), 25 deletions(-) (limited to 'src/de/danoeh/antennapod/fragment') diff --git a/src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java b/src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java index 51c92e234..6eaa33713 100644 --- a/src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java +++ b/src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java @@ -6,11 +6,14 @@ import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.view.View; +import android.widget.ListView; import de.danoeh.antennapod.adapter.DownloadedEpisodesListAdapter; +import de.danoeh.antennapod.dialog.FeedItemDialog; import de.danoeh.antennapod.feed.EventDistributor; import de.danoeh.antennapod.feed.FeedItem; import de.danoeh.antennapod.storage.DBReader; import de.danoeh.antennapod.storage.DBWriter; +import de.danoeh.antennapod.util.QueueAccess; import java.util.List; @@ -18,17 +21,21 @@ import java.util.List; * Displays all running downloads and provides a button to delete them */ public class CompletedDownloadsFragment extends ListFragment { - private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED | + private static final int EVENTS = + EventDistributor.DOWNLOAD_HANDLED | EventDistributor.DOWNLOADLOG_UPDATE | EventDistributor.QUEUE_UPDATE | EventDistributor.UNREAD_ITEMS_UPDATE; private List items; + private QueueAccess queue; private DownloadedEpisodesListAdapter listAdapter; private boolean viewCreated = false; private boolean itemsLoaded = false; + private FeedItemDialog feedItemDialog; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -60,6 +67,7 @@ public class CompletedDownloadsFragment extends ListFragment { super.onDestroyView(); listAdapter = null; viewCreated = false; + feedItemDialog = null; } @Override @@ -79,12 +87,29 @@ public class CompletedDownloadsFragment extends ListFragment { } } + @Override + public void onListItemClick(ListView l, View v, int position, long id) { + super.onListItemClick(l, v, position, id); + FeedItem item = listAdapter.getItem(position - l.getHeaderViewsCount()); + if (item != null) { + feedItemDialog = FeedItemDialog.newInstace(getActivity(), item, queue); + feedItemDialog.show(); + } + + } + private void onFragmentLoaded() { if (listAdapter == null) { listAdapter = new DownloadedEpisodesListAdapter(getActivity(), itemAccess); setListAdapter(listAdapter); } listAdapter.notifyDataSetChanged(); + if (feedItemDialog != null) { + boolean res = feedItemDialog.updateContent(queue, items); + if (!res && feedItemDialog.isShowing()) { + feedItemDialog.dismiss(); + } + } } private DownloadedEpisodesListAdapter.ItemAccess itemAccess = new DownloadedEpisodesListAdapter.ItemAccess() { @@ -107,7 +132,11 @@ public class CompletedDownloadsFragment extends ListFragment { private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { - if ((arg & EVENTS) != 0) { + if ((arg & EventDistributor.DOWNLOAD_QUEUED) != 0) { + if (feedItemDialog != null && feedItemDialog.isShowing()) { + feedItemDialog.updateMenuAppearance(); + } + } else if ((arg & EVENTS) != 0) { startItemLoader(); } } @@ -129,7 +158,7 @@ public class CompletedDownloadsFragment extends ListFragment { } } - private class ItemLoader extends AsyncTask> { + private class ItemLoader extends AsyncTask { @Override protected void onPreExecute() { @@ -140,11 +169,12 @@ public class CompletedDownloadsFragment extends ListFragment { } @Override - protected void onPostExecute(List feedItems) { - super.onPostExecute(feedItems); + protected void onPostExecute(Object[] results) { + super.onPostExecute(results); setListShown(true); - if (feedItems != null) { - items = feedItems; + if (results != null) { + items = (List) results[0]; + queue = (QueueAccess) results[1]; itemsLoaded = true; if (viewCreated && getActivity() != null) { onFragmentLoaded(); @@ -153,10 +183,11 @@ public class CompletedDownloadsFragment extends ListFragment { } @Override - protected List doInBackground(Void... params) { + protected Object[] doInBackground(Void... params) { Context context = getActivity(); if (context != null) { - return DBReader.getDownloadedItems(context); + return new Object[] {DBReader.getDownloadedItems(context), + QueueAccess.IDListAccess(DBReader.getQueueIDList(context))}; } return null; } diff --git a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java index 82fe13c32..6bd850120 100644 --- a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -283,10 +283,8 @@ public class ItemlistFragment extends ListFragment { setListShown(true); adapter.notifyDataSetChanged(); - if (feedItemDialog != null && feedItemDialog.isShowing()) { - feedItemDialog.setItemFromCollection(feed.getItems()); - feedItemDialog.setQueue(queue); - feedItemDialog.updateMenuAppearance(); + if (feedItemDialog != null) { + feedItemDialog.updateContent(queue, feed.getItems()); } getActivity().supportInvalidateOptionsMenu(); } diff --git a/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java b/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java index 3e67599f0..9c062aeb7 100644 --- a/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java +++ b/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java @@ -219,11 +219,8 @@ public class NewEpisodesFragment extends Fragment { downloadObserver = new DownloadObserver(activity.get(), new Handler(), downloadObserverCallback); downloadObserver.onResume(); } - if (feedItemDialog != null && feedItemDialog.isShowing()) { - feedItemDialog.setQueue(queueAccess); - feedItemDialog.setItemFromCollection(unreadItems); - feedItemDialog.setItemFromCollection(recentItems); - feedItemDialog.updateMenuAppearance(); + if (feedItemDialog != null) { + feedItemDialog.updateContent(queueAccess, unreadItems, recentItems); } listAdapter.notifyDataSetChanged(); getActivity().supportInvalidateOptionsMenu(); diff --git a/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java b/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java index 6369a51c1..1ccc9d9a4 100644 --- a/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java +++ b/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java @@ -175,9 +175,7 @@ public class PlaybackHistoryFragment extends ListFragment { setListShown(true); adapter.notifyDataSetChanged(); if (feedItemDialog != null && feedItemDialog.isShowing()) { - feedItemDialog.setItemFromCollection(playbackHistory); - feedItemDialog.setQueue(queue); - feedItemDialog.updateMenuAppearance(); + feedItemDialog.updateContent(queue, playbackHistory); } getActivity().supportInvalidateOptionsMenu(); } diff --git a/src/de/danoeh/antennapod/fragment/QueueFragment.java b/src/de/danoeh/antennapod/fragment/QueueFragment.java index 086e8f062..2756a468f 100644 --- a/src/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/src/de/danoeh/antennapod/fragment/QueueFragment.java @@ -234,10 +234,8 @@ public class QueueFragment extends Fragment { downloadObserver.onResume(); } listAdapter.notifyDataSetChanged(); - if (feedItemDialog != null && feedItemDialog.isShowing()) { - feedItemDialog.setQueue(QueueAccess.ItemListAccess(queue)); - feedItemDialog.setItemFromCollection(queue); - feedItemDialog.updateMenuAppearance(); + if (feedItemDialog != null) { + feedItemDialog.updateContent(QueueAccess.ItemListAccess(queue), queue); } } -- cgit v1.2.3