From 1dce5a3061cbb10cc1e945bc5f0e8c63d41c8df6 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Sun, 12 Aug 2012 13:46:24 +0200 Subject: Added confirmation dialog when deleting a feed --- .../antennapod/activity/FeedItemlistActivity.java | 24 +++++++++------ .../danoeh/antennapod/asynctask/FeedRemover.java | 34 ++++++++++++---------- .../antennapod/dialog/ConfirmationDialog.java | 4 +-- src/de/danoeh/antennapod/feed/FeedManager.java | 16 +++++----- .../antennapod/fragment/FeedlistFragment.java | 18 +++++++----- 5 files changed, 54 insertions(+), 42 deletions(-) (limited to 'src') diff --git a/src/de/danoeh/antennapod/activity/FeedItemlistActivity.java b/src/de/danoeh/antennapod/activity/FeedItemlistActivity.java index a65dbbf39..dd670d215 100644 --- a/src/de/danoeh/antennapod/activity/FeedItemlistActivity.java +++ b/src/de/danoeh/antennapod/activity/FeedItemlistActivity.java @@ -1,6 +1,7 @@ package de.danoeh.antennapod.activity; import android.annotation.SuppressLint; +import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; @@ -16,6 +17,7 @@ import com.actionbarsherlock.view.Window; import de.danoeh.antennapod.R; import de.danoeh.antennapod.asynctask.FeedRemover; +import de.danoeh.antennapod.dialog.ConfirmationDialog; import de.danoeh.antennapod.feed.Feed; import de.danoeh.antennapod.feed.FeedManager; import de.danoeh.antennapod.fragment.FeedlistFragment; @@ -88,19 +90,25 @@ public class FeedItemlistActivity extends SherlockFragmentActivity { } else { switch (item.getItemId()) { case R.id.remove_item: - FeedRemover remover = new FeedRemover(this) { + final FeedRemover remover = new FeedRemover( + FeedItemlistActivity.this, feed) { @Override protected void onPostExecute(Void result) { super.onPostExecute(result); finish(); } }; - if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1) { - remover.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, - feed); - } else { - remover.execute(feed); - } + ConfirmationDialog conDialog = new ConfirmationDialog(this, + R.string.remove_feed_label, + R.string.feed_delete_confirmation_msg) { + + @Override + public void onConfirmButtonPressed(DialogInterface dialog) { + dialog.dismiss(); + remover.executeAsync(); + } + }; + conDialog.createNewDialog().show(); break; case R.id.search_item: onSearchRequested(); @@ -120,7 +128,5 @@ public class FeedItemlistActivity extends SherlockFragmentActivity { startSearch(null, false, bundle, false); return true; } - - } diff --git a/src/de/danoeh/antennapod/asynctask/FeedRemover.java b/src/de/danoeh/antennapod/asynctask/FeedRemover.java index 7802b5677..6a83eecef 100644 --- a/src/de/danoeh/antennapod/asynctask/FeedRemover.java +++ b/src/de/danoeh/antennapod/asynctask/FeedRemover.java @@ -9,28 +9,24 @@ import android.content.DialogInterface.OnCancelListener; import android.os.AsyncTask; /** Removes a feed in the background. */ -public class FeedRemover extends AsyncTask { +public class FeedRemover extends AsyncTask { Context context; ProgressDialog dialog; - - public FeedRemover(Context context) { + Feed feed; + + public FeedRemover(Context context, Feed feed) { super(); this.context = context; + this.feed = feed; } @Override - protected Void doInBackground(Feed... params) { + protected Void doInBackground(Void... params) { FeedManager manager = FeedManager.getInstance(); - for (Feed feed : params) { - manager.deleteFeed(context, feed); - if (isCancelled()) { - break; - } - } - + manager.deleteFeed(context, feed); return null; } - + @Override protected void onCancelled() { dialog.dismiss(); @@ -50,13 +46,19 @@ public class FeedRemover extends AsyncTask { @Override public void onCancel(DialogInterface dialog) { cancel(true); - + } - + }); dialog.show(); } - - + + public void executeAsync() { + if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1) { + executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } else { + execute(); + } + } } diff --git a/src/de/danoeh/antennapod/dialog/ConfirmationDialog.java b/src/de/danoeh/antennapod/dialog/ConfirmationDialog.java index a6c741f73..f4890ed53 100644 --- a/src/de/danoeh/antennapod/dialog/ConfirmationDialog.java +++ b/src/de/danoeh/antennapod/dialog/ConfirmationDialog.java @@ -30,7 +30,7 @@ public abstract class ConfirmationDialog { dialog.dismiss(); } - public abstract void onConfirmButtonPressed(); + public abstract void onConfirmButtonPressed(DialogInterface dialog); public final AlertDialog createNewDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(context); @@ -41,7 +41,7 @@ public abstract class ConfirmationDialog { @Override public void onClick(DialogInterface dialog, int which) { - onConfirmButtonPressed(); + onConfirmButtonPressed(dialog); } }); builder.setNegativeButton(R.string.cancel_label, diff --git a/src/de/danoeh/antennapod/feed/FeedManager.java b/src/de/danoeh/antennapod/feed/FeedManager.java index 5d620b831..40774e592 100644 --- a/src/de/danoeh/antennapod/feed/FeedManager.java +++ b/src/de/danoeh/antennapod/feed/FeedManager.java @@ -144,6 +144,14 @@ public class FeedManager { /** Remove a feed with all its items and media files and its image. */ public void deleteFeed(final Context context, final Feed feed) { + contentChanger.post(new Runnable() { + + @Override + public void run() { + feeds.remove(feed); + sendFeedUpdateBroadcast(context); + } + }); dbExec.execute(new Runnable() { @Override @@ -183,14 +191,6 @@ public class FeedManager { adapter.removeFeed(feed); adapter.close(); - contentChanger.post(new Runnable() { - - @Override - public void run() { - feeds.remove(feed); - sendFeedUpdateBroadcast(context); - } - }); } }); diff --git a/src/de/danoeh/antennapod/fragment/FeedlistFragment.java b/src/de/danoeh/antennapod/fragment/FeedlistFragment.java index c923f4b5e..b6abdeab7 100644 --- a/src/de/danoeh/antennapod/fragment/FeedlistFragment.java +++ b/src/de/danoeh/antennapod/fragment/FeedlistFragment.java @@ -3,6 +3,7 @@ package de.danoeh.antennapod.fragment; import de.danoeh.antennapod.activity.*; 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.storage.DownloadRequester; @@ -16,6 +17,7 @@ import android.app.Activity; import android.view.View; import android.view.ViewGroup; import android.view.LayoutInflater; +import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.BroadcastReceiver; @@ -173,19 +175,21 @@ public class FeedlistFragment extends SherlockFragment implements } else { switch (item.getItemId()) { case R.id.remove_item: - FeedRemover remover = new FeedRemover(getSherlockActivity()) { + final FeedRemover remover = new FeedRemover(getSherlockActivity(), selectedFeed) { @Override protected void onPostExecute(Void result) { super.onPostExecute(result); fla.notifyDataSetChanged(); } }; - if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1) { - remover.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, - selectedFeed); - } else { - remover.execute(selectedFeed); - } + ConfirmationDialog conDialog = new ConfirmationDialog(getActivity(), R.string.remove_feed_label, R.string.feed_delete_confirmation_msg){ + + @Override + public void onConfirmButtonPressed(DialogInterface dialog) { + dialog.dismiss(); + remover.executeAsync(); + }}; + conDialog.createNewDialog().show(); break; } } -- cgit v1.2.3