summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java')
-rw-r--r--src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java57
1 files changed, 48 insertions, 9 deletions
diff --git a/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java b/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java
index 1e4140b7b..a8627f12e 100644
--- a/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java
+++ b/src/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java
@@ -4,12 +4,17 @@ import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.os.Handler;
import android.support.v4.app.ListFragment;
import android.view.View;
import de.danoeh.antennapod.adapter.ActionButtonCallback;
+import de.danoeh.antennapod.adapter.DefaultActionButtonCallback;
import de.danoeh.antennapod.adapter.InternalFeedItemlistAdapter;
+import de.danoeh.antennapod.asynctask.DownloadObserver;
import de.danoeh.antennapod.feed.EventDistributor;
import de.danoeh.antennapod.feed.FeedItem;
+import de.danoeh.antennapod.feed.FeedMedia;
+import de.danoeh.antennapod.service.download.Downloader;
import de.danoeh.antennapod.storage.DBReader;
import de.danoeh.antennapod.util.QueueAccess;
@@ -28,6 +33,9 @@ public class PlaybackHistoryFragment extends ListFragment {
private AtomicReference<Activity> activity = new AtomicReference<Activity>();
+ private DownloadObserver downloadObserver;
+ private List<Downloader> downloaderList;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -56,12 +64,19 @@ public class PlaybackHistoryFragment extends ListFragment {
adapter = null;
viewsCreated = false;
activity.set(null);
+ if (downloadObserver != null) {
+ downloadObserver.onPause();
+ }
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.activity.set(activity);
+ if (downloadObserver != null) {
+ downloadObserver.setActivity(activity);
+ downloadObserver.onResume();
+ }
if (viewsCreated && itemsLoaded) {
onFragmentLoaded();
}
@@ -88,14 +103,32 @@ public class PlaybackHistoryFragment extends ListFragment {
private void onFragmentLoaded() {
if (adapter == null) {
- adapter = new InternalFeedItemlistAdapter(getActivity(), itemAccess, actionButtonCallback, true);
+ adapter = new InternalFeedItemlistAdapter(getActivity(), itemAccess, new DefaultActionButtonCallback(activity.get()), true);
setListAdapter(adapter);
+ downloadObserver = new DownloadObserver(activity.get(), new Handler(), downloadObserverCallback);
+ downloadObserver.onResume();
}
setListShown(true);
adapter.notifyDataSetChanged();
-
}
+ private DownloadObserver.Callback downloadObserverCallback = new DownloadObserver.Callback() {
+ @Override
+ public void onContentChanged() {
+ if (adapter != null) {
+ adapter.notifyDataSetChanged();
+ }
+ }
+
+ @Override
+ public void onDownloadDataAvailable(List<Downloader> downloaderList) {
+ PlaybackHistoryFragment.this.downloaderList = downloaderList;
+ if (adapter != null) {
+ adapter.notifyDataSetChanged();
+ }
+ }
+ };
+
private InternalFeedItemlistAdapter.ItemAccess itemAccess = new InternalFeedItemlistAdapter.ItemAccess() {
@Override
public boolean isInQueue(FeedItem item) {
@@ -103,6 +136,19 @@ public class PlaybackHistoryFragment extends ListFragment {
}
@Override
+ public int getItemDownloadProgressPercent(FeedItem item) {
+ if (downloaderList != null) {
+ for (Downloader downloader : downloaderList) {
+ if (downloader.getDownloadRequest().getFeedfileType() == FeedMedia.FEEDFILETYPE_FEEDMEDIA
+ && downloader.getDownloadRequest().getFeedfileId() == item.getMedia().getId()) {
+ return downloader.getDownloadRequest().getProgressPercent();
+ }
+ }
+ }
+ return 0;
+ }
+
+ @Override
public int getCount() {
return (playbackHistory != null) ? playbackHistory.size() : 0;
}
@@ -113,13 +159,6 @@ public class PlaybackHistoryFragment extends ListFragment {
}
};
- private ActionButtonCallback actionButtonCallback = new ActionButtonCallback() {
- @Override
- public void onActionButtonPressed(FeedItem item) {
-
- }
- };
-
private ItemLoader itemLoader;
private void startItemLoader() {