- moved check to PinCheck
authortobiasKaminsky <tobias@kaminsky.me>
Mon, 29 Dec 2014 08:15:51 +0000 (09:15 +0100)
committertobiasKaminsky <tobias@kaminsky.me>
Mon, 29 Dec 2014 08:15:51 +0000 (09:15 +0100)
- hardcoded 10s time-out

src/com/owncloud/android/MainApp.java
src/com/owncloud/android/authentication/PinCheck.java [new file with mode: 0644]
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
src/com/owncloud/android/ui/activity/PinCodeActivity.java
src/com/owncloud/android/ui/fragment/OCFileListFragment.java
src/com/owncloud/android/ui/preview/PreviewImageActivity.java

index c2a4c68..84abf1b 100644 (file)
@@ -19,6 +19,7 @@ package com.owncloud.android;
 import android.app.Application;
 import android.content.Context;
 
 import android.app.Application;
 import android.content.Context;
 
+import com.owncloud.android.authentication.PinCheck;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
 import com.owncloud.android.lib.common.OwnCloudClientManagerFactory.Policy;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
 import com.owncloud.android.lib.common.OwnCloudClientManagerFactory.Policy;
@@ -45,7 +46,7 @@ public class MainApp extends Application {
     
     public void onCreate(){
         super.onCreate();
     
     public void onCreate(){
         super.onCreate();
-        MainApp.mContext = getApplicationContext();
+        MainApp.mContext = getApplicationContext();     
         
         boolean isSamlAuth = AUTH_ON.equals(getString(R.string.auth_method_saml_web_sso));
         
         
         boolean isSamlAuth = AUTH_ON.equals(getString(R.string.auth_method_saml_web_sso));
         
@@ -74,7 +75,7 @@ public class MainApp extends Application {
     public static Context getAppContext() {
         return MainApp.mContext;
     }
     public static Context getAppContext() {
         return MainApp.mContext;
     }
-
+    
     // Methods to obtain Strings referring app_name 
     //   From AccountAuthenticator 
     //   public static final String ACCOUNT_TYPE = "owncloud";    
     // Methods to obtain Strings referring app_name 
     //   From AccountAuthenticator 
     //   public static final String ACCOUNT_TYPE = "owncloud";    
diff --git a/src/com/owncloud/android/authentication/PinCheck.java b/src/com/owncloud/android/authentication/PinCheck.java
new file mode 100644 (file)
index 0000000..7be7741
--- /dev/null
@@ -0,0 +1,28 @@
+package com.owncloud.android.authentication;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+
+import com.owncloud.android.MainApp;
+import com.owncloud.android.ui.activity.PinCodeActivity;
+
+public class PinCheck extends Activity {
+
+    private static Long timestamp = 0l;
+    
+    public static void setUnlockTimestamp() {
+        timestamp = System.currentTimeMillis();
+    }
+
+    public static boolean checkIfPinEntry(){
+        if ((System.currentTimeMillis() - timestamp) > 10000){
+            SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(MainApp.getAppContext());
+            if (appPrefs.getBoolean("set_pincode", false)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
index 8836ddc..2283932 100644 (file)
@@ -71,6 +71,7 @@ import com.actionbarsherlock.view.Window;
 import com.owncloud.android.BuildConfig;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.BuildConfig;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
+import com.owncloud.android.authentication.PinCheck;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
@@ -160,6 +161,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
     private String DIALOG_UNTRUSTED_CERT;
     
     private OCFile mWaitingToSend;
     private String DIALOG_UNTRUSTED_CERT;
     
     private OCFile mWaitingToSend;
+    
+    private Boolean mUnlocked = false;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -168,9 +171,20 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
 
         super.onCreate(savedInstanceState); // this calls onAccountChanged() when ownCloud Account is valid
 
 
         super.onCreate(savedInstanceState); // this calls onAccountChanged() when ownCloud Account is valid
 
-        checkIfRequestPin(savedInstanceState);
-
-        /// grant that FileObserverService is watching favourite files
+        
+        if (PinCheck.checkIfPinEntry()){
+            Intent i = new Intent(MainApp.getAppContext(), PinCodeActivity.class);
+            i.putExtra(PinCodeActivity.EXTRA_ACTIVITY, "FileDisplayActivity");
+            startActivity(i);
+        }
+        
+//        if (mUnlocked == false){
+//            checkIfRequestPin(savedInstanceState);
+//        } else {
+//            mUnlocked = false;
+//        }
+        
+        /// grant that FileObserverService is watching favorite files
         if (savedInstanceState == null) {
             Intent initObserversIntent = FileObserverService.makeInitIntent(this);
             startService(initObserversIntent);
         if (savedInstanceState == null) {
             Intent initObserversIntent = FileObserverService.makeInitIntent(this);
             startService(initObserversIntent);
@@ -209,15 +223,6 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
         Log_OC.d(TAG, "onCreate() end");
     }
     
         Log_OC.d(TAG, "onCreate() end");
     }
     
-    private void checkIfRequestPin(Bundle savedInstanceState){
-     // PIN CODE request ;  best location is to decide, let's try this first
-        if (getIntent().getAction() != null && getIntent().getAction().equals(Intent.ACTION_MAIN) && savedInstanceState == null) {
-            requestPinCode();
-        } else if (getIntent().getAction() == null && savedInstanceState == null) {
-            requestPinCode();
-        }
-    }
-    
     @Override
     protected void onStart() {
         super.onStart();
     @Override
     protected void onStart() {
         super.onStart();
@@ -617,14 +622,6 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
         
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
         
-        Log_OC.d(TAG, "requestCode: " + requestCode);
-        if (requestCode == PinCodeActivity.EXTRA_PIN_CORRECT){
-            Log_OC.d(TAG, "Extra pin: " + resultCode);
-            if (resultCode == RESULT_OK) {
-                resume();
-            }
-        }
-
         if (requestCode == ACTION_SELECT_CONTENT_FROM_APPS && (resultCode == RESULT_OK || resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) {
             //getClipData is only supported on api level 16+, Jelly Bean
             if (data.getData() == null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
         if (requestCode == ACTION_SELECT_CONTENT_FROM_APPS && (resultCode == RESULT_OK || resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) {
             //getClipData is only supported on api level 16+, Jelly Bean
             if (data.getData() == null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
@@ -814,7 +811,11 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
         super.onResume();
         Log_OC.e(TAG, "onResume() start");
         
         super.onResume();
         Log_OC.e(TAG, "onResume() start");
         
-        checkIfRequestPin(null);
+        if (PinCheck.checkIfPinEntry()){
+            Intent i = new Intent(MainApp.getAppContext(), PinCodeActivity.class);
+            i.putExtra(PinCodeActivity.EXTRA_ACTIVITY, "FileDisplayActivity");
+            startActivity(i);
+        }
     }
     
     private void resume(){
     }
     
     private void resume(){
@@ -863,7 +864,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
             mDownloadFinishReceiver = null;
         }
         
             mDownloadFinishReceiver = null;
         }
         
-        
+        PinCheck.setUnlockTimestamp();
         Log_OC.d(TAG, "onPause() end");
         super.onPause();
     }
         Log_OC.d(TAG, "onPause() end");
         super.onPause();
     }
@@ -1455,23 +1456,6 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
         }
     };    
 
         }
     };    
 
-
-
-    /**
-     * Launch an intent to request the PIN code to the user before letting him use the app
-     */
-    private void requestPinCode() {
-        boolean pinStart = false;
-        SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
-        pinStart = appPrefs.getBoolean("set_pincode", false);
-        if (pinStart) {
-            Intent i = new Intent(getApplicationContext(), PinCodeActivity.class);
-            // i.putExtra(PinCodeActivity.EXTRA_ACTIVITY, "FileDisplayActivity");
-            startActivityForResult(i, PinCodeActivity.EXTRA_PIN_CORRECT);
-        }
-    }
-
-
     @Override
     public void onSavedCertificate() {
         startSyncFolderOperation(getCurrentDir(), false);
     @Override
     public void onSavedCertificate() {
         startSyncFolderOperation(getCurrentDir(), false);
index e6c8334..defa0de 100644 (file)
@@ -20,7 +20,9 @@ import java.util.Arrays;
 
 import com.actionbarsherlock.app.ActionBar;
 import com.actionbarsherlock.app.SherlockFragmentActivity;
 
 import com.actionbarsherlock.app.ActionBar;
 import com.actionbarsherlock.app.SherlockFragmentActivity;
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.R;
+import com.owncloud.android.authentication.PinCheck;
 import com.owncloud.android.utils.DisplayUtils;
 
 import android.app.AlertDialog;
 import com.owncloud.android.utils.DisplayUtils;
 
 import android.app.AlertDialog;
@@ -46,7 +48,6 @@ public class PinCodeActivity extends SherlockFragmentActivity {
   
     public final static String EXTRA_ACTIVITY = "com.owncloud.android.ui.activity.PinCodeActivity.ACTIVITY";
     public final static String EXTRA_NEW_STATE = "com.owncloud.android.ui.activity.PinCodeActivity.NEW_STATE";
   
     public final static String EXTRA_ACTIVITY = "com.owncloud.android.ui.activity.PinCodeActivity.ACTIVITY";
     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;
     
     private Button mBCancel;
     private TextView mPinHdr;
@@ -367,8 +368,15 @@ public class PinCodeActivity extends SherlockFragmentActivity {
                         mPinCodeChecked = checkPincode();
                     }
                     
                         mPinCodeChecked = checkPincode();
                     }
                     
-                    if (mPinCodeChecked && 
-                            ( mActivity.equals("FileDisplayActivity") || mActivity.equals("PreviewImageActivity") ) ){
+//                    if (mPinCodeChecked && 
+//                            ( mActivity.equals("FileDisplayActivity") || mActivity.equals("PreviewImageActivity") ) ){
+//                        Intent data = new Intent();
+//                        data.putExtra(EXTRA_PIN_CORRECT, true);
+//                        setResult(RESULT_FIRST_USER, data);
+//                        finish();
+                    
+                    if (mPinCodeChecked){
+                        PinCheck.setUnlockTimestamp();
                         finish();
                     } else if (mPinCodeChecked){
                         
                         finish();
                     } else if (mPinCodeChecked){
                         
index fd0b1a5..1390df8 100644 (file)
@@ -396,9 +396,7 @@ public class OCFileListFragment extends ExtendedListFragment {
             
             // Update Footer
             TextView footerText = (TextView) mFooterView.findViewById(R.id.footerText);
             
             // Update Footer
             TextView footerText = (TextView) mFooterView.findViewById(R.id.footerText);
-            Log_OC.d("footer", String.valueOf(System.currentTimeMillis()));
             footerText.setText(generateFooterText(directory));
             footerText.setText(generateFooterText(directory));
-            Log_OC.d("footer", String.valueOf(System.currentTimeMillis()));
         }
     }
     
         }
     }
     
index 1cee30e..514d69b 100644 (file)
@@ -17,6 +17,7 @@
 package com.owncloud.android.ui.preview;
 
 import android.annotation.SuppressLint;
 package com.owncloud.android.ui.preview;
 
 import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
@@ -37,8 +38,10 @@ import com.actionbarsherlock.app.ActionBar;
 import com.actionbarsherlock.view.MenuItem;
 import com.actionbarsherlock.view.Window;
 import com.ortiz.touch.ExtendedViewPager;
 import com.actionbarsherlock.view.MenuItem;
 import com.actionbarsherlock.view.Window;
 import com.ortiz.touch.ExtendedViewPager;
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
+import com.owncloud.android.authentication.PinCheck;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader;
@@ -89,6 +92,8 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener {
     
     private View mFullScreenAnchorView;
     
     
     private View mFullScreenAnchorView;
     
+    private Boolean mUnlocked = false;
+    
     
     @Override
     protected void onCreate(Bundle savedInstanceState) {
     
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -103,8 +108,10 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener {
         actionBar.hide();
         
         // PIN CODE request
         actionBar.hide();
         
         // PIN CODE request
-        if (getIntent().getExtras() != null && savedInstanceState == null && fromNotification()) {
-            requestPinCode();
+        if (PinCheck.checkIfPinEntry()){
+            Intent i = new Intent(MainApp.getAppContext(), PinCodeActivity.class);
+            i.putExtra(PinCodeActivity.EXTRA_ACTIVITY, "FileDisplayActivity");
+            startActivity(i);
         }
 
         // Make sure we're running on Honeycomb or higher to use FullScreen and
         }
 
         // Make sure we're running on Honeycomb or higher to use FullScreen and
@@ -322,6 +329,15 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener {
     @Override
     protected void onResume() {
         super.onResume();
     @Override
     protected void onResume() {
         super.onResume();
+        
+        if (PinCheck.checkIfPinEntry()){
+            Intent i = new Intent(MainApp.getAppContext(), PinCodeActivity.class);
+            i.putExtra(PinCodeActivity.EXTRA_ACTIVITY, "FileDisplayActivity");
+            startActivity(i);
+        }
+    }
+      
+    private void resume(){
         //Log_OC.e(TAG, "ACTIVITY, ONRESUME");
         mDownloadFinishReceiver = new DownloadFinishReceiver();
         
         //Log_OC.e(TAG, "ACTIVITY, ONRESUME");
         mDownloadFinishReceiver = new DownloadFinishReceiver();
         
@@ -338,8 +354,12 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener {
     
     @Override
     public void onPause() {
     
     @Override
     public void onPause() {
-        unregisterReceiver(mDownloadFinishReceiver);
-        mDownloadFinishReceiver = null;
+        if (mDownloadFinishReceiver != null){
+            unregisterReceiver(mDownloadFinishReceiver);
+            mDownloadFinishReceiver = null;
+        }
+        
+        PinCheck.setUnlockTimestamp();
         super.onPause();
     }
     
         super.onPause();
     }
     
@@ -526,22 +546,7 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener {
             }
         }
     }
             }
         }
     }
-    
-    
-    /**
-     * Launch an intent to request the PIN code to the user before letting him use the app
-     */
-    private void requestPinCode() {
-        boolean pinStart = false;
-        SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
-        pinStart = appPrefs.getBoolean("set_pincode", false);
-        if (pinStart) {
-            Intent i = new Intent(getApplicationContext(), PinCodeActivity.class);
-            i.putExtra(PinCodeActivity.EXTRA_ACTIVITY, "PreviewImageActivity");
-            startActivity(i);
-        }
-    }
-
+   
     @Override
     public void onBrowsedDownTo(OCFile folder) {
         // TODO Auto-generated method stub
     @Override
     public void onBrowsedDownTo(OCFile folder) {
         // TODO Auto-generated method stub