diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2012-07-18 12:38:49 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2012-07-18 12:38:49 +0200 |
commit | 664a6ccf8ca3d2803bcfe4a8558bb6dbe14015c0 (patch) | |
tree | d17e1f8ecf5eb6ef71b334b85324ad74fd0b0139 /src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java | |
parent | 1bc9285aa52b687a35968573fd2d598f2720c8f2 (diff) | |
download | AntennaPod-664a6ccf8ca3d2803bcfe4a8558bb6dbe14015c0.zip |
Moved clicking action to main thread
Diffstat (limited to 'src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java')
-rw-r--r-- | src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java | 83 |
1 files changed, 83 insertions, 0 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; + } + +} + |