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 net.dev123.yibo.service.adapter.CacheAdapter;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class DestroyStatusTask extends AsyncTask<Void, Void, Boolean> {
private static final String TAG = "DestroyStatusTask";
private Context context;
private CacheAdapter<net.dev123.mblog.entity.Status> adapter;
private MicroBlog microBlog;
private net.dev123.mblog.entity.Status status;
private boolean isCloseContext = false;
private ProgressDialog dialog = null;
private String resultMsg = null;
public DestroyStatusTask(CacheAdapter<net.dev123.mblog.entity.Status> adapter,
net.dev123.mblog.entity.Status status
) {
this.adapter = adapter;
this.context = adapter.getContext();
this.status = status;
this.isCloseContext = false;
YiBoApplication yibo = (YiBoApplication)((Activity)context).getApplication();
microBlog = GlobalVars.getMicroBlog(yibo.getCurrentAccount());
}
public DestroyStatusTask(Context context, net.dev123.mblog.entity.Status status) {
this.context = context;
this.status = status;
this.isCloseContext = true;
YiBoApplication yibo = (YiBoApplication)((Activity)context).getApplication();
microBlog = GlobalVars.getMicroBlog(yibo.getCurrentAccount());
}
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = ProgressDialog.show(context, null, context.getString(R.string.msg_blog_delete_sending));
dialog.setCancelable(true);
dialog.setOnCancelListener(onCancelListener);
}
@Override
protected Boolean doInBackground(Void... params) {
if (microBlog == null || status == null) {
return false;
}
net.dev123.mblog.entity.Status newStatus = null;
try {
newStatus = microBlog.destroyStatus(status.getId());
} catch (LibException e) {
if (Constants.DEBUG) Log.e(TAG, "Task", e);
resultMsg = ResourceBook.getStatusCodeValue(e.getExceptionCode(), context);
}
return newStatus != null;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
if (dialog != null &&
dialog.getContext() != null
) {
try {
dialog.dismiss();
} catch (Exception e) {}
}
if (result) {
resultMsg = context.getString(R.string.msg_blog_delete_success);
}
if (result && isCloseContext) {
Activity activity = (Activity)context;
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putSerializable("STATUS", status);
intent.putExtras(bundle);
activity.setResult(Constants.RESULT_CODE_MICRO_BLOG_DELETE, intent);
activity.finish();
} else if (result) {
adapter.remove(status);
}
Toast.makeText(context, resultMsg, Toast.LENGTH_SHORT).show();
}
private OnCancelListener onCancelListener = new OnCancelListener() {
public void onCancel(DialogInterface dialog) {
DestroyStatusTask.this.cancel(true);
}
};
}