-/* ownCloud Android client application
+/**
+ * ownCloud Android client application
+ *
* Copyright (C) 2011 Bartek Przybylski
+ * Copyright (C) 2015 ownCloud Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
import java.util.Arrays;
-import com.actionbarsherlock.app.ActionBar;
-import com.actionbarsherlock.app.SherlockFragmentActivity;
-import com.owncloud.android.R;
-import com.owncloud.android.utils.DisplayUtils;
-
-import android.app.AlertDialog;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
+import android.widget.Toast;
+
+import com.actionbarsherlock.app.ActionBar;
+import com.actionbarsherlock.app.SherlockFragmentActivity;
+import com.owncloud.android.R;
+import com.owncloud.android.authentication.PinCheck;
+import com.owncloud.android.utils.DisplayUtils;
public class PinCodeActivity extends SherlockFragmentActivity {
- public final static String EXTRA_ACTIVITY = "com.owncloud.android.ui.activity.PinCodeActivity.ACTIVITY";
+ public final static String ACTION_TOGGLE = PinCodeActivity.class.getCanonicalName() + ".TOGGLE";
+ public final static String ACTION_REQUEST= PinCodeActivity.class.getCanonicalName() + ".REQUEST";
+
public final static String EXTRA_NEW_STATE = "com.owncloud.android.ui.activity.PinCodeActivity.NEW_STATE";
- Button bCancel;
- TextView mPinHdr;
- TextView mPinHdrExplanation;
- EditText mText1;
- EditText mText2;
- EditText mText3;
- EditText mText4;
+ private Button mBCancel;
+ private TextView mPinHdr;
+ private TextView mPinHdrExplanation;
+ private EditText mText1;
+ private EditText mText2;
+ private EditText mText3;
+ private EditText mText4;
- String [] tempText ={"","","",""};
+ private String [] mTempText ={"","","",""};
- String activity;
-
- boolean confirmingPinCode = false;
- 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 the PIN code
+ private boolean mConfirmingPinCode = false;
+ private boolean mPinCodeChecked = false;
+ private boolean mNewPasswordEntered = false;
+ private boolean mBChange = true; // to control that only one blocks jump
+ //private int mTCounter ; // Count the number of attempts an user could introduce the PIN code
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pincodelock);
- Intent intent = getIntent();
- activity = intent.getStringExtra(EXTRA_ACTIVITY);
-
- bCancel = (Button) findViewById(R.id.cancel);
+ mBCancel = (Button) findViewById(R.id.cancel);
mPinHdr = (TextView) findViewById(R.id.pinHdr);
mPinHdrExplanation = (TextView) findViewById(R.id.pinHdrExpl);
mText1 = (EditText) findViewById(R.id.txt1);
// In a previous version settings is allow from start
if ( (appPrefs.getString("PrefPinCode1", null) == null ) ){
setChangePincodeView(true);
- pinCodeChecked = true;
- newPasswordEntered = true;
-
- }else{
+ mPinCodeChecked = true;
+ mNewPasswordEntered = true;
+ } else {
+
+ /// TODO rewrite this activity; this logic is too twisted
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);
- mPinHdrExplanation.setVisibility(View.VISIBLE);
- 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);
- mPinHdrExplanation.setVisibility(View.INVISIBLE);
- setChangePincodeView(false);
+ // pincode activated
+ if (ACTION_TOGGLE.equals(getIntent().getAction())) {
+ // PIN has been activated yet
+ mPinHdr.setText(R.string.pincode_configure_your_pin);
+ mPinHdrExplanation.setVisibility(View.VISIBLE);
+ mPinCodeChecked = true ; // No need to check it
+ setChangePincodeView(true);
+ } else {
+ // PIN active
+ mBCancel.setVisibility(View.INVISIBLE);
+ mBCancel.setVisibility(View.GONE);
+ mPinHdr.setText(R.string.pincode_enter_pin_code);
+ mPinHdrExplanation.setVisibility(View.INVISIBLE);
+ setChangePincodeView(false);
}
- }else {
- // pincode removal
- mPinHdr.setText(R.string.pincode_remove_your_pincode);
- mPinHdrExplanation.setVisibility(View.INVISIBLE);
- pinCodeChecked = false;
- setChangePincodeView(true);
+ } else {
+ // pincode removal
+ mPinHdr.setText(R.string.pincode_remove_your_pincode);
+ mPinHdrExplanation.setVisibility(View.INVISIBLE);
+ mPinCodeChecked = false;
+ setChangePincodeView(true);
}
}
protected void setInitVars(){
- confirmingPinCode = false;
- pinCodeChecked = false;
- newPasswordEntered = false;
+ mConfirmingPinCode = false;
+ mPinCodeChecked = false;
+ mNewPasswordEntered = false;
}
protected void setInitView(){
- bCancel.setVisibility(View.INVISIBLE);
- bCancel.setVisibility(View.GONE);
+ mBCancel.setVisibility(View.INVISIBLE);
+ mBCancel.setVisibility(View.GONE);
mPinHdr.setText(R.string.pincode_enter_pin_code);
mPinHdrExplanation.setVisibility(View.INVISIBLE);
}
protected void setChangePincodeView(boolean state){
if(state){
- bCancel.setVisibility(View.VISIBLE);
- bCancel.setOnClickListener(new OnClickListener() {
+ mBCancel.setVisibility(View.VISIBLE);
+ mBCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
- if (!confirmingPinCode){
- tempText[0] = mText1.getText().toString();
+ if (!mConfirmingPinCode){
+ mTempText[0] = mText1.getText().toString();
}
mText2.requestFocus();
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
- if (!confirmingPinCode){
- tempText[1] = mText2.getText().toString();
+ if (!mConfirmingPinCode){
+ mTempText[1] = mText2.getText().toString();
}
mText3.requestFocus();
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_DEL && bChange) {
+ if (keyCode == KeyEvent.KEYCODE_DEL && mBChange) {
mText1.setText("");
mText1.requestFocus();
- if (!confirmingPinCode)
- tempText[0] = "";
- bChange= false;
+ if (!mConfirmingPinCode)
+ mTempText[0] = "";
+ mBChange= false;
- }else if(!bChange){
- bChange=true;
+ }else if(!mBChange){
+ mBChange=true;
}
return false;
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
- if (!confirmingPinCode){
- tempText[2] = mText3.getText().toString();
+ if (!mConfirmingPinCode){
+ mTempText[2] = mText3.getText().toString();
}
mText4.requestFocus();
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_DEL && bChange) {
+ if (keyCode == KeyEvent.KEYCODE_DEL && mBChange) {
mText2.requestFocus();
- if (!confirmingPinCode)
- tempText[1] = "";
+ if (!mConfirmingPinCode)
+ mTempText[1] = "";
mText2.setText("");
- bChange= false;
+ mBChange= false;
- }else if(!bChange){
- bChange=true;
+ }else if(!mBChange){
+ mBChange=true;
}
return false;
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
- if (!confirmingPinCode){
- tempText[3] = mText4.getText().toString();
+ if (!mConfirmingPinCode){
+ mTempText[3] = mText4.getText().toString();
}
mText1.requestFocus();
- if (!pinCodeChecked){
- pinCodeChecked = checkPincode();
+ if (!mPinCodeChecked){
+ mPinCodeChecked = checkPincode();
}
- if (pinCodeChecked && activity.equals("FileDisplayActivity")){
- finish();
- } else if (pinCodeChecked){
-
- Intent intent = getIntent();
- String newState = intent.getStringExtra(EXTRA_NEW_STATE);
-
- if (newState.equals("false")){
- SharedPreferences.Editor appPrefs = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext()).edit();
- appPrefs.putBoolean("set_pincode",false);
- appPrefs.commit();
-
- setInitVars();
- pinCodeEnd(false);
-
- }else{
-
- if (!confirmingPinCode){
- pinCodeChangeRequest();
-
+ if (mPinCodeChecked) {
+ PinCheck.setUnlockTimestamp();
+
+ if (ACTION_REQUEST.equals(getIntent().getAction())) {
+ finish();
+
+ } else if (mPinCodeChecked) {
+ String newState = getIntent().getStringExtra(EXTRA_NEW_STATE);
+
+ // TODO - next decision should done according to the current state of PIN in prefs (enable or not), not whatever says de client
+ if (newState.equals("false")) {
+ SharedPreferences.Editor appPrefs = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext()).edit();
+ appPrefs.putBoolean("set_pincode", false);
+ appPrefs.commit();
+
+ setInitVars();
+ pinCodeEnd(false);
+
} else {
- confirmPincode();
+
+ if (!mConfirmingPinCode) {
+ pinCodeChangeRequest();
+
+ } else {
+ confirmPincode();
+ }
}
+
}
-
-
}
}
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_DEL && bChange) {
+ if (keyCode == KeyEvent.KEYCODE_DEL && mBChange) {
mText3.requestFocus();
- if (!confirmingPinCode)
- tempText[2]="";
+ if (!mConfirmingPinCode)
+ mTempText[2]="";
mText3.setText("");
- bChange= false;
+ mBChange= false;
- }else if(!bChange){
- bChange=true;
+ }else if(!mBChange){
+ mBChange=true;
}
return false;
}
clearBoxes();
mPinHdr.setText(R.string.pincode_reenter_your_pincode);
mPinHdrExplanation.setVisibility(View.INVISIBLE);
- confirmingPinCode =true;
+ mConfirmingPinCode =true;
}
String pText3 = appPrefs.getString("PrefPinCode3", null);
String pText4 = appPrefs.getString("PrefPinCode4", null);
- if ( tempText[0].equals(pText1) &&
- tempText[1].equals(pText2) &&
- tempText[2].equals(pText3) &&
- tempText[3].equals(pText4) ) {
+ if ( mTempText[0].equals(pText1) &&
+ mTempText[1].equals(pText2) &&
+ mTempText[2].equals(pText3) &&
+ mTempText[3].equals(pText4) ) {
return true;
}else {
- Arrays.fill(tempText, null);
- AlertDialog aDialog = new AlertDialog.Builder(this).create();
+ Arrays.fill(mTempText, null);
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) {
- return;
- }
-
- });
- aDialog.show();
+ Toast.makeText(this, errorSeq, Toast.LENGTH_LONG).show();
+
clearBoxes();
mPinHdr.setText(R.string.pincode_enter_pin_code);
mPinHdrExplanation.setVisibility(View.INVISIBLE);
- newPasswordEntered = true;
- confirmingPinCode = false;
+ mNewPasswordEntered = true;
+ mConfirmingPinCode = false;
}
protected void confirmPincode(){
- confirmingPinCode = false;
+ mConfirmingPinCode = false;
String rText1 = mText1.getText().toString();
String rText2 = mText2.getText().toString();
String rText3 = mText3.getText().toString();
String rText4 = mText4.getText().toString();
- if ( tempText[0].equals(rText1) &&
- tempText[1].equals(rText2) &&
- tempText[2].equals(rText3) &&
- tempText[3].equals(rText4) ) {
+ if ( mTempText[0].equals(rText1) &&
+ mTempText[1].equals(rText2) &&
+ mTempText[2].equals(rText3) &&
+ mTempText[3].equals(rText4) ) {
savePincodeAndExit();
} else {
-
- Arrays.fill(tempText, null);
- AlertDialog aDialog = new AlertDialog.Builder(this).create();
- CharSequence errorSeq = getString(R.string.common_error);
- aDialog.setTitle(errorSeq);
+ Arrays.fill(mTempText, null);
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) {
- return;
- }
-
- });
- aDialog.show();
+ Toast.makeText(this, cseq, Toast.LENGTH_LONG).show();
+
mPinHdr.setText(R.string.pincode_configure_your_pin);
mPinHdrExplanation.setVisibility(View.VISIBLE);
clearBoxes();
protected void pinCodeEnd(boolean state){
- AlertDialog aDialog = new AlertDialog.Builder(this).create();
-
+ CharSequence cseq;
if (state){
- CharSequence saveSeq = getString(R.string.common_save_exit);
- aDialog.setTitle(saveSeq);
- CharSequence cseq = getString(R.string.pincode_stored);
- aDialog.setMessage(cseq);
-
+ cseq = getString(R.string.pincode_stored);
}else{
- CharSequence saveSeq = getString(R.string.common_save_exit);
- aDialog.setTitle(saveSeq);
- CharSequence cseq = getString(R.string.pincode_removed);
- aDialog.setMessage(cseq);
-
+ cseq = getString(R.string.pincode_removed);
}
- CharSequence okSeq = getString(R.string.common_ok);
- aDialog.setButton(okSeq, new DialogInterface.OnClickListener(){
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- finish();
- return;
- }
-
- });
- aDialog.show();
+
+ Toast.makeText(this, cseq, Toast.LENGTH_LONG).show();
+ finish();
}
protected void savePincodeAndExit(){
SharedPreferences.Editor appPrefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext()).edit();
- appPrefs.putString("PrefPinCode1", tempText[0]);
- appPrefs.putString("PrefPinCode2",tempText[1]);
- appPrefs.putString("PrefPinCode3", tempText[2]);
- appPrefs.putString("PrefPinCode4", tempText[3]);
+ appPrefs.putString("PrefPinCode1", mTempText[0]);
+ appPrefs.putString("PrefPinCode2",mTempText[1]);
+ appPrefs.putString("PrefPinCode3", mTempText[2]);
+ appPrefs.putString("PrefPinCode4", mTempText[3]);
appPrefs.putBoolean("set_pincode",true);
appPrefs.commit();
pinCodeEnd(true);
-
-
-
}
protected void clearBoxes(){
-
mText1.setText("");
mText2.setText("");
mText3.setText("");
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()== 0){
-
- if (activity.equals("preferences")){
+ if (ACTION_TOGGLE.equals(getIntent().getAction())){
SharedPreferences.Editor appPrefsE = PreferenceManager
-
.getDefaultSharedPreferences(getApplicationContext()).edit();
SharedPreferences appPrefs = PreferenceManager
finish();
}
return true;
-
}
-
return super.onKeyDown(keyCode, event);
- }
-
-
-
-
-
+ }
}