package net.oschina.app.ui; import net.oschina.app.AppContext; import net.oschina.app.AppException; import net.oschina.app.R; import net.oschina.app.bean.CommentList; import net.oschina.app.bean.Result; import net.oschina.app.common.StringUtils; import net.oschina.app.common.UIHelper; import net.oschina.app.widget.LinkView; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; /** * 发表评论 * @author liux (http://my.oschina.net/liux) * @version 1.0 * @created 2012-3-21 */ public class CommentPub extends BaseActivity{ public final static int CATALOG_NEWS = 1; public final static int CATALOG_POST = 2; public final static int CATALOG_TWEET = 3; public final static int CATALOG_ACTIVE = 4; public final static int CATALOG_MESSAGE = 4;//动态与留言都属于消息中心 public final static int CATALOG_BLOG = 5; private ImageView mBack; private EditText mContent; private CheckBox mZone; private Button mPublish; private LinkView mQuote; private ProgressDialog mProgress; private int _catalog; private int _id; private int _uid; private String _content; private int _isPostToMyZone; //-------对评论回复还需加2变量------ private int _replyid;//被回复的单个评论id private int _authorid;//该评论的原始作者id @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.comment_pub); this.initView(); } //初始化视图控件 private void initView() { _id = getIntent().getIntExtra("id", 0); _catalog = getIntent().getIntExtra("catalog", 0); _replyid = getIntent().getIntExtra("reply_id", 0); _authorid = getIntent().getIntExtra("author_id", 0); mBack = (ImageView)findViewById(R.id.comment_list_back); mPublish = (Button)findViewById(R.id.comment_pub_publish); mContent = (EditText)findViewById(R.id.comment_pub_content); mZone = (CheckBox)findViewById(R.id.comment_pub_zone); if(_catalog == CommentList.CATALOG_TWEET){ mZone.setVisibility(View.VISIBLE); } mBack.setOnClickListener(UIHelper.finish(this)); mPublish.setOnClickListener(publishClickListener); mQuote = (LinkView)findViewById(R.id.comment_pub_quote); mQuote.setText(UIHelper.parseQuoteSpan(getIntent().getStringExtra("author"),getIntent().getStringExtra("content"))); mQuote.parseLinkText(); } private View.OnClickListener publishClickListener = new View.OnClickListener() { public void onClick(View v) { _content = mContent.getText().toString(); if(StringUtils.isEmpty(_content)){ UIHelper.ToastMessage(v.getContext(), "请输入评论内容"); return; } final AppContext ac = (AppContext)getApplication(); if(!ac.isLogin()){ UIHelper.showLoginDialog(CommentPub.this); return; } if(mZone.isChecked()) _isPostToMyZone = 1; _uid = ac.getLoginUid(); mProgress = ProgressDialog.show(v.getContext(), null, "发表中···",true,true); final Handler handler = new Handler(){ public void handleMessage(Message msg) { if(mProgress!=null)mProgress.dismiss(); if(msg.what == 1){ Result res = (Result)msg.obj; UIHelper.ToastMessage(CommentPub.this, res.getErrorMessage()); if(res.OK()){ //发送通知广播 if(res.getNotice() != null){ UIHelper.sendBroadCast(CommentPub.this, res.getNotice()); } //返回刚刚发表的评论 Intent intent = new Intent(); intent.putExtra("COMMENT_SERIALIZABLE", res.getComment()); setResult(RESULT_OK, intent); //跳转到文章详情 finish(); } } else { ((AppException)msg.obj).makeToast(CommentPub.this); } } }; new Thread(){ public void run() { Message msg = new Message(); Result res = new Result(); try { //发表评论 if(_replyid == 0){ res = ac.pubComment(_catalog, _id, _uid, _content, _isPostToMyZone); } //对评论进行回复 else if(_replyid > 0){ if(_catalog == CATALOG_BLOG) res = ac.replyBlogComment(_id, _uid, _content, _replyid, _authorid); else res = ac.replyComment(_id, _catalog, _replyid, _authorid, _uid, _content); } msg.what = 1; msg.obj = res; } catch (AppException e) { e.printStackTrace(); msg.what = -1; msg.obj = e; } handler.sendMessage(msg); } }.start(); } }; }