package com.yuyh.sprintnba.ui; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Handler; import android.view.Menu; import android.view.MenuItem; import android.widget.EditText; import com.flyco.animation.BounceEnter.BounceTopEnter; import com.flyco.animation.SlideExit.SlideBottomExit; import com.flyco.dialog.listener.OnBtnClickL; import com.flyco.dialog.widget.NormalDialog; import com.yuyh.sprintnba.R; import com.yuyh.sprintnba.app.Constant; import com.yuyh.sprintnba.base.BaseSwipeBackCompatActivity; import com.yuyh.sprintnba.ui.presenter.impl.PostPresenter; import com.yuyh.sprintnba.ui.view.PostView; import butterknife.InjectView; /** * @author yuyh. * @date 16/6/11. */ public class PostActivity extends BaseSwipeBackCompatActivity implements PostView { public static final String INTENT_TITLE = "title"; public static final String INTENT_TYPE = "type"; public static final String INTENT_FID = "fid"; public static final String INTENT_TID = "tid"; public static final String INTENT_PID = "pid"; private int type; private String fid; private String tid; private String pid; private String title; public static void start(Context context, int type) { Intent intent = new Intent(context, PostActivity.class); intent.putExtra(PostActivity.INTENT_TYPE, type); context.startActivity(intent); } public static void start(Context context, String title, int type, String fid, String tid, String pid) { Intent intent = new Intent(context, PostActivity.class); intent.putExtra(PostActivity.INTENT_TITLE, title); intent.putExtra(PostActivity.INTENT_TYPE, type); intent.putExtra(PostActivity.INTENT_FID, fid); intent.putExtra(PostActivity.INTENT_TID, tid); intent.putExtra(PostActivity.INTENT_PID, String.valueOf(pid)); context.startActivity(intent); } public static void startForResult(Activity activity, String title, int type, String fid, String tid, String pid, int reqCode) { Intent intent = new Intent(activity, PostActivity.class); intent.putExtra(PostActivity.INTENT_TITLE, title); intent.putExtra(PostActivity.INTENT_TYPE, type); intent.putExtra(PostActivity.INTENT_FID, fid); intent.putExtra(PostActivity.INTENT_TID, tid); intent.putExtra(PostActivity.INTENT_PID, String.valueOf(pid)); activity.startActivityForResult(intent, reqCode); } @InjectView(R.id.etSubject) EditText etSubject; @InjectView(R.id.etContent) EditText etContent; private NormalDialog dialog; private PostPresenter presenter; @Override protected int getContentViewLayoutID() { return R.layout.activity_post; } @Override protected void initViewsAndEvents() { Intent intent = getIntent(); type = intent.getIntExtra(INTENT_TYPE, Constant.TYPE_COMMENT); fid = intent.getStringExtra(INTENT_FID); tid = intent.getStringExtra(INTENT_TID); pid = intent.getStringExtra(INTENT_PID); title = intent.getStringExtra(INTENT_TITLE); presenter = new PostPresenter(this, this); initPostType(); invalidateOptionsMenu(); } private void initPostType() { switch (type) { case Constant.TYPE_COMMENT: setTitle("评论"); etSubject.setEnabled(false); etSubject.setText("引用:" + title); etContent.setHint("请输入您的评论"); etContent.requestFocus(); presenter.checkPermission(Constant.TYPE_COMMENT, fid, tid); break; case Constant.TYPE_REPLY: setTitle("回复"); etSubject.setEnabled(false); etSubject.setText("引用:" + title); etContent.setHint("请输入您的回复"); etContent.requestFocus(); presenter.checkPermission(Constant.TYPE_REPLY, fid, tid); break; case Constant.TYPE_FEEDBACK: setTitle("反馈"); break; case Constant.TYPE_AT: break; case Constant.TYPE_QUOTE: break; case Constant.TYPE_POST: default: setTitle("发新帖"); presenter.checkPermission(Constant.TYPE_POST, fid, tid); break; } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_post, menu); if (type == Constant.TYPE_FEEDBACK) { MenuItem actionCamera = menu.findItem(R.id.action_camera); actionCamera.setVisible(false); } return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_send: send(); break; case R.id.action_camera: break; default: break; } return true; } private void send() { String content = etContent.getText().toString(); if (type == Constant.TYPE_POST) { String title = etSubject.getText().toString(); presenter.post(fid, content, title); } else if (type == Constant.TYPE_FEEDBACK) { presenter.feedback(etSubject.getText().toString(), content); } else { presenter.comment(tid, fid, pid, content); } } @Override public void showLoadding() { showLoadingDialog(); } @Override public void hideLoadding() { hideLoadingDialog(); } @Override public void postSuccess() { Intent intent = new Intent(); setResult(RESULT_OK, intent); finish(); } @Override public void postFailure(String msg) { } @Override public void feedbackSuccess() { finish(); } @Override public void checkPermissionSuccess(boolean hasPermission, final int code, String msg, boolean retry) { if (!hasPermission) { dialog = new NormalDialog(this).isTitleShow(false).content(msg) .showAnim(new BounceTopEnter()).dismissAnim(new SlideBottomExit()) .btnNum(1); if (retry) { dialog.btnText("再试一次").setOnBtnClickL(new OnBtnClickL() { @Override public void onBtnClick() { presenter.checkPermission(type, fid, tid); dialog.dismiss(); } }); dialog.show(); } else { dialog.btnText("确定").setOnBtnClickL(new OnBtnClickL() { @Override public void onBtnClick() { if (code == 4) { dialog.dismiss(); Intent intent = new Intent(mContext, LoginActivity.class); startActivity(intent); } new Handler().postDelayed(new Runnable() { @Override public void run() { finish(); } }, 500); } }); dialog.show(); } } } }