package com.android.yzd.memo.mvp.presenter.impl; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.CompoundButton; import com.android.yzd.memo.R; import com.android.yzd.memo.mvp.model.bean.God; import com.android.yzd.memo.mvp.model.Realm.RealmHelper; import com.android.yzd.memo.mvp.presenter.ActivityPresenter; import com.android.yzd.memo.utils.TimeUtils; import com.android.yzd.memo.mvp.ui.view.EditAView; import java.util.ArrayList; import me.imid.swipebacklayout.lib.SwipeBackLayout; /** * Created by Clearlove on 16/1/17. */ public class EditAImpl implements ActivityPresenter, TextWatcher, AdapterView.OnItemSelectedListener, CompoundButton.OnCheckedChangeListener, View.OnFocusChangeListener, DialogInterface.OnClickListener, SwipeBackLayout.SwipeListener, View.OnClickListener { private final Context mContext; private final EditAView mEditAView; private int mPosition = 0; private int createMode; private boolean isEdit; private boolean isCreate; private God mGodInfo; private int positionType; private String mPositiveButtonMsg; private int p; public EditAImpl(Context context, EditAView view) { mContext = context; mEditAView = view; } @Override public void onCreate(Bundle savedInstanceState) { String[] stringArray = mContext.getResources().getStringArray(R.array.spinner_item); ArrayList<String> arrayList = new ArrayList<>(); for (String str : stringArray) { arrayList.add(str); } mEditAView.initSpinner(arrayList); mEditAView.getSwipeBack().addSwipeListener(this); } @Override public void getIntent(Intent intent) { createMode = intent.getIntExtra("CREATE_MODE", 1); switch (createMode) { case 0:// 查看 p = intent.getIntExtra("position", 0); // 密码类型 mPosition = positionType = intent.getIntExtra("positionType", 0); ArrayList<God> selector = selector(positionType); mGodInfo = selector.get(p); mEditAView.initViewModel(mGodInfo, positionType); mEditAView.setToolBarTitle(R.string.view_mode); mEditAView.setTime(TimeUtils.getTime(mGodInfo.getTime())); isEdit = false; break; case 1:// 添加 isCreate = true; mEditAView.initCreateModel(); break; } } private ArrayList<God> selector(int positionType) { return RealmHelper.getInstances(mContext).selector(mContext, positionType); } @Override public void onResume() { } @Override public void onStart() { } @Override public void onPause() { } @Override public void onStop() { } @Override public void onDestroy() { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { String titleName = mEditAView.getTitleName(); String userName = mEditAView.getUserName(); String passWord = mEditAView.getPassWord(); if (!TextUtils.isEmpty(passWord)) { if (!TextUtils.isEmpty(titleName) && !TextUtils.isEmpty(userName)) { mEditAView.setItemMenuVisible(true); } else { mEditAView.setItemMenuVisible(false); } } else { mEditAView.setItemMenuVisible(false); } } @Override public void afterTextChanged(Editable s) { } public boolean onOptionItemSelected(MenuItem item){ switch (item.getItemId()) { case R.id.done: saveData(); return true; case android.R.id.home: return comeBack(); default: return false; } } public boolean comeBack() { if (isEdit) { String userName = mEditAView.getUserName(); String passWord = mEditAView.getPassWord(); mEditAView.hideKeyBoard(); if (positionType != mPosition || !TextUtils.equals(userName, mGodInfo.getUserName()) || !TextUtils.equals(passWord, mGodInfo.getPassWord())) { mPositiveButtonMsg = "保存"; mEditAView.showDialog("密码还未保存,是否先保存在退出", mPositiveButtonMsg); } else { mEditAView.finishActivity(); } } else { mEditAView.hideKeyBoard(); mEditAView.finishActivity(); } return true; } private void saveData() { String titleName = mEditAView.getTitleName(); String userName = mEditAView.getUserName(); String passWord = mEditAView.getPassWord(); String memoInfo = mEditAView.getMemoInfo(); God god = new God(mPosition, titleName, userName, passWord, TimeUtils.getCurrentTimeInLong(), memoInfo); switch (createMode) { case 0: if (!RealmHelper.update(mContext, god)) { mEditAView.showSnackToast("修改失败"); mEditAView.hideKeyBoard(); return; } break; case 1: if (RealmHelper.save(mContext, god)) { mEditAView.showSnackToast("保存失败,已经存在-"+god.getTitle()+"-的标题"); mEditAView.hideKeyBoard(); return; } break; } mEditAView.hideKeyBoard(); mEditAView.finishActivity(); } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { isEdit = true; mPosition = position; } @Override public void onNothingSelected(AdapterView<?> parent) { } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { mEditAView.setPassWordVisible(isChecked); } @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { isEdit = true; mEditAView.setToolBarTitle(R.string.edit_mode); } } @Override public void onClick(DialogInterface dialog, int which) { if (which == dialog.BUTTON_POSITIVE) { if (TextUtils.equals(mPositiveButtonMsg, "确定")) { RealmHelper.delete(mContext, mGodInfo, p); mEditAView.finishActivity(); } else { saveData(); } } else if (which == dialog.BUTTON_NEGATIVE) { if (!TextUtils.equals(mPositiveButtonMsg, "确定")) { mEditAView.hideKeyBoard(); mEditAView.finishActivity(); } } } @Override public void onScrollStateChange(int state, float scrollPercent) { mEditAView.hideKeyBoard(); } @Override public void onEdgeTouch(int edgeFlag) { } @Override public void onScrollOverThreshold() { } @Override public void onClick(View v) { int id = v.getId(); if (id == R.id.deleteButton) { mPositiveButtonMsg = "确定"; mEditAView.showDialog("将永久删除该密码备忘记录~~", mPositiveButtonMsg); } } }