diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java | 58 |
1 files changed, 35 insertions, 23 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java index 544bdfc43..d81d18640 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java @@ -1,7 +1,6 @@ package de.danoeh.antennapod.fragment; import android.os.Bundle; -import android.os.Handler; import android.support.v4.app.ListFragment; import android.util.Log; import android.view.View; @@ -12,7 +11,8 @@ import java.util.List; import de.danoeh.antennapod.R; import de.danoeh.antennapod.adapter.DownloadlistAdapter; -import de.danoeh.antennapod.core.asynctask.DownloadObserver; +import de.danoeh.antennapod.core.event.DownloadEvent; +import de.danoeh.antennapod.core.event.DownloaderUpdate; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.DownloadRequest; @@ -20,25 +20,18 @@ import de.danoeh.antennapod.core.service.download.Downloader; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.storage.DownloadRequester; +import de.greenrobot.event.EventBus; /** * Displays all running downloads and provides actions to cancel them */ public class RunningDownloadsFragment extends ListFragment { + private static final String TAG = "RunningDownloadsFrag"; - private DownloadObserver downloadObserver; + private DownloadlistAdapter adapter; private List<Downloader> downloaderList; - - @Override - public void onDetach() { - super.onDetach(); - if (downloadObserver != null) { - downloadObserver.onPause(); - } - } - @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); @@ -49,20 +42,39 @@ public class RunningDownloadsFragment extends ListFragment { final int vertPadding = getResources().getDimensionPixelSize(R.dimen.list_vertical_padding); lv.setPadding(0, vertPadding, 0, vertPadding); - final DownloadlistAdapter downloadlistAdapter = new DownloadlistAdapter(getActivity(), itemAccess); - setListAdapter(downloadlistAdapter); + adapter = new DownloadlistAdapter(getActivity(), itemAccess); + setListAdapter(adapter); + } - downloadObserver = new DownloadObserver(getActivity(), new Handler(), new DownloadObserver.Callback() { - @Override - public void onContentChanged(List<Downloader> downloaderList) { - Log.d(TAG, "onContentChanged: downloaderList.size() == " + downloaderList.size()); - RunningDownloadsFragment.this.downloaderList = downloaderList; - downloadlistAdapter.notifyDataSetChanged(); - } - }); - downloadObserver.onResume(); + @Override + public void onResume() { + super.onResume(); + EventBus.getDefault().registerSticky(this); } + @Override + public void onPause() { + super.onPause(); + EventBus.getDefault().unregister(this); + } + + @Override + public void onDestroy() { + super.onDestroy(); + setListAdapter(null); + adapter = null; + } + + public void onEvent(DownloadEvent event) { + Log.d(TAG, "onEvent() called with: " + "event = [" + event + "]"); + DownloaderUpdate update = event.update; + downloaderList = update.downloaders; + if (adapter != null) { + adapter.notifyDataSetChanged(); + } + } + + private DownloadlistAdapter.ItemAccess itemAccess = new DownloadlistAdapter.ItemAccess() { @Override public int getCount() { |