diff options
Diffstat (limited to 'src/de/danoeh/antennapod')
-rw-r--r-- | src/de/danoeh/antennapod/activity/AddFeedActivity.java | 2 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/activity/DownloadActivity.java | 2 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/activity/MainActivity.java | 2 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/fragment/FeedlistFragment.java | 2 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/fragment/ItemlistFragment.java | 2 | ||||
-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.java | 51 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/storage/DownloadRequester.java | 2 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/util/menuhandler/FeedMenuHandler.java | 2 |
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; |