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.CodeFile; 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; public class CodeFileEditActivity extends BaseActionBarActivity implements OnClickListener { private AppContext mAppContext; private CodeFile mCodeFile; private Project mProject; private String mPath; private String mBranch; private EditText mEditContent; private EditText mCommitMsg; private Button mCodeFilePub; private ProgressDialog mPubing; private TextWatcher mTextWatcher = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { if (mEditContent.getText().toString().equals(mCodeFile.getContent()) || StringUtils.isEmpty(mCommitMsg.getText().toString())) { mCodeFilePub.setEnabled(false); } else { mCodeFilePub.setEnabled(true); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit_codefile); mAppContext = getGitApplication(); initView(); initData(); } private void initView() { mEditContent = (EditText) findViewById(R.id.codefile_edit); mCommitMsg = (EditText) findViewById(R.id.codefile_edit_msg); mCodeFilePub = (Button) findViewById(R.id.codefile_edit_pub); mEditContent.addTextChangedListener(mTextWatcher); mCommitMsg.addTextChangedListener(mTextWatcher); mCodeFilePub.setOnClickListener(this); } private void initData() { Intent intent = getIntent(); mCodeFile = (CodeFile) intent.getSerializableExtra(Contanst.CODE_FILE); mProject = (Project) intent.getSerializableExtra(Contanst.PROJECT); mPath = intent.getStringExtra(Contanst.PATH); mBranch = intent.getStringExtra(Contanst.BRANCH); if (mCodeFile != null) { mEditContent.setText(mCodeFile.getContent()); mTitle = mCodeFile.getFile_name(); mSubTitle = mProject.getOwner().getName() + "/" + mProject.getName(); } } private void pubCommitCodeFile() { final String content = mEditContent.getText().toString(); final String commit_message = mCommitMsg.getText().toString(); if (content.equals(mCodeFile.getContent())) { UIHelper.ToastMessage(mAppContext, "文件内容没有改变"); return; } if (StringUtils.isEmpty(commit_message)) { UIHelper.ToastMessage(mAppContext, "文件内容没有改变"); return; } if (mPubing == null) { mPubing = new ProgressDialog(CodeFileEditActivity.this); mPubing.setMessage("正在提交..."); } new AsyncTask<Void, Void, Message>() { @Override protected Message doInBackground(Void... params) { Message msg = new Message(); try { msg.obj = mAppContext.updateRepositoryFiles(mProject.getId(), mBranch, mPath, mBranch, content, commit_message); msg.what = 1; } catch (AppException e) { msg.what = -1; msg.obj = e; } return msg; } @Override protected void onPreExecute() { super.onPreExecute(); mPubing.show(); } @Override protected void onPostExecute(Message msg) { super.onPostExecute(msg); mPubing.dismiss(); if (msg.what == 1) { String res = (String) msg.obj; if (res != null) { finish(); UIHelper.ToastMessage(mAppContext, "提交成功"); } } else { if (msg.obj instanceof AppException) { ((AppException)msg.obj).makeToast(mAppContext); } } } }.execute(); } @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.codefile_edit_pub: pubCommitCodeFile(); break; default: break; } } }