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.common.Constants;
import net.dev123.yibo.common.GlobalVars;
import net.dev123.yibo.common.ResourceBook;
import net.dev123.yibo.db.LocalAccount;
import android.app.Activity;
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.Button;
import android.widget.Toast;
public class RetweetTask extends AsyncTask<Void, Void, net.dev123.mblog.entity.Status> {
private static final String TAG = "DirectRetweetTask";
private MicroBlog microBlog = null;
private Context context = null;
private String statusId = null;
private String text = null;
private boolean isComment = false;
private net.dev123.mblog.entity.Status newStatus = null;
private boolean isShowDialog = false;
private ProgressDialog dialog;
private String errorMsg = null;
public RetweetTask(Context context, String statusId, String text, LocalAccount account) {
this.context = context;
this.statusId = statusId;
this.text = text;
microBlog = GlobalVars.getMicroBlog(account);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
if (isShowDialog) {
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) {
try {
newStatus = microBlog.retweetStatus(statusId, text, isComment);
} catch (LibException e) {
if (Constants.DEBUG) Log.e(TAG, "Task", e);
errorMsg = ResourceBook.getStatusCodeValue(e.getExceptionCode(), context);
}
return newStatus;
}
@Override
protected void onPostExecute(net.dev123.mblog.entity.Status result) {
if (dialog != null) {
try {
dialog.dismiss();
} catch (Exception e) {}
}
if (newStatus != null) {
if (isShowDialog) {
Toast.makeText(context, R.string.msg_status_success, Toast.LENGTH_LONG).show();
((Activity)context).finish();
}
} else {
Button btnSend = (Button)((Activity)context).findViewById(R.id.btnOperate);
btnSend.setEnabled(true);
Toast.makeText(context, errorMsg, Toast.LENGTH_LONG).show();
}
}
private OnCancelListener onCancelListener = new OnCancelListener() {
public void onCancel(DialogInterface dialog) {
RetweetTask.this.cancel(true);
Button btnSend = (Button)((Activity)context).findViewById(R.id.btnOperate);
if (btnSend != null) {
btnSend.setEnabled(true);
}
}
};
public boolean isComment() {
return isComment;
}
public void setComment(boolean isComment) {
this.isComment = isComment;
}
public boolean isShowDialog() {
return isShowDialog;
}
public void setShowDialog(boolean isShowDialog) {
this.isShowDialog = isShowDialog;
}
}