Prevent that PIN code is requested when system windows partially overlapping the...
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / activity / PinCodeActivity.java
index e6c8334..11ddf11 100644 (file)
@@ -1,5 +1,8 @@
-/* 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,
@@ -18,14 +21,6 @@ package com.owncloud.android.ui.activity;
 
 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.preference.PreferenceManager;
@@ -41,12 +36,19 @@ 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.PassCodeManager;
+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";
-    public final static Integer EXTRA_PIN_CORRECT = 1;
     
     private Button mBCancel;
     private TextView mPinHdr;
@@ -58,8 +60,6 @@ public class PinCodeActivity extends SherlockFragmentActivity {
     
     private String [] mTempText ={"","","",""};
     
-    private String mActivity;
-    
     private boolean mConfirmingPinCode = false;
     private boolean mPinCodeChecked = false;
     private boolean mNewPasswordEntered = false;
@@ -71,9 +71,6 @@ public class PinCodeActivity extends SherlockFragmentActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.pincodelock); 
         
-        Intent intent = getIntent();
-        mActivity = intent.getStringExtra(EXTRA_ACTIVITY);
-     
         mBCancel = (Button) findViewById(R.id.cancel);
         mPinHdr = (TextView) findViewById(R.id.pinHdr);
         mPinHdrExplanation = (TextView) findViewById(R.id.pinHdrExpl);
@@ -95,31 +92,32 @@ public class PinCodeActivity extends SherlockFragmentActivity {
             mPinCodeChecked = true; 
             mNewPasswordEntered = true;
             
-        }else{ 
-            
+        } else {
+
+            /// TODO rewrite this activity; this logic is too twisted
             if (appPrefs.getBoolean("set_pincode", false)){
-               // pincode activated
-               if (mActivity.equals("preferences")){
-                // 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);
+                // 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);
-              mPinCodeChecked = false;
-              setChangePincodeView(true); 
+           } else {
+                // pincode removal
+                mPinHdr.setText(R.string.pincode_remove_your_pincode);
+                mPinHdrExplanation.setVisibility(View.INVISIBLE);
+                mPinCodeChecked = false;
+                setChangePincodeView(true);
            }
            
         }
@@ -367,34 +365,37 @@ public class PinCodeActivity extends SherlockFragmentActivity {
                         mPinCodeChecked = checkPincode();
                     }
                     
-                    if (mPinCodeChecked && 
-                            ( mActivity.equals("FileDisplayActivity") || mActivity.equals("PreviewImageActivity") ) ){
-                        finish();
-                    } else if (mPinCodeChecked){
-                        
-                        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 (!mConfirmingPinCode){
-                                pinCodeChangeRequest();
-                             
+                    if (mPinCodeChecked) {
+                        // TODO remove or update:
+                        // PassCodeManager.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();
+                                }
                             }
+
                         }
-                   
-                        
                     }    
                 }
             }
@@ -553,14 +554,10 @@ public class PinCodeActivity extends SherlockFragmentActivity {
         appPrefs.commit();
         
         pinCodeEnd(true);
-        
-        
-        
     }
     
     
     protected void clearBoxes(){
-        
         mText1.setText("");
         mText2.setText("");
         mText3.setText("");
@@ -572,10 +569,8 @@ public class PinCodeActivity extends SherlockFragmentActivity {
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event){
         if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()== 0){
-            
-            if (mActivity.equals("preferences")){
+            if (ACTION_TOGGLE.equals(getIntent().getAction())){
                 SharedPreferences.Editor appPrefsE = PreferenceManager
-            
                     .getDefaultSharedPreferences(getApplicationContext()).edit();
             
                 SharedPreferences appPrefs = PreferenceManager
@@ -588,14 +583,7 @@ public class PinCodeActivity extends SherlockFragmentActivity {
                 finish();
             }
             return true; 
-            
         }
-        
         return super.onKeyDown(keyCode, event);
-    }
-    
-   
-
-    
-            
+    }     
 }