Quick patch to fix operations not ready for HTTPS
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / activity / PinCodeActivity.java
index c620952..2253d16 100644 (file)
  */
 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;
@@ -42,6 +50,8 @@ 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;
@@ -58,7 +68,7 @@ public class PinCodeActivity extends SherlockFragmentActivity {
     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) {
@@ -66,58 +76,103 @@ public class PinCodeActivity extends SherlockFragmentActivity {
         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();
             }
         });
+        }  
     
     }
     
+    
+    
     /*
      *  
      */
@@ -152,6 +207,7 @@ public class PinCodeActivity extends SherlockFragmentActivity {
             @Override
             public void afterTextChanged(Editable s) {
                 // TODO Auto-generated method stub
+                
 
             }
         });
@@ -171,7 +227,9 @@ public class PinCodeActivity extends SherlockFragmentActivity {
                     if (!confirmingPinCode){
                         tempText[1] = mText2.getText().toString();
                     }
+                    
                     mText3.requestFocus();
+                    
                 }
             }
 
@@ -199,7 +257,8 @@ public class PinCodeActivity extends SherlockFragmentActivity {
 
                     mText1.setText("");
                     mText1.requestFocus();
-                    tempText[0] = "";
+                    if (!confirmingPinCode)
+                       tempText[0] = "";
                     bChange= false;
                 
                 }else if(!bChange){
@@ -215,8 +274,14 @@ public class PinCodeActivity extends SherlockFragmentActivity {
             @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);
                 }
                 
             }
@@ -237,6 +302,7 @@ public class PinCodeActivity extends SherlockFragmentActivity {
                         tempText[2] = mText3.getText().toString();
                     }
                     mText4.requestFocus();
+                    
                 }
             }
 
@@ -262,7 +328,8 @@ public class PinCodeActivity extends SherlockFragmentActivity {
 
                 if (keyCode == KeyEvent.KEYCODE_DEL && bChange) {
                     mText2.requestFocus();
-                    tempText[1] = "";
+                    if (!confirmingPinCode)
+                        tempText[1] = "";
                     mText2.setText("");
                     bChange= false;
                     
@@ -279,10 +346,19 @@ public class PinCodeActivity extends SherlockFragmentActivity {
             @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);
                 }
                 
             }
@@ -296,7 +372,7 @@ public class PinCodeActivity extends SherlockFragmentActivity {
             @Override
             public void onTextChanged(CharSequence s, int start, int before,
                     int count) {
-                // TODO Auto-generated method stub
+                
                 if (s.length() > 0) {
                    
                    if (!confirmingPinCode){
@@ -308,12 +384,12 @@ public class PinCodeActivity extends SherlockFragmentActivity {
                        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
@@ -321,20 +397,15 @@ public class PinCodeActivity extends SherlockFragmentActivity {
                            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();
                            }
                        }
@@ -369,7 +440,8 @@ public class PinCodeActivity extends SherlockFragmentActivity {
 
                 if (keyCode == KeyEvent.KEYCODE_DEL && bChange) {
                     mText3.requestFocus();
-                    tempText[2]="";
+                    if (!confirmingPinCode)
+                        tempText[2]="";
                     mText3.setText("");
                     bChange= false;
                     
@@ -385,12 +457,27 @@ public class PinCodeActivity extends SherlockFragmentActivity {
             @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);
                 }
                 
             }
@@ -403,37 +490,9 @@ public class PinCodeActivity extends SherlockFragmentActivity {
     
     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;
         
     }
     
@@ -458,10 +517,14 @@ public class PinCodeActivity extends SherlockFragmentActivity {
         
         
         }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) {
@@ -472,7 +535,7 @@ public class PinCodeActivity extends SherlockFragmentActivity {
             });
             aDialog.show();
             clearBoxes(); 
-            mPinHdr.setText("Configure your PIN");
+            mPinHdr.setText(R.string.pincode_enter_pin_code);
             newPasswordEntered = true;
             confirmingPinCode = false;
             
@@ -500,10 +563,14 @@ public class PinCodeActivity extends SherlockFragmentActivity {
             
         } 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) {
@@ -513,12 +580,43 @@ public class PinCodeActivity extends SherlockFragmentActivity {
                 
             });
             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();
@@ -530,7 +628,10 @@ public class PinCodeActivity extends SherlockFragmentActivity {
         appPrefs.putBoolean("set_pincode",true);
         appPrefs.commit();
         
-        finish();
+        pinCodeEnd(true);
+        
+        
+        
     }
     
     
@@ -542,6 +643,35 @@ public class PinCodeActivity extends SherlockFragmentActivity {
         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);
+    }
+    
+   
+
+    
             
 }