package net.dev123.yibo.service.task; import net.dev123.exception.LibException; import net.dev123.mblog.MicroBlog; import net.dev123.yibo.R; import net.dev123.yibo.YiBoApplication; import net.dev123.yibo.common.Constants; import net.dev123.yibo.common.GlobalVars; import net.dev123.yibo.common.ResourceBook; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.os.AsyncTask; import android.util.Log; import android.widget.Toast; public class TwitterRetweetTask extends AsyncTask<Void, Void, net.dev123.mblog.entity.Status> { private static final String TAG = TwitterRetweetTask.class.getSimpleName(); private Context context; private long accountId; private net.dev123.mblog.entity.Status originalStatus; private ProgressDialog dialog; private String errorMsg; public TwitterRetweetTask(Context context, net.dev123.mblog.entity.Status status) { this.accountId = ((YiBoApplication)context.getApplicationContext()).getCurrentAccount().getAccountId(); this.context = context; this.originalStatus = status; } @Override protected void onPreExecute() { super.onPreExecute(); dialog = ProgressDialog.show(context, null, context.getString(R.string.msg_blog_sending)); dialog.setCancelable(true); dialog.setOnCancelListener(onCancelListener); } @Override protected net.dev123.mblog.entity.Status doInBackground(Void... params) { if (originalStatus == null) { return null; } MicroBlog microBlog = GlobalVars.getMicroBlog(accountId); if (microBlog == null) { return null; } net.dev123.mblog.entity.Status newStatus = null; try { String originalStatusId = originalStatus.getId(); if (originalStatus.getRetweetedStatus() != null) { originalStatusId = originalStatus.getRetweetedStatus().getId(); } newStatus = microBlog.retweetStatus(originalStatusId, null, false); } catch (LibException e) { if (Constants.DEBUG) Log.e(TAG, e.getMessage(), e); errorMsg = ResourceBook.getStatusCodeValue(e.getExceptionCode(), context); } return newStatus; } @Override protected void onPostExecute(net.dev123.mblog.entity.Status resultStatus) { if (dialog != null && dialog.isShowing() && dialog.getWindow() != null ) { dialog.dismiss(); } if (resultStatus != null && errorMsg == null) { Toast.makeText(context, context.getString(R.string.msg_status_success), Toast.LENGTH_LONG).show(); } else { Toast.makeText(context, errorMsg, Toast.LENGTH_LONG).show(); } } private OnCancelListener onCancelListener = new OnCancelListener() { public void onCancel(DialogInterface dialog) { TwitterRetweetTask.this.cancel(true); } }; }