package net.dev123.yibo.service.task; import net.dev123.exception.LibException; import net.dev123.mblog.MicroBlog; import net.dev123.mblog.entity.User; import net.dev123.yibo.ProfileEditActivity; 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.Activity; import android.app.ProgressDialog; 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 UpdateProfileTask extends AsyncTask<Void, Void, User> { private static final String TAG = "UpdateProfilePhotoTask"; private ProfileEditActivity context; private YiBoApplication yibo; private long accountId; private String screenName; private String description; private ProgressDialog dialog; private boolean isShowDialog; private String resultMsg; public UpdateProfileTask(ProfileEditActivity context, String screenName, String description) { this.context = context; this.yibo = (YiBoApplication)context.getApplicationContext(); this.accountId = yibo.getCurrentAccount().getAccountId(); this.screenName = screenName; this.description = description; this.isShowDialog = true; } @Override protected void onPreExecute() { super.onPreExecute(); if (isShowDialog) { dialog = ProgressDialog.show(context, null, context.getString(R.string.msg_profile_updating)); dialog.setCancelable(true); dialog.setOnCancelListener(onCancelListener); dialog.setOwnerActivity((Activity)context); } } @Override protected User doInBackground(Void... params) { if (screenName == null) { return null; } MicroBlog microBlog = GlobalVars.getMicroBlog(accountId); if (microBlog == null) { return null; } User user = null; try { if (description == null) { description = ""; } user = microBlog.updateProfile(screenName, null, null, null, description); } catch (LibException e) { if (Constants.DEBUG) Log.e(TAG, "Task", e); resultMsg = ResourceBook.getStatusCodeValue(e.getExceptionCode(), context); } return user; } @Override protected void onPostExecute(User resultUser) { super.onPostExecute(resultUser); if (isShowDialog && dialog != null && dialog.getContext() != null ) { try { dialog.dismiss(); } catch(Exception e){} } if (resultUser != null) { if (isShowDialog) { Toast.makeText(context, R.string.msg_profile_updated, Toast.LENGTH_LONG).show(); context.updateUser(resultUser); } } else { Toast.makeText(context, resultMsg, Toast.LENGTH_LONG).show(); } } private OnCancelListener onCancelListener = new OnCancelListener() { public void onCancel(DialogInterface dialog) { Button btnSend = (Button)((Activity)context).findViewById(R.id.btnOperate); btnSend.setEnabled(true); UpdateProfileTask.this.cancel(true); } }; }