package com.lzx.lock.module.pwd;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.lzx.lock.R;
import com.lzx.lock.base.BaseActivity;
import com.lzx.lock.base.AppConstants;
import com.lzx.lock.bean.LockStage;
import com.lzx.lock.module.main.MainActivity;
import com.lzx.lock.mvp.contract.GestureCreateContract;
import com.lzx.lock.mvp.p.GestureCreatePresenter;
import com.lzx.lock.service.LockService;
import com.lzx.lock.utils.LockPatternUtils;
import com.lzx.lock.utils.SpUtil;
import com.lzx.lock.utils.SystemBarHelper;
import com.lzx.lock.widget.LockPatternView;
import com.lzx.lock.widget.LockPatternViewPattern;
import java.util.List;
/**
* Created by xian on 2017/2/17.
*/
public class CreatePwdActivity extends BaseActivity implements View.OnClickListener,
GestureCreateContract.View {
private TextView mLockTip;
private LockPatternView mLockPatternView;
private TextView mBtnReset;
//图案锁相关
private LockStage mUiStage = LockStage.Introduction;
protected List<LockPatternView.Cell> mChosenPattern = null; //密码
private LockPatternUtils mLockPatternUtils;
private LockPatternViewPattern mPatternViewPattern;
private GestureCreatePresenter mGestureCreatePresenter;
private RelativeLayout mTopLayout;
@Override
public int getLayoutId() {
return R.layout.activity_create_pwd;
}
@Override
protected void initViews(Bundle savedInstanceState) {
mLockPatternView = (LockPatternView) findViewById(R.id.lock_pattern_view);
mLockTip = (TextView) findViewById(R.id.lock_tip);
mBtnReset = (TextView) findViewById(R.id.btn_reset);
mTopLayout = (RelativeLayout) findViewById(R.id.top_layout);
mTopLayout.setPadding(0, SystemBarHelper.getStatusBarHeight(this),0,0);
}
@Override
protected void initData() {
mGestureCreatePresenter = new GestureCreatePresenter(this, this);
initLockPatternView();
}
/**
* 初始化锁屏控件
*/
private void initLockPatternView() {
mLockPatternUtils = new LockPatternUtils(this);
mPatternViewPattern = new LockPatternViewPattern(mLockPatternView);
mPatternViewPattern.setPatternListener(new LockPatternViewPattern.onPatternListener() {
@Override
public void onPatternDetected(List<LockPatternView.Cell> pattern) {
mGestureCreatePresenter.onPatternDetected(pattern, mChosenPattern, mUiStage);
}
});
mLockPatternView.setOnPatternListener(mPatternViewPattern);
mLockPatternView.setTactileFeedbackEnabled(true);
}
@Override
protected void initAction() {
mBtnReset.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_reset:
setStepOne();
break;
}
}
/**
* 恢复到第一步
*/
private void setStepOne() {
mGestureCreatePresenter.updateStage(LockStage.Introduction);
mLockTip.setText(getString(R.string.lock_recording_intro_header));
}
private void gotoLockMainActivity() {
SpUtil.getInstance().putBoolean(AppConstants.LOCK_STATE, true); //开启应用锁开关
startService(new Intent(this, LockService.class));
SpUtil.getInstance().putBoolean(AppConstants.LOCK_IS_FIRST_LOCK, false);
startActivity(new Intent(this, MainActivity.class));
finish();
}
/**
* 更新当前锁的状态
*/
@Override
public void updateUiStage(LockStage stage) {
mUiStage = stage;
}
/**
* 更新当前密码
*/
@Override
public void updateChosenPattern(List<LockPatternView.Cell> mChosenPattern) {
this.mChosenPattern = mChosenPattern;
}
/**
* 更新提示信息
*/
@Override
public void updateLockTip(String text, boolean isToast) {
mLockTip.setText(text);
}
/**
* 更新提示信息
*/
@Override
public void setHeaderMessage(int headerMessage) {
mLockTip.setText(headerMessage);
}
/**
* LockPatternView的一些配置
*/
@Override
public void lockPatternViewConfiguration(boolean patternEnabled, LockPatternView.DisplayMode displayMode) {
if (patternEnabled) {
mLockPatternView.enableInput();
} else {
mLockPatternView.disableInput();
}
mLockPatternView.setDisplayMode(displayMode);
}
/**
* 初始化
*/
@Override
public void Introduction() {
clearPattern();
}
@Override
public void HelpScreen() {
}
/**
* 路径太短
*/
@Override
public void ChoiceTooShort() {
mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong); //路径太短
mLockPatternView.removeCallbacks(mClearPatternRunnable);
mLockPatternView.postDelayed(mClearPatternRunnable, 500);
}
private Runnable mClearPatternRunnable = new Runnable() {
public void run() {
mLockPatternView.clearPattern();
}
};
/**
* 画完第一步转到第二步
*/
@Override
public void moveToStatusTwo() {
}
/**
* 清空控件路径
*/
@Override
public void clearPattern() {
mLockPatternView.clearPattern();
}
/**
* 第一次和第二次画得不一样
*/
@Override
public void ConfirmWrong() {
mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong); //路径太短
mLockPatternView.removeCallbacks(mClearPatternRunnable);
mLockPatternView.postDelayed(mClearPatternRunnable, 500);
}
/**
* 画成功了
*/
@Override
public void ChoiceConfirmed() {
mLockPatternUtils.saveLockPattern(mChosenPattern); //保存密码
clearPattern();
gotoLockMainActivity();
}
@Override
protected void onDestroy() {
super.onDestroy();
mGestureCreatePresenter.onDestroy();
}
}