summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2014-05-11 00:48:02 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2014-05-11 00:48:02 +0200
commitd0ff8999900ca7d294c46a425079b90f52365eaf (patch)
treec1d4817a2e09982dbb7888dbe32eec6a21402b18 /src/de/danoeh/antennapod
parentcb9741b41753fc9ed74e65c9e1b78eae6eeb5370 (diff)
downloadAntennaPod-d0ff8999900ca7d294c46a425079b90f52365eaf.zip
Fixed Download screen problems and download report notification
Diffstat (limited to 'src/de/danoeh/antennapod')
-rw-r--r--src/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java2
-rw-r--r--src/de/danoeh/antennapod/dialog/FeedItemDialog.java38
-rw-r--r--src/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java49
-rw-r--r--src/de/danoeh/antennapod/fragment/ItemlistFragment.java6
-rw-r--r--src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java7
-rw-r--r--src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java4
-rw-r--r--src/de/danoeh/antennapod/fragment/QueueFragment.java6
-rw-r--r--src/de/danoeh/antennapod/service/download/DownloadService.java6
8 files changed, 85 insertions, 33 deletions
diff --git a/src/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java b/src/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java
index 5a357da44..0bf770df2 100644
--- a/src/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java
+++ b/src/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java
@@ -34,7 +34,7 @@ public class DownloadedEpisodesListAdapter extends BaseAdapter {
}
@Override
- public Object getItem(int position) {
+ public FeedItem getItem(int position) {
return itemAccess.getItem(position);
}
diff --git a/src/de/danoeh/antennapod/dialog/FeedItemDialog.java b/src/de/danoeh/antennapod/dialog/FeedItemDialog.java
index 932f9aec9..25458399b 100644
--- a/src/de/danoeh/antennapod/dialog/FeedItemDialog.java
+++ b/src/de/danoeh/antennapod/dialog/FeedItemDialog.java
@@ -33,9 +33,9 @@ import de.danoeh.antennapod.util.QueueAccess;
import de.danoeh.antennapod.util.ShownotesProvider;
import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler;
import org.apache.commons.lang3.StringEscapeUtils;
-import org.shredzone.flattr4j.model.User;
import java.util.Collection;
+import java.util.List;
import java.util.concurrent.Callable;
/**
@@ -193,7 +193,6 @@ public class FeedItemDialog extends Dialog {
}
-
private final FeedItemMenuHandler.MenuInterface popupMenuInterface = new FeedItemMenuHandler.MenuInterface() {
@Override
public void setItemVisibility(int id, boolean visible) {
@@ -306,18 +305,49 @@ public class FeedItemDialog extends Dialog {
loadTask.execute();
}
+ /**
+ * Convenience method that calls setQueue() and setItemFromCollection() with
+ * the given arguments.
+ *
+ * @return true if one of the calls to setItemFromCollection returned true,
+ * false otherwise.
+ */
+ public boolean updateContent(QueueAccess queue, List<FeedItem>... collections) {
+ setQueue(queue);
+
+ boolean setItemFromCollectionResult = false;
+ if (collections != null) {
+ for (List<FeedItem> list : collections) {
+ setItemFromCollectionResult |= setItemFromCollection(list);
+ }
+ }
+ if (isShowing()) {
+ updateMenuAppearance();
+ }
+
+ return setItemFromCollectionResult;
+ }
+
+
public void setItem(FeedItem item) {
if (item == null) throw new IllegalArgumentException("item = null");
this.item = item;
}
- public void setItemFromCollection(Collection<FeedItem> items) {
+ /**
+ * Finds the FeedItem of this dialog in a collection and updates its state from that
+ * collection.
+ *
+ * @return true if the FeedItem was found, false otherwise.
+ */
+ public boolean setItemFromCollection(Collection<FeedItem> items) {
for (FeedItem item : items) {
if (item.getId() == this.item.getId()) {
setItem(item);
- break;
+ return true;
}
}
+ return false;
}
public void setQueue(QueueAccess queue) {
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<FeedItem> 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<Void, Void, List<FeedItem>> {
+ private class ItemLoader extends AsyncTask<Void, Void, Object[]> {
@Override
protected void onPreExecute() {
@@ -140,11 +169,12 @@ public class CompletedDownloadsFragment extends ListFragment {
}
@Override
- protected void onPostExecute(List<FeedItem> feedItems) {
- super.onPostExecute(feedItems);
+ protected void onPostExecute(Object[] results) {
+ super.onPostExecute(results);
setListShown(true);
- if (feedItems != null) {
- items = feedItems;
+ if (results != null) {
+ items = (List<FeedItem>) 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<FeedItem> 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);
}
}
diff --git a/src/de/danoeh/antennapod/service/download/DownloadService.java b/src/de/danoeh/antennapod/service/download/DownloadService.java
index c7f3b8573..d8d112663 100644
--- a/src/de/danoeh/antennapod/service/download/DownloadService.java
+++ b/src/de/danoeh/antennapod/service/download/DownloadService.java
@@ -357,7 +357,7 @@ public class DownloadService extends Service {
if (notificationCompatBuilder != null) {
notificationCompatBuilder.setContentTitle(contentTitle);
notificationCompatBuilder.setContentText(downloadsLeft);
- return notificationCompatBuilder.getNotification();
+ return notificationCompatBuilder.build();
}
}
return null;
@@ -525,9 +525,9 @@ public class DownloadService extends Service {
R.drawable.stat_notify_sync)
)
.setContentIntent(
- PendingIntent.getActivity(this, 0, intent, 0)
+ PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
)
- .setAutoCancel(true).getNotification();
+ .setAutoCancel(true).build();
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(REPORT_ID, notification);
} else {