diff options
Diffstat (limited to 'src/de/danoeh/antennapod/activity/DownloadLogActivity.java')
-rw-r--r-- | src/de/danoeh/antennapod/activity/DownloadLogActivity.java | 56 |
1 files changed, 48 insertions, 8 deletions
diff --git a/src/de/danoeh/antennapod/activity/DownloadLogActivity.java b/src/de/danoeh/antennapod/activity/DownloadLogActivity.java index 232a7ba1d..ec5b0c980 100644 --- a/src/de/danoeh/antennapod/activity/DownloadLogActivity.java +++ b/src/de/danoeh/antennapod/activity/DownloadLogActivity.java @@ -1,35 +1,39 @@ package de.danoeh.antennapod.activity; +import android.os.AsyncTask; import android.os.Bundle; +import android.util.Log; import com.actionbarsherlock.app.SherlockListActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.adapter.DownloadLogAdapter; import de.danoeh.antennapod.feed.EventDistributor; -import de.danoeh.antennapod.feed.FeedManager; import de.danoeh.antennapod.preferences.UserPreferences; +import de.danoeh.antennapod.service.download.DownloadStatus; +import de.danoeh.antennapod.storage.DBReader; + +import java.util.List; /** - * Displays completed and failed downloads in a list. The data comes from the - * FeedManager. + * Displays completed and failed downloads in a list. */ public class DownloadLogActivity extends SherlockListActivity { private static final String TAG = "DownloadLogActivity"; - DownloadLogAdapter dla; - FeedManager manager; + private List<DownloadStatus> downloadLog; + private DownloadLogAdapter dla; @Override protected void onCreate(Bundle savedInstanceState) { setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); - manager = FeedManager.getInstance(); - dla = new DownloadLogAdapter(this); + dla = new DownloadLogAdapter(this, itemAccess); getSupportActionBar().setDisplayHomeAsUpEnabled(true); setListAdapter(dla); + loadData(); } @Override @@ -62,12 +66,48 @@ public class DownloadLogActivity extends SherlockListActivity { return true; } + private void loadData() { + AsyncTask<Void, Void, List<DownloadStatus>> loadTask = new AsyncTask<Void, Void, List<DownloadStatus>>() { + @Override + protected List<DownloadStatus> doInBackground(Void... voids) { + return DBReader.getDownloadLog(DownloadLogActivity.this); + } + + @Override + protected void onPostExecute(List<DownloadStatus> downloadStatuses) { + super.onPostExecute(downloadStatuses); + if (downloadStatuses != null) { + downloadLog = downloadStatuses; + if (dla != null) { + dla.notifyDataSetChanged(); + } + } else { + Log.e(TAG, "Could not load download log"); + } + } + }; + loadTask.execute(); + } + + private DownloadLogAdapter.ItemAccess itemAccess = new DownloadLogAdapter.ItemAccess() { + + @Override + public int getCount() { + return (downloadLog != null) ? downloadLog.size() : 0; + } + + @Override + public DownloadStatus getItem(int position) { + return (downloadLog != null) ? downloadLog.get(position) : null; + } + }; + private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { if ((arg & EventDistributor.DOWNLOADLOG_UPDATE) != 0) { - dla.notifyDataSetChanged(); + loadData(); } } }; |