summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/asynctask
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2013-03-10 20:42:55 +0100
committerdaniel oeh <daniel.oeh@gmail.com>2013-03-10 20:42:55 +0100
commitceeb4c96120d640828f6b30ce605d297d0a93d46 (patch)
treef6931afa07aae2cddc934f1f89f5aecbaeed9d90 /src/de/danoeh/antennapod/asynctask
parentba1c434b1d4a89fd9c3706338bd0e1cda14e03b4 (diff)
downloadAntennaPod-ceeb4c96120d640828f6b30ce605d297d0a93d46.zip
Removed DownloadObserver
Diffstat (limited to 'src/de/danoeh/antennapod/asynctask')
-rw-r--r--src/de/danoeh/antennapod/asynctask/DownloadObserver.java242
1 files changed, 0 insertions, 242 deletions
diff --git a/src/de/danoeh/antennapod/asynctask/DownloadObserver.java b/src/de/danoeh/antennapod/asynctask/DownloadObserver.java
deleted file mode 100644
index 40ab869f3..000000000
--- a/src/de/danoeh/antennapod/asynctask/DownloadObserver.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*package de.danoeh.antennapod.asynctask;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import android.app.DownloadManager;
-import android.content.Context;
-import android.database.Cursor;
-import android.os.AsyncTask;
-import android.os.Handler;
-import android.util.Log;
-import de.danoeh.antennapod.feed.FeedFile;
-import de.danoeh.antennapod.storage.DownloadRequester;
-import de.danoeh.antennapod.AppConfig;
-import de.danoeh.antennapod.R;
-
-*//** Observes the status of a specific Download *//*
-public class DownloadObserver{
- *//******
- private static final String TAG = "DownloadObserver";
-
- /** Types of downloads to observe. *//*
- public static final int TYPE_FEED = 0;
- public static final int TYPE_IMAGE = 1;
- public static final int TYPE_MEDIA = 2;
-
- *//** Error codes *//*
- public static final int ALREADY_DOWNLOADED = 1;
- public static final int NO_DOWNLOAD_FOUND = 2;
-
- private final long DEFAULT_WAITING_INTERVALL = 1000L;
-
- private DownloadRequester requester;
- private Context context;
- private List<DownloadStatus> statusList;
- private List<DownloadObserver.Callback> observer;
- private Handler contentChanger;
-
- public DownloadObserver(Context context) {
- super();
- this.context = context;
- requester = DownloadRequester.getInstance();
- statusList = new CopyOnWriteArrayList<DownloadStatus>();
- observer = Collections
- .synchronizedList(new ArrayList<DownloadObserver.Callback>());
- contentChanger = new Handler();
- }
-
- @Override
- protected void onCancelled() {
- if (AppConfig.DEBUG)
- Log.d(TAG, "Task was cancelled.");
- statusList.clear();
- for (DownloadObserver.Callback callback : observer) {
- callback.onFinish();
- }
- }
-
- @Override
- protected void onPostExecute(Void result) {
- if (AppConfig.DEBUG)
- Log.d(TAG, "Background task has finished");
- statusList.clear();
- for (DownloadObserver.Callback callback : observer) {
- callback.onFinish();
- }
- }
-
- protected Void doInBackground(Void... params) {
- if (AppConfig.DEBUG)
- Log.d(TAG, "Background Task started.");
- while (downloadsLeft() && !isCancelled()) {
- refreshStatuslist();
- publishProgress();
- try {
- Thread.sleep(DEFAULT_WAITING_INTERVALL);
- } catch (InterruptedException e) {
- Log.w(TAG, "Thread was interrupted while waiting.");
- }
- }
- if (AppConfig.DEBUG)
- Log.d(TAG, "Background Task finished.");
- return null;
- }
-
- @Override
- protected void onProgressUpdate(Void... values) {
- for (DownloadObserver.Callback callback : observer) {
- callback.onProgressUpdate();
- }
- }
-
- private void refreshStatuslist() {
- final ArrayList<DownloadStatus> unhandledItems = new ArrayList<DownloadStatus>(
- statusList);
-
- Cursor cursor = getDownloadCursor();
- if (cursor.moveToFirst()) {
- do {
- long downloadId = getDownloadStatus(cursor,
- DownloadManager.COLUMN_ID);
- FeedFile feedFile = requester.getFeedFile(downloadId);
- if (feedFile != null) {
- DownloadStatus status = findDownloadStatus(feedFile);
-
- if (status == null) {
- status = new DownloadStatus(feedFile);
- final DownloadStatus statusToAdd = status;
- contentChanger.post(new Runnable() {
- @Override
- public void run() {
- statusList.add(statusToAdd);
- publishProgress();
- }
- });
- } else {
- unhandledItems.remove(status);
- }
-
- // refresh status
- int statusId = getDownloadStatus(cursor,
- DownloadManager.COLUMN_STATUS);
- getDownloadProgress(cursor, status);
- switch (statusId) {
- case DownloadManager.STATUS_SUCCESSFUL:
- status.statusMsg = R.string.download_successful;
- status.successful = true;
- status.done = true;
- case DownloadManager.STATUS_RUNNING:
- status.statusMsg = R.string.download_running;
- break;
- case DownloadManager.STATUS_FAILED:
- status.statusMsg = R.string.download_failed;
- requester.notifyDownloadService(context);
- status.successful = false;
- status.done = true;
- status.reason = getDownloadStatus(cursor,
- DownloadManager.COLUMN_REASON);
- break;
- case DownloadManager.STATUS_PENDING:
- status.statusMsg = R.string.download_pending;
- break;
- default:
- status.done = true;
- status.successful = false;
- status.statusMsg = R.string.download_cancelled_msg;
- requester.notifyDownloadService(context);
- }
- }
- } while (cursor.moveToNext());
- }
- cursor.close();
- contentChanger.post(new Runnable() {
-
- @Override
- public void run() {
- // remove unhandled items from statuslist
- for (DownloadStatus status : unhandledItems) {
- statusList.remove(status);
- }
- publishProgress();
- }
- });
-
- }
-
- *//** Request a cursor with all running Feedfile downloads *//*
- private Cursor getDownloadCursor() {
- // Collect download ids
-
- ArrayList<Long> ids = new ArrayList<Long>();
- for (FeedFile download : requester.getDownloads()) {
- ids.add(download.getDownloadId());
- }
- DownloadManager.Query query = new DownloadManager.Query();
- long[] pIds = new long[ids.size()];
- for (int x = 0; x < ids.size(); x++) {
- pIds[x] = ids.get(x);
- }
- query.setFilterById(pIds);
- DownloadManager manager = (DownloadManager) context
- .getSystemService(Context.DOWNLOAD_SERVICE);
-
- Cursor result = manager.query(query);
- return result;
- }
-
- *//** Return value of a specific column *//*
- private int getDownloadStatus(Cursor c, String column) {
- int status = c.getInt(c.getColumnIndex(column));
- return status;
- }
-
- private void getDownloadProgress(Cursor c, DownloadStatus status) {
- status.size = c.getLong(c
- .getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
- status.soFar = c
- .getLong(c
- .getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
- status.progressPercent = (int) (((double) status.soFar / (double) status.size) * 100);
- }
-
- public Context getContext() {
- return context;
- }
-
- *//** Find a DownloadStatus entry by its FeedFile *//*
- public DownloadStatus findDownloadStatus(FeedFile f) {
- for (DownloadStatus status : statusList) {
- if (status.feedfile == f) {
- return status;
- }
- }
- return null;
- }
-
- public List<DownloadStatus> getStatusList() {
- return statusList;
- }
-
- private boolean downloadsLeft() {
- return !requester.hasNoDownloads();
- }
-
- public void registerCallback(DownloadObserver.Callback callback) {
- observer.add(callback);
- }
-
- public void unregisterCallback(DownloadObserver.Callback callback) {
- observer.remove(callback);
- }
-
- public interface Callback {
- public void onProgressUpdate();
-
- public void onFinish();
- }
-
-}
-*/ \ No newline at end of file