*/
package eu.alefzero.owncloud.ui.activity;
+import java.util.Arrays;
+
import com.actionbarsherlock.app.SherlockFragmentActivity;
import eu.alefzero.owncloud.R;
+
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.graphics.Typeface;
import android.os.Bundle;
+import android.os.Handler;
import android.preference.PreferenceManager;
import android.text.Editable;
+import android.text.InputType;
import android.text.TextWatcher;
+import android.text.method.PasswordTransformationMethod;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.View.OnKeyListener;
+import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class PinCodeActivity extends SherlockFragmentActivity {
+ public final static String EXTRA_ACTIVITY = "eu.alefzero.owncloud.ui.activity.PinCodeActivity.ACTIVITY";
+ public final static String EXTRA_NEW_STATE = "eu.alefzero.owncloud.ui.activity.PinCodeActivity.NEW_STATE";
Button bCancel;
TextView mPinHdr;
boolean pinCodeChecked = false;
boolean newPasswordEntered = false;
boolean bChange = true; // to control that only one blocks jump
- int tCounter ; // Count the number of attempts an user could introduce de PIN code
+ int tCounter ; // Count the number of attempts an user could introduce the PIN code
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.pincodelock);
Intent intent = getIntent();
- activity = intent.getStringExtra("activity");
+ activity = intent.getStringExtra(EXTRA_ACTIVITY);
bCancel = (Button) findViewById(R.id.cancel);
mPinHdr = (TextView) findViewById(R.id.pinHdr);
mText1 = (EditText) findViewById(R.id.txt1);
mText1.requestFocus();
+ getWindow().setSoftInputMode(android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
mText2 = (EditText) findViewById(R.id.txt2);
mText3 = (EditText) findViewById(R.id.txt3);
mText4 = (EditText) findViewById(R.id.txt4);
+
SharedPreferences appPrefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- // Not PIN Code defined yet
- if ( appPrefs.getString("PrefPinCode1", null) == null ){
- setChangePincodeView();
+
+ // Not PIN Code defined yet.
+ // In a previous version settings is allow from start
+ if ( (appPrefs.getString("PrefPinCode1", null) == null ) ){
+ setChangePincodeView(true);
pinCodeChecked = true;
newPasswordEntered = true;
- } else {
- setInitView();
- }
+ }else{
+
+ if (appPrefs.getBoolean("set_pincode", false)){
+ // pincode activated
+ if (activity.equals("preferences")){
+ // PIN has been activated yet
+ mPinHdr.setText(R.string.pincode_configure_your_pin);
+ pinCodeChecked = true ; // No need to check it
+ setChangePincodeView(true);
+ }else{
+ // PIN active
+ bCancel.setVisibility(View.INVISIBLE);
+ bCancel.setVisibility(View.GONE);
+ mPinHdr.setText(R.string.pincode_enter_pin_code);
+ setChangePincodeView(false);
+ }
+
+ }else {
+ // pincode removal
+ mPinHdr.setText(R.string.pincode_remove_your_pincode);
+ pinCodeChecked = false;
+ setChangePincodeView(true);
+ }
-
+ }
setTextListeners();
}
-
+
+
+
+ protected void setInitVars(){
+ confirmingPinCode = false;
+ pinCodeChecked = false;
+ newPasswordEntered = false;
+
+ }
protected void setInitView(){
bCancel.setVisibility(View.INVISIBLE);
bCancel.setVisibility(View.GONE);
- mPinHdr.setText("Please, Insert your PIN");
+ mPinHdr.setText(R.string.pincode_enter_pin_code);
}
-
-
- protected void setChangePincodeView(){
- mPinHdr.setText("Configure your PIN");
+
+ protected void setChangePincodeView(boolean state){
+
+ if(state){
+ bCancel.setVisibility(View.VISIBLE);
bCancel.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- finish();
+ @Override
+ public void onClick(View v) {
+
+ SharedPreferences.Editor appPrefsE = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext()).edit();
+
+ SharedPreferences appPrefs = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext());
+
+ boolean state = appPrefs.getBoolean("set_pincode", false);
+ appPrefsE.putBoolean("set_pincode",!state);
+ appPrefsE.commit();
+ setInitVars();
+ finish();
}
});
+ }
}
+
+
/*
*
*/
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
+
}
});
if (!confirmingPinCode){
tempText[1] = mText2.getText().toString();
}
+
mText3.requestFocus();
+
}
}
mText1.setText("");
mText1.requestFocus();
- tempText[0] = "";
+ if (!confirmingPinCode)
+ tempText[0] = "";
bChange= false;
}else if(!bChange){
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
+
+ mText2.setCursorVisible(true);
if (mText1.getText().toString().equals("")){
+ mText2.setSelected(false);
+ mText2.setCursorVisible(false);
mText1.requestFocus();
+ mText1.setSelected(true);
+ mText1.setSelection(0);
}
}
tempText[2] = mText3.getText().toString();
}
mText4.requestFocus();
+
}
}
if (keyCode == KeyEvent.KEYCODE_DEL && bChange) {
mText2.requestFocus();
- tempText[1] = "";
+ if (!confirmingPinCode)
+ tempText[1] = "";
mText2.setText("");
bChange= false;
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
+ mText3.setCursorVisible(true);
if (mText1.getText().toString().equals("")){
- mText1.requestFocus();
+ mText3.setSelected(false);
+ mText3.setCursorVisible(false);
+ mText1.requestFocus();
+ mText1.setSelected(true);
+ mText1.setSelection(0);
}else if (mText2.getText().toString().equals("")){
- mText2.requestFocus();
+ mText3.setSelected(false);
+ mText3.setCursorVisible(false);
+ mText2.requestFocus();
+ mText2.setSelected(true);
+ mText2.setSelection(0);
}
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
- // TODO Auto-generated method stub
+
if (s.length() > 0) {
if (!confirmingPinCode){
pinCodeChecked = checkPincode();
}
- if (pinCodeChecked && activity.equals("splash")){
+ if (pinCodeChecked && activity.equals("FileDisplayActivity")){
finish();
} else if (pinCodeChecked){
Intent intent = getIntent();
- String newState = intent.getStringExtra("pinNewState");
+ String newState = intent.getStringExtra(EXTRA_NEW_STATE);
if (newState.equals("false")){
SharedPreferences.Editor appPrefs = PreferenceManager
appPrefs.putBoolean("set_pincode",false);
appPrefs.commit();
- // TODO Alert Message que salte y vuelva a la pantalla anterior
-
- finish();
-
+ setInitVars();
+ pinCodeEnd(false);
}else{
- if (!confirmingPinCode && !newPasswordEntered){
+ if (!confirmingPinCode){
pinCodeChangeRequest();
- }else if (newPasswordEntered && !confirmingPinCode){
- mPinHdr.setText("Confirm your PINCode, please");
- confirmingPinCode = true;
- clearBoxes();
- }else {
+
+ } else {
confirmPincode();
}
}
if (keyCode == KeyEvent.KEYCODE_DEL && bChange) {
mText3.requestFocus();
- tempText[2]="";
+ if (!confirmingPinCode)
+ tempText[2]="";
mText3.setText("");
bChange= false;
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
+
+ mText4.setCursorVisible(true);
+
if (mText1.getText().toString().equals("")){
- mText1.requestFocus();
+ mText4.setSelected(false);
+ mText4.setCursorVisible(false);
+ mText1.requestFocus();
+ mText1.setSelected(true);
+ mText1.setSelection(0);
}else if (mText2.getText().toString().equals("")){
- mText2.requestFocus();
+ mText4.setSelected(false);
+ mText4.setCursorVisible(false);
+ mText2.requestFocus();
+ mText2.setSelected(true);
+ mText2.setSelection(0);
}else if (mText3.getText().toString().equals("")){
- mText3.requestFocus();
+ mText4.setSelected(false);
+ mText4.setCursorVisible(false);
+ mText3.requestFocus();
+ mText3.setSelected(true);
+ mText3.setSelection(0);
}
}
protected void pinCodeChangeRequest(){
- AlertDialog.Builder aBuilder = new AlertDialog.Builder(this);
- aBuilder.setMessage("Do yo want to set a new PIN Code")
- .setCancelable(false)
- .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- setChangePincodeView();
- mPinHdr.setText("Please, insert your new PIN Code");
- clearBoxes();
- newPasswordEntered = true;
- }
- })
- .setNegativeButton("No", new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- SharedPreferences.Editor appPrefs = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext()).edit();
- appPrefs.putBoolean("set_pincode",false);
- appPrefs.commit();
- finish();
- }
- });
-
- AlertDialog alert =aBuilder.create();
-
- alert.show();
-
+ clearBoxes();
+ mPinHdr.setText(R.string.pincode_reenter_your_pincode);
+ confirmingPinCode =true;
}
}else {
+ Arrays.fill(tempText, null);
AlertDialog aDialog = new AlertDialog.Builder(this).create();
- aDialog.setTitle("ERROR");
- aDialog.setMessage("Wrong PIN");
- aDialog.setButton("OK", new DialogInterface.OnClickListener(){
+ CharSequence errorSeq = getString(R.string.common_error);
+ aDialog.setTitle(errorSeq);
+ CharSequence cseq = getString(R.string.pincode_wrong);
+ aDialog.setMessage(cseq);
+ CharSequence okSeq = getString(R.string.common_ok);
+ aDialog.setButton(okSeq, new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
});
aDialog.show();
clearBoxes();
- mPinHdr.setText("Configure your PIN");
+ mPinHdr.setText(R.string.pincode_enter_pin_code);
newPasswordEntered = true;
confirmingPinCode = false;
} else {
+ Arrays.fill(tempText, null);
AlertDialog aDialog = new AlertDialog.Builder(this).create();
- aDialog.setTitle("ERROR");
- aDialog.setMessage("PIN Code Mismatch");
- aDialog.setButton("OK", new DialogInterface.OnClickListener(){
+ CharSequence errorSeq = getString(R.string.common_error);
+ aDialog.setTitle(errorSeq);
+ CharSequence cseq = getString(R.string.pincode_mismatch);
+ aDialog.setMessage(cseq);
+ CharSequence okSeq = getString(R.string.common_ok);
+ aDialog.setButton(okSeq, new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
});
aDialog.show();
- mPinHdr.setText("Configure your PIN");
+ mPinHdr.setText(R.string.pincode_configure_your_pin);
clearBoxes();
}
}
+
+ protected void pinCodeEnd(boolean state){
+ AlertDialog aDialog = new AlertDialog.Builder(this).create();
+
+ if (state){
+ CharSequence saveSeq = getString(R.string.common_save_exit);
+ aDialog.setTitle(saveSeq);
+ CharSequence cseq = getString(R.string.pincode_stored);
+ aDialog.setMessage(cseq);
+
+ }else{
+ CharSequence saveSeq = getString(R.string.common_save_exit);
+ aDialog.setTitle(saveSeq);
+ CharSequence cseq = getString(R.string.pincode_removed);
+ aDialog.setMessage(cseq);
+
+ }
+ CharSequence okSeq = getString(R.string.common_ok);
+ aDialog.setButton(okSeq, new DialogInterface.OnClickListener(){
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ // TODO Auto-generated method stub("");
+ finish();
+ return;
+ }
+
+ });
+ aDialog.show();
+ }
+
protected void savePincodeAndExit(){
SharedPreferences.Editor appPrefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext()).edit();
appPrefs.putBoolean("set_pincode",true);
appPrefs.commit();
- finish();
+ pinCodeEnd(true);
+
+
+
}
mText4.setText("");
mText1.requestFocus();
}
+
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event){
+ if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()== 0){
+
+ if (activity.equals("preferences")){
+ SharedPreferences.Editor appPrefsE = PreferenceManager
+
+ .getDefaultSharedPreferences(getApplicationContext()).edit();
+ SharedPreferences appPrefs = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext());
+
+ boolean state = appPrefs.getBoolean("set_pincode", false);
+ appPrefsE.putBoolean("set_pincode",!state);
+ appPrefsE.commit();
+ setInitVars();
+ finish();
+ }
+ return true;
+
+ }
+
+ return super.onKeyDown(keyCode, event);
+ }
+
+
+
+
}