package com.android.yzd.memo.mvp.ui.activity;
import android.content.Context;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.Toolbar;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.yzd.memo.R;
import com.android.yzd.memo.mvp.model.bean.God;
import com.android.yzd.memo.mvp.model.evenbus.EventCenter;
import com.android.yzd.memo.mvp.presenter.impl.EditAImpl;
import com.android.yzd.memo.mvp.ui.activity.base.BaseSwipeBackActivity;
import com.android.yzd.memo.mvp.ui.view.EditAView;
import com.android.yzd.memo.widget.spinner.NiceSpinner;
import com.rengwuxian.materialedittext.MaterialEditText;
import java.util.List;
import butterknife.Bind;
import me.imid.swipebacklayout.lib.SwipeBackLayout;
public class EditActivity extends BaseSwipeBackActivity implements EditAView {
private static final int SUCCESS = 1;
private static final int ERROR = 0;
@Bind(R.id.common_toolbar) Toolbar mToolBar;
@Bind(R.id.spinner) NiceSpinner mSpinner;
@Bind(R.id.title_edit_text) MaterialEditText mTitleEdt;
@Bind(R.id.userName) MaterialEditText mUserNameEdt;
@Bind(R.id.passWord) MaterialEditText mPassWordEdt;
@Bind(R.id.eye) CheckBox mEyeChB;
@Bind(R.id.timeTextView) TextView mTimeTextView;
@Bind(R.id.view) LinearLayout mView;
@Bind(R.id.deleteButton) Button mDeleteButton;
@Bind(R.id.memo) MaterialEditText mMemoInfo;
private EditAImpl mEditImpl;
private MenuItem menuItem;
private AlertDialog alertDialog;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mEditImpl = new EditAImpl(this, this);
mEditImpl.onCreate(savedInstanceState);
mEditImpl.getIntent(getIntent());
mEyeChB.setOnCheckedChangeListener(mEditImpl);
}
@Override
protected TransitionMode getOverridePendingTransitionMode() {
return TransitionMode.RIGHT;
}
@Override
protected boolean toggleOverridePendingTransition() {
return true;
}
@Override public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_edit, menu);
return true;
}
@Override public boolean onPrepareOptionsMenu(Menu menu) {
menuItem = menu.getItem(0);
setItemMenuVisible(false);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mEditImpl.onOptionItemSelected(item)) return true;
return super.onOptionsItemSelected(item);
}
@Override
protected void onEventComing(EventCenter eventCenter) {
}
@Override protected int getContentView() {
return R.layout.activity_edit;
}
@Override protected void initToolbar() {
initToolBar(mToolBar);
setToolBarTitle(R.string.create_mode);
}
@Override protected boolean isApplyTranslucency() {
return true;
}
@Override protected boolean isApplyButterKnife() {
return true;
}
@Override
protected boolean isApplyEventBus() {
return false;
}
@Override public void initSpinner(List<String> data) {
mSpinner.attachDataSource(data);
mSpinner.setOnItemSelectedListener(mEditImpl);
}
@Override public void initCreateModel() {
mTitleEdt.requestFocus();
showKeyBoard();
addEdtChangeListener();
}
private void addEdtChangeListener() {
mTitleEdt.addTextChangedListener(mEditImpl);
mUserNameEdt.addTextChangedListener(mEditImpl);
mPassWordEdt.addTextChangedListener(mEditImpl);
mMemoInfo.addTextChangedListener(mEditImpl);
}
@Override public void initEditModel() {
}
@Override
public void initViewModel(God god, int positionType) {
mView.setFocusable(true);
mView.setFocusableInTouchMode(true);
hideKeyBoard();
mTitleEdt.setText(god.getTitle());
mTitleEdt.setEnabled(false);
mUserNameEdt.setText(god.getUserName());
mPassWordEdt.setText(god.getPassWord());
mMemoInfo.setText(god.getMemoInfo());
mPassWordEdt.setTransformationMethod(HideReturnsTransformationMethod
.getInstance());
mUserNameEdt.setOnFocusChangeListener(mEditImpl);
mPassWordEdt.setOnFocusChangeListener(mEditImpl);
mMemoInfo.setOnFocusChangeListener(mEditImpl);
mEyeChB.setChecked(false);
mSpinner.setSelectedIndex(positionType);
addEdtChangeListener();
mDeleteButton.setVisibility(View.VISIBLE);
mDeleteButton.setOnClickListener(mEditImpl);
}
@Override public String getTitleName() {
return mTitleEdt.getText().toString().trim();
}
@Override public String getUserName() {
return mUserNameEdt.getText().toString().trim();
}
@Override public String getPassWord() {
return mPassWordEdt.getText().toString().trim();
}
@Override public String getMemoInfo() {
return mMemoInfo.getText().toString().trim();
}
@Override
public void setTime(String time) {
mTimeTextView.setVisibility(View.VISIBLE);
mTimeTextView.setText("创建于:" + time);
}
@Override public void showSnackToast(String msg) {
Snackbar.make(mToolBar, msg, Snackbar.LENGTH_SHORT).show();
}
@Override public void setItemMenuVisible(boolean visible) {
menuItem.setVisible(visible);
}
@Override
public void finishActivity() {
setResult(SUCCESS);
finish();
}
@Override
public void setPassWordVisible(boolean visible) {
if (visible) {
mPassWordEdt.setTransformationMethod(PasswordTransformationMethod
.getInstance());
} else {
mPassWordEdt.setTransformationMethod(HideReturnsTransformationMethod
.getInstance());
}
mPassWordEdt.setSelection(getPassWord().length());
}
private void showKeyBoard(){
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}
@Override public void hideKeyBoard(){
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(mPassWordEdt.getWindowToken(), 0);
}
@Override
public void setToolBarTitle(int resId) {
mToolBar.setTitle(getResources().getString(resId));
}
@Override
public void showDialog(String msg, String positiveMsg) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示");
builder.setMessage(msg);//
builder.setPositiveButton(positiveMsg, mEditImpl);
builder.setNegativeButton("取消", mEditImpl);
alertDialog = builder.show();
}
@Override
public void hideSaveDialog() {
if (null != alertDialog) {
alertDialog.dismiss();
}
}
@Override
public void onBackPressed() {
mEditImpl.comeBack();
}
@Override
public SwipeBackLayout getSwipeBack() {
return getSwipeBackLayout();
}
}