summaryrefslogtreecommitdiff
path: root/src/de/danoeh
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-07-18 12:38:49 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-07-18 12:38:49 +0200
commit664a6ccf8ca3d2803bcfe4a8558bb6dbe14015c0 (patch)
treed17e1f8ecf5eb6ef71b334b85324ad74fd0b0139 /src/de/danoeh
parent1bc9285aa52b687a35968573fd2d598f2720c8f2 (diff)
downloadAntennaPod-664a6ccf8ca3d2803bcfe4a8558bb6dbe14015c0.zip
Moved clicking action to main thread
Diffstat (limited to 'src/de/danoeh')
-rw-r--r--src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java83
-rw-r--r--src/de/danoeh/antennapod/util/FeedItemMenuHandler.java5
-rw-r--r--src/de/danoeh/antennapod/util/FeedMenuHandler.java3
-rw-r--r--src/de/danoeh/antennapod/util/FlattrUtils.java35
4 files changed, 102 insertions, 24 deletions
diff --git a/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java b/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
new file mode 100644
index 000000000..339bf18d8
--- /dev/null
+++ b/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
@@ -0,0 +1,83 @@
+package de.danoeh.antennapod.asynctask;
+
+import org.shredzone.flattr4j.exception.FlattrException;
+import org.shredzone.flattr4j.oauth.AccessToken;
+
+import android.content.Context;
+import android.os.AsyncTask;
+import android.util.Log;
+import android.widget.Toast;
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.util.FlattrUtils;
+
+/** Performs a click action in a background thread. */
+public class FlattrClickWorker extends AsyncTask<Void, Void, Void> {
+ protected static final String TAG = "FlattrClickWorker";
+ protected Context context;
+ protected String url;
+ protected String errorMsg;
+ protected int exitCode;
+
+ protected final static int SUCCESS = 0;
+ protected final static int NO_TOKEN = 1;
+ protected final static int FLATTR_ERROR = 2;
+
+ public FlattrClickWorker(Context context, String url) {
+ super();
+ this.context = context;
+ this.url = url;
+ exitCode = SUCCESS;
+ errorMsg = "";
+ }
+
+ protected void onNoAccessToken() {
+ Log.w(TAG, "No access token was available");
+ FlattrUtils.showNoTokenDialog(context, url);
+ }
+
+ protected void onFlattrError() {
+ FlattrUtils.showErrorDialog(context, errorMsg);
+ }
+
+ protected void onSuccess() {
+ Toast toast = Toast.makeText(context.getApplicationContext(),
+ R.string.flattr_click_success, Toast.LENGTH_LONG);
+ toast.show();
+ }
+
+ @Override
+ protected void onPostExecute(Void result) {
+ Log.d(TAG, "Exit code was " + exitCode);
+ switch (exitCode) {
+ case NO_TOKEN:
+ onNoAccessToken();
+ break;
+ case FLATTR_ERROR:
+ onFlattrError();
+ break;
+ case SUCCESS:
+ onSuccess();
+ break;
+ }
+ }
+
+ @Override
+ protected Void doInBackground(Void... params) {
+ Log.d(TAG, "Starting background work");
+ AccessToken token = FlattrUtils.retrieveToken();
+ if (token != null) {
+ try {
+ FlattrUtils.clickUrl(token, context, url);
+ } catch (FlattrException e) {
+ e.printStackTrace();
+ exitCode = FLATTR_ERROR;
+ errorMsg = e.getMessage();
+ }
+ } else {
+ exitCode = NO_TOKEN;
+ }
+ return null;
+ }
+
+}
+
diff --git a/src/de/danoeh/antennapod/util/FeedItemMenuHandler.java b/src/de/danoeh/antennapod/util/FeedItemMenuHandler.java
index db99399d6..fad7db30b 100644
--- a/src/de/danoeh/antennapod/util/FeedItemMenuHandler.java
+++ b/src/de/danoeh/antennapod/util/FeedItemMenuHandler.java
@@ -8,10 +8,11 @@ import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.asynctask.FlattrClickWorker;
import de.danoeh.antennapod.feed.FeedItem;
import de.danoeh.antennapod.feed.FeedManager;
import de.danoeh.antennapod.storage.DownloadRequester;
-import de.danoeh.antennapod.R;
/** Handles interactions with the FeedItemMenu. */
public class FeedItemMenuHandler {
@@ -102,7 +103,7 @@ public class FeedItemMenuHandler {
context.startActivity(new Intent(Intent.ACTION_VIEW, uri));
break;
case R.id.support_item:
- FlattrUtils.clickUrl(context, selectedItem.getPaymentLink());
+ new FlattrClickWorker(context, selectedItem.getPaymentLink()).execute();
break;
case R.id.share_link_item:
ShareUtils.shareFeedItemLink(context, selectedItem);
diff --git a/src/de/danoeh/antennapod/util/FeedMenuHandler.java b/src/de/danoeh/antennapod/util/FeedMenuHandler.java
index 10afc687c..85bca3e26 100644
--- a/src/de/danoeh/antennapod/util/FeedMenuHandler.java
+++ b/src/de/danoeh/antennapod/util/FeedMenuHandler.java
@@ -11,6 +11,7 @@ import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import de.danoeh.antennapod.activity.FeedInfoActivity;
+import de.danoeh.antennapod.asynctask.FlattrClickWorker;
import de.danoeh.antennapod.feed.Feed;
import de.danoeh.antennapod.feed.FeedItem;
import de.danoeh.antennapod.feed.FeedManager;
@@ -68,7 +69,7 @@ public class FeedMenuHandler {
context.startActivity(new Intent(Intent.ACTION_VIEW, uri));
break;
case R.id.support_item:
- FlattrUtils.clickUrl(context, selectedFeed.getPaymentLink());
+ new FlattrClickWorker(context, selectedFeed.getPaymentLink()).execute();
break;
case R.id.share_link_item:
ShareUtils.shareFeedlink(context, selectedFeed);
diff --git a/src/de/danoeh/antennapod/util/FlattrUtils.java b/src/de/danoeh/antennapod/util/FlattrUtils.java
index b8f1d02bc..ccc9347f3 100644
--- a/src/de/danoeh/antennapod/util/FlattrUtils.java
+++ b/src/de/danoeh/antennapod/util/FlattrUtils.java
@@ -17,6 +17,7 @@ import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
+import android.os.AsyncTask;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;
@@ -85,22 +86,14 @@ public class FlattrUtils {
storeToken(null);
}
- public static void clickUrl(Context context, String url) {
+ public static void clickUrl(AccessToken token, Context context, String url)
+ throws FlattrException {
FlattrFactory factory = FlattrFactory.getInstance();
- AccessToken token = retrieveToken();
if (token != null) {
FlattrService fs = factory.createFlattrService(retrieveToken());
- try {
- fs.click(url);
- Toast toast = Toast.makeText(context.getApplicationContext(),
- R.string.flattr_click_success, Toast.LENGTH_LONG);
- toast.show();
- } catch (FlattrException e) {
- e.printStackTrace();
- showErrorDialog(context, e.getMessage());
- }
+ fs.click(url);
} else {
- showNoTokenDialog(context, url);
+ Log.e(TAG, "clickUrl was called with null access token");
}
}
@@ -116,17 +109,16 @@ public class FlattrUtils {
return null;
}
}
-
+
public static void revokeAccessToken(Context context) {
Log.d(TAG, "Revoking access token");
deleteToken();
showRevokeDialog(context);
}
-
-
- //------------------------------------------------ DIALOGS
-
- private static void showRevokeDialog(final Context context) {
+
+ // ------------------------------------------------ DIALOGS
+
+ public static void showRevokeDialog(final Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.access_revoked_title);
builder.setMessage(R.string.access_revoked_info);
@@ -140,7 +132,7 @@ public class FlattrUtils {
builder.create().show();
}
- private static void showNoTokenDialog(final Context context,
+ public static void showNoTokenDialog(final Context context,
final String url) {
Log.d(TAG, "Creating showNoTokenDialog");
AlertDialog.Builder builder = new AlertDialog.Builder(context);
@@ -170,7 +162,7 @@ public class FlattrUtils {
builder.create().show();
}
- private static void showForbiddenDialog(final Context context,
+ public static void showForbiddenDialog(final Context context,
final String url) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.action_forbidden_title);
@@ -199,7 +191,7 @@ public class FlattrUtils {
builder.create().show();
}
- private static void showErrorDialog(final Context context, final String msg) {
+ public static void showErrorDialog(final Context context, final String msg) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.error_label);
builder.setMessage(msg);
@@ -212,4 +204,5 @@ public class FlattrUtils {
});
builder.create().show();
}
+
}