package net.oschina.gitapp.ui;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Message;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import net.oschina.gitapp.AppContext;
import net.oschina.gitapp.AppException;
import net.oschina.gitapp.R;
import net.oschina.gitapp.bean.Issue;
import net.oschina.gitapp.bean.Project;
import net.oschina.gitapp.common.Contanst;
import net.oschina.gitapp.common.StringUtils;
import net.oschina.gitapp.common.UIHelper;
import net.oschina.gitapp.ui.baseactivity.BaseActionBarActivity;
/**
* 评论issue界面
* @created 2014-08-25
* @author 火蚁(http://my.oschina.net/LittleDY)
*
*/
public class IssueCommentActivity extends BaseActionBarActivity implements OnClickListener {
private AppContext mAppContext;
private Project mProject;
private Issue mIssue;
private EditText mCommentContent;
private Button mCommentPub;
private TextWatcher mTextWatcher;
private ProgressDialog mPubing;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_issue_comment);
mAppContext = getGitApplication();
initView();
initData();
}
private void initView() {
mCommentContent = (EditText) findViewById(R.id.issue_comment_content);
mCommentPub = (Button) findViewById(R.id.issue_comment_pub);
mTextWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (mProject == null || mIssue == null) return;
if (StringUtils.isEmpty(mCommentContent.getText().toString())) {
mCommentPub.setEnabled(false);
} else {
mCommentPub.setEnabled(true);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
};
mCommentContent.addTextChangedListener(mTextWatcher);
mCommentPub.setOnClickListener(this);
}
private void initData() {
Intent intent = getIntent();
if (null != intent) {
mProject = (Project) intent.getSerializableExtra(Contanst.PROJECT);
mIssue = (Issue) intent.getSerializableExtra(Contanst.ISSUE);
}
if (null != mProject && mIssue != null) {
mTitle = "评论 Issue #" + mIssue.getIid();
mSubTitle = mProject.getOwner().getName() + "/" + mProject.getName();
}
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.issue_comment_pub:
pubComment();
break;
default:
break;
}
}
private void pubComment() {
if (mProject == null || mIssue == null) {
return;
}
if (mPubing == null) {
mPubing = new ProgressDialog(this);
mPubing.setCanceledOnTouchOutside(false);
mPubing.setMessage("正在提交评论...");
}
new AsyncTask<Void, Void, Message>() {
@Override
protected Message doInBackground(Void... params) {
Message msg =new Message();
try {
msg.obj = mAppContext.pubIssueComment(mProject.getId(), mIssue.getId(), mCommentContent.getText().toString());
msg.what = 1;
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
return msg;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
if(mPubing != null) {
mPubing.show();
}
}
@Override
protected void onPostExecute(Message msg) {
super.onPostExecute(msg);
//如果程序已经关闭,则不再执行以下处理
if(isFinishing()) {
return;
}
if(mPubing != null) {
mPubing.dismiss();
}
if (msg.what == 1) {
UIHelper.ToastMessage(getGitApplication(), "评论成功");
finish();
} else {
((AppException)(msg.obj)).makeToast(getGitApplication());
}
}
}.execute();
}
}