package com.yyquan.jzh.view.LockView;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.Toast;
import com.yyquan.jzh.R;
/**
* 图形加锁类
*
* @author jiangzehui
*
*/
public class LockSetupActivity extends Activity implements
LockPatternView.OnPatternListener, OnClickListener {
private static final String TAG = "LockSetupActivity";
private LockPatternView lockPatternView;
private Button leftButton;
private Button rightButton;
private static final int STEP_1 = 1; // 初始化
private static final int STEP_2 = 2; // 第一次设置手势
private static final int STEP_3 = 3; // 按下继续按钮
private static final int STEP_4 = 4; // 第二次设置手势
private int step;
private List<LockPatternView.Cell> choosePattern;
private boolean confirm = false;
SharedPreferences preferences;
SharedPreferences.Editor editor;
String password = "";
private List<LockPatternView.Cell> lockPattern;
boolean bool = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_lock_setup);
lockPatternView = (LockPatternView) findViewById(R.id.lock_pattern);
lockPatternView.setOnPatternListener(this);
leftButton = (Button) findViewById(R.id.left_btn);
rightButton = (Button) findViewById(R.id.right_btn);
preferences = getSharedPreferences("user_message",
LockSetupActivity.MODE_PRIVATE);
editor = preferences.edit();
bool = preferences.getBoolean("lock", false);
if (bool) {
password = preferences.getString("lock_password", "no");
lockPattern = LockPatternView.stringToPattern(password);
}
step = STEP_1;
updateView();
}
private void updateView() {
switch (step) {
case STEP_1:
leftButton.setText(R.string.cancel);
rightButton.setText("");
rightButton.setEnabled(false);
choosePattern = null;
confirm = false;
lockPatternView.clearPattern();
lockPatternView.enableInput();
break;
case STEP_2:
leftButton.setText(R.string.try_again);
rightButton.setText(R.string.goon);
rightButton.setEnabled(true);
lockPatternView.disableInput();
break;
case STEP_3:
leftButton.setText(R.string.cancel);
rightButton.setText("");
rightButton.setEnabled(false);
lockPatternView.clearPattern();
lockPatternView.enableInput();
break;
case STEP_4:
leftButton.setText(R.string.cancel);
if (confirm) {
rightButton.setText(R.string.confirm);
rightButton.setEnabled(true);
lockPatternView.disableInput();
} else {
rightButton.setText("");
lockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong);
lockPatternView.enableInput();
rightButton.setEnabled(false);
}
break;
default:
break;
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.left_btn:
if (step == STEP_1 || step == STEP_3 || step == STEP_4) {
finish();
} else if (step == STEP_2) {
step = STEP_1;
updateView();
}
break;
case R.id.right_btn:
if (step == STEP_2) {
step = STEP_3;
updateView();
} else if (step == STEP_4) {
if (bool) {
editor.putString("lock_password", "no");
editor.putBoolean("lock", false);
editor.commit();
Toast.makeText(LockSetupActivity.this, "手势密码解除成功",
Toast.LENGTH_SHORT).show();
} else {
editor.putString("lock_password",
LockPatternView.patternToString(choosePattern));
editor.putBoolean("lock", true);
editor.commit();
Toast.makeText(LockSetupActivity.this, "手势密码设置成功",
Toast.LENGTH_SHORT).show();
}
finish();
}
break;
}
}
@Override
public void onPatternStart() {
Log.d(TAG, "onPatternStart");
}
@Override
public void onPatternCleared() {
Log.d(TAG, "onPatternCleared");
}
@Override
public void onPatternCellAdded(List<LockPatternView.Cell> pattern) {
Log.d(TAG, "onPatternCellAdded");
}
@Override
public void onPatternDetected(List<LockPatternView.Cell> pattern) {
Log.d(TAG, "onPatternDetected");
if (pattern.size() < LockPatternView.MIN_LOCK_PATTERN_SIZE) {
Toast.makeText(this,
R.string.lockpattern_recording_incorrect_too_short,
Toast.LENGTH_LONG).show();
lockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong);
return;
}
if (choosePattern == null) {
if (bool) {
if (lockPattern.equals(pattern)) {
choosePattern = new ArrayList<LockPatternView.Cell>(pattern);
step = STEP_2;
updateView();
} else {
Toast.makeText(this, "手势密码输入错误", Toast.LENGTH_LONG).show();
lockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong);
return;
}
} else {
choosePattern = new ArrayList<LockPatternView.Cell>(pattern);
step = STEP_2;
updateView();
}
return;
}
if (choosePattern.equals(pattern)) {
confirm = true;
} else {
confirm = false;
}
step = STEP_4;
updateView();
}
}