summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-06-19 21:21:45 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-06-19 21:21:45 +0200
commit22918164c733c1bc5af5d97716527f62fad2db58 (patch)
tree63017e2c0c1c8f0039952a26e40e498c9c6c970a /src
parent9533323167e72dd3ed76f2cca50eb29946e785af (diff)
downloadAntennaPod-22918164c733c1bc5af5d97716527f62fad2db58.zip
Feeds can now be removed in the background
Diffstat (limited to 'src')
-rw-r--r--src/de/podfetcher/asynctask/FeedRemover.java62
-rw-r--r--src/de/podfetcher/fragment/FeedlistFragment.java11
2 files changed, 71 insertions, 2 deletions
diff --git a/src/de/podfetcher/asynctask/FeedRemover.java b/src/de/podfetcher/asynctask/FeedRemover.java
new file mode 100644
index 000000000..504de95c0
--- /dev/null
+++ b/src/de/podfetcher/asynctask/FeedRemover.java
@@ -0,0 +1,62 @@
+package de.podfetcher.asynctask;
+
+import de.podfetcher.feed.Feed;
+import de.podfetcher.feed.FeedManager;
+import android.app.ProgressDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnCancelListener;
+import android.os.AsyncTask;
+
+/** Removes a feed in the background. */
+public class FeedRemover extends AsyncTask<Feed, Void, Void> {
+ Context context;
+ ProgressDialog dialog;
+
+ public FeedRemover(Context context) {
+ super();
+ this.context = context;
+ }
+
+ @Override
+ protected Void doInBackground(Feed... params) {
+ FeedManager manager = FeedManager.getInstance();
+ for (Feed feed : params) {
+ manager.deleteFeed(context, feed);
+ if (isCancelled()) {
+ break;
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ protected void onCancelled() {
+ dialog.dismiss();
+ }
+
+ @Override
+ protected void onPostExecute(Void result) {
+ dialog.dismiss();
+ }
+
+ @Override
+ protected void onPreExecute() {
+ dialog = new ProgressDialog(context);
+ dialog.setMessage("Removing Feed");
+ dialog.setOnCancelListener(new OnCancelListener() {
+
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ cancel(true);
+
+ }
+
+ });
+ dialog.show();
+ }
+
+
+
+}
diff --git a/src/de/podfetcher/fragment/FeedlistFragment.java b/src/de/podfetcher/fragment/FeedlistFragment.java
index e76bfbe60..1dc925164 100644
--- a/src/de/podfetcher/fragment/FeedlistFragment.java
+++ b/src/de/podfetcher/fragment/FeedlistFragment.java
@@ -4,6 +4,7 @@ import de.podfetcher.R;
import de.podfetcher.feed.*;
import de.podfetcher.activity.*;
import de.podfetcher.adapter.FeedlistAdapter;
+import de.podfetcher.asynctask.FeedRemover;
import de.podfetcher.storage.DownloadRequester;
import de.podfetcher.service.DownloadService;
import android.os.Bundle;
@@ -148,8 +149,14 @@ public class FeedlistFragment extends SherlockListFragment {
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.remove_item:
- manager.deleteFeed(getSherlockActivity(), selectedFeed);
- fla.notifyDataSetChanged();
+ FeedRemover remover = new FeedRemover(getSherlockActivity()){
+ @Override
+ protected void onPostExecute(Void result) {
+ super.onPostExecute(result);
+ fla.notifyDataSetChanged();
+ }
+ };
+ remover.execute(selectedFeed);
break;
}
mode.finish();