summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/danoeh/antennapod')
-rw-r--r--src/de/danoeh/antennapod/activity/AddFeedActivity.java2
-rw-r--r--src/de/danoeh/antennapod/activity/DownloadActivity.java2
-rw-r--r--src/de/danoeh/antennapod/activity/MainActivity.java2
-rw-r--r--src/de/danoeh/antennapod/fragment/FeedlistFragment.java2
-rw-r--r--src/de/danoeh/antennapod/fragment/ItemlistFragment.java2
-rw-r--r--src/de/danoeh/antennapod/service/download/DownloadService.java (renamed from src/de/danoeh/antennapod/service/DownloadService.java)51
-rw-r--r--src/de/danoeh/antennapod/service/download/Downloader.java51
-rw-r--r--src/de/danoeh/antennapod/storage/DownloadRequester.java2
-rw-r--r--src/de/danoeh/antennapod/util/menuhandler/FeedMenuHandler.java2
9 files changed, 107 insertions, 9 deletions
diff --git a/src/de/danoeh/antennapod/activity/AddFeedActivity.java b/src/de/danoeh/antennapod/activity/AddFeedActivity.java
index a5185bf9b..c17ef4996 100644
--- a/src/de/danoeh/antennapod/activity/AddFeedActivity.java
+++ b/src/de/danoeh/antennapod/activity/AddFeedActivity.java
@@ -23,7 +23,7 @@ import de.danoeh.antennapod.R;
import de.danoeh.antennapod.asynctask.DownloadStatus;
import de.danoeh.antennapod.feed.Feed;
import de.danoeh.antennapod.feed.FeedManager;
-import de.danoeh.antennapod.service.DownloadService;
+import de.danoeh.antennapod.service.download.DownloadService;
import de.danoeh.antennapod.storage.DownloadRequester;
import de.danoeh.antennapod.util.ConnectionTester;
import de.danoeh.antennapod.util.DownloadError;
diff --git a/src/de/danoeh/antennapod/activity/DownloadActivity.java b/src/de/danoeh/antennapod/activity/DownloadActivity.java
index 363084a81..4ec7a9859 100644
--- a/src/de/danoeh/antennapod/activity/DownloadActivity.java
+++ b/src/de/danoeh/antennapod/activity/DownloadActivity.java
@@ -20,7 +20,7 @@ import de.danoeh.antennapod.R;
import de.danoeh.antennapod.adapter.DownloadlistAdapter;
import de.danoeh.antennapod.asynctask.DownloadObserver;
import de.danoeh.antennapod.asynctask.DownloadStatus;
-import de.danoeh.antennapod.service.DownloadService;
+import de.danoeh.antennapod.service.download.DownloadService;
import de.danoeh.antennapod.storage.DownloadRequester;
/**
diff --git a/src/de/danoeh/antennapod/activity/MainActivity.java b/src/de/danoeh/antennapod/activity/MainActivity.java
index eab7b6ea0..d6db17740 100644
--- a/src/de/danoeh/antennapod/activity/MainActivity.java
+++ b/src/de/danoeh/antennapod/activity/MainActivity.java
@@ -23,8 +23,8 @@ import de.danoeh.antennapod.feed.FeedManager;
import de.danoeh.antennapod.fragment.FeedlistFragment;
import de.danoeh.antennapod.fragment.QueueFragment;
import de.danoeh.antennapod.fragment.UnreadItemlistFragment;
-import de.danoeh.antennapod.service.DownloadService;
import de.danoeh.antennapod.service.PlaybackService;
+import de.danoeh.antennapod.service.download.DownloadService;
import de.danoeh.antennapod.storage.DownloadRequester;
import de.danoeh.antennapod.util.StorageUtils;
import de.danoeh.antennapod.AppConfig;
diff --git a/src/de/danoeh/antennapod/fragment/FeedlistFragment.java b/src/de/danoeh/antennapod/fragment/FeedlistFragment.java
index b6abdeab7..26b8f436c 100644
--- a/src/de/danoeh/antennapod/fragment/FeedlistFragment.java
+++ b/src/de/danoeh/antennapod/fragment/FeedlistFragment.java
@@ -5,7 +5,7 @@ import de.danoeh.antennapod.adapter.FeedlistAdapter;
import de.danoeh.antennapod.asynctask.FeedRemover;
import de.danoeh.antennapod.dialog.ConfirmationDialog;
import de.danoeh.antennapod.feed.*;
-import de.danoeh.antennapod.service.DownloadService;
+import de.danoeh.antennapod.service.download.DownloadService;
import de.danoeh.antennapod.storage.DownloadRequester;
import de.danoeh.antennapod.util.menuhandler.FeedMenuHandler;
import de.danoeh.antennapod.AppConfig;
diff --git a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
index ba810507d..e8df221f2 100644
--- a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
+++ b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
@@ -27,7 +27,7 @@ import de.danoeh.antennapod.adapter.FeedItemlistAdapter;
import de.danoeh.antennapod.feed.Feed;
import de.danoeh.antennapod.feed.FeedItem;
import de.danoeh.antennapod.feed.FeedManager;
-import de.danoeh.antennapod.service.DownloadService;
+import de.danoeh.antennapod.service.download.DownloadService;
import de.danoeh.antennapod.storage.DownloadRequester;
import de.danoeh.antennapod.util.EpisodeFilter;
import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler;
diff --git a/src/de/danoeh/antennapod/service/DownloadService.java b/src/de/danoeh/antennapod/service/download/DownloadService.java
index f1b056499..fba955e59 100644
--- a/src/de/danoeh/antennapod/service/DownloadService.java
+++ b/src/de/danoeh/antennapod/service/download/DownloadService.java
@@ -3,12 +3,13 @@
* to complete, then stops
* */
-package de.danoeh.antennapod.service;
+package de.danoeh.antennapod.service.download;
import java.io.File;
import java.io.IOException;
import java.lang.Thread.UncaughtExceptionHandler;
import java.util.ArrayList;
+import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
@@ -56,6 +57,8 @@ import android.os.Debug;
import android.os.Handler;
import android.os.Message;
import android.os.Messenger;
+import android.os.Parcel;
+import android.os.Parcelable;
import android.preference.PreferenceManager;
public class DownloadService extends Service {
@@ -95,6 +98,8 @@ public class DownloadService extends Service {
private DownloadObserver downloadObserver;
+ private List<DownloadStatus> downloads;
+
private volatile boolean shutdownInitiated = false;
/** True if service is running. */
public static boolean isRunning = false;
@@ -126,6 +131,7 @@ public class DownloadService extends Service {
Log.d(TAG, "Service started");
isRunning = true;
completedDownloads = new ArrayList<DownloadStatus>();
+ downloads = new ArrayList<DownloadStatus>();
registerReceiver(downloadReceiver, createIntentFilter());
registerReceiver(onDownloadsChanged, new IntentFilter(
ACTION_NOTIFY_DOWNLOADS_CHANGED));
@@ -428,7 +434,7 @@ public class DownloadService extends Service {
}
/** Check if there's something else to download, otherwise stop */
- private void queryDownloads() {
+ void queryDownloads() {
int numOfDownloads = requester.getNumberOfDownloads();
if (!shutdownInitiated && numOfDownloads == 0) {
shutdownInitiated = true;
@@ -660,6 +666,47 @@ public class DownloadService extends Service {
}
}
+ /** Is used to request a new download. */
+ public static class Request implements Parcelable {
+ private String destination;
+ private String source;
+
+ public Request(String destination, String source) {
+ super();
+ this.destination = destination;
+ this.source = source;
+ }
+
+ private Request(Parcel in) {
+ destination = in.readString();
+ source = in.readString();
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(destination);
+ dest.writeString(source);
+ }
+
+ public static final Parcelable.Creator<Request> CREATOR = new Parcelable.Creator<Request>() {
+ public Request createFromParcel(Parcel in) {
+ return new Request(in);
+ }
+
+ public Request[] newArray(int size) {
+ return new Request[size];
+ }
+ };
+
+ }
+
+
+
public DownloadObserver getDownloadObserver() {
return downloadObserver;
}
diff --git a/src/de/danoeh/antennapod/service/download/Downloader.java b/src/de/danoeh/antennapod/service/download/Downloader.java
new file mode 100644
index 000000000..6eb2562f3
--- /dev/null
+++ b/src/de/danoeh/antennapod/service/download/Downloader.java
@@ -0,0 +1,51 @@
+package de.danoeh.antennapod.service.download;
+
+import android.os.Handler;
+
+/** Downloads files */
+public abstract class Downloader extends Thread {
+ private static final String TAG = "Downloader";
+ private Handler handler;
+ private DownloadService downloadService;
+
+ protected boolean finished;
+
+ protected String destination;
+ protected String source;
+
+
+
+ public Downloader(DownloadService downloadService, String destination, String source) {
+ super();
+ this.downloadService = downloadService;
+ this.destination = destination;
+ this.source = source;
+ handler = new Handler();
+ }
+
+ /**
+ * This method must be called when the download was completed, failed,
+ * or was cancelled
+ */
+ protected void finish() {
+ if (!finished) {
+ finished = true;
+ handler.post(new Runnable() {
+
+ @Override
+ public void run() {
+ downloadService.queryDownloads();
+ }
+
+ });
+ }
+ }
+
+ protected abstract void download();
+
+ @Override
+ public final void run() {
+ download();
+ }
+
+} \ No newline at end of file
diff --git a/src/de/danoeh/antennapod/storage/DownloadRequester.java b/src/de/danoeh/antennapod/storage/DownloadRequester.java
index 5e2af1ba5..ca81ed4a0 100644
--- a/src/de/danoeh/antennapod/storage/DownloadRequester.java
+++ b/src/de/danoeh/antennapod/storage/DownloadRequester.java
@@ -19,7 +19,7 @@ import de.danoeh.antennapod.feed.Feed;
import de.danoeh.antennapod.feed.FeedFile;
import de.danoeh.antennapod.feed.FeedImage;
import de.danoeh.antennapod.feed.FeedMedia;
-import de.danoeh.antennapod.service.DownloadService;
+import de.danoeh.antennapod.service.download.DownloadService;
import de.danoeh.antennapod.util.NumberGenerator;
import de.danoeh.antennapod.util.URLChecker;
diff --git a/src/de/danoeh/antennapod/util/menuhandler/FeedMenuHandler.java b/src/de/danoeh/antennapod/util/menuhandler/FeedMenuHandler.java
index 38adc0b50..6bb1478d6 100644
--- a/src/de/danoeh/antennapod/util/menuhandler/FeedMenuHandler.java
+++ b/src/de/danoeh/antennapod/util/menuhandler/FeedMenuHandler.java
@@ -15,7 +15,7 @@ import de.danoeh.antennapod.asynctask.FlattrClickWorker;
import de.danoeh.antennapod.feed.Feed;
import de.danoeh.antennapod.feed.FeedItem;
import de.danoeh.antennapod.feed.FeedManager;
-import de.danoeh.antennapod.service.DownloadService;
+import de.danoeh.antennapod.service.download.DownloadService;
import de.danoeh.antennapod.storage.DownloadRequester;
import de.danoeh.antennapod.util.ShareUtils;
import de.danoeh.antennapod.AppConfig;