]> hydra-www.ietfng.org Git - android-vcpass-oisafe/commitdiff
OI Safe: added new preference to control lock on screen lock
authorrmceoin <rmceoin@72b678ce-9140-0410-bee8-679b907dd61a>
Sun, 9 Aug 2009 22:47:35 +0000 (22:47 +0000)
committerrmceoin <rmceoin@72b678ce-9140-0410-bee8-679b907dd61a>
Sun, 9 Aug 2009 22:47:35 +0000 (22:47 +0000)
git-svn-id: http://openintents.googlecode.com/svn/trunk/Safe@2272 72b678ce-9140-0410-bee8-679b907dd61a

default.properties
res/values/strings.xml
res/xml/preferences.xml
src/org/openintents/safe/CategoryList.java
src/org/openintents/safe/IntentHandler.java
src/org/openintents/safe/Preferences.java
src/org/openintents/safe/service/ServiceDispatch.aidl
src/org/openintents/safe/service/ServiceDispatchImpl.java

index 9c6195ea1cc981e50de6f077cebf70e9c6715859..0a007ab5e2f26540fa26b796c68f63b5249f688b 100644 (file)
@@ -8,7 +8,7 @@
 # project structure.
 
 # Project target.
-target=android-2
+target=android-3
 # apk configurations. This property allows creation of APK files with limited
 # resources. For example, if your application contains many locales and
 # you wish to release multiple smaller apks instead of a large one, you can
index f90eba99c512a314e0aada88930fd6a613eff56e..930bdb244d816abd7f0da2a5f4dd0d7cb8d6ec36 100644 (file)
        \r
        <string name="pref_dialog_title_lock_timeout">Auto lock timeout</string>\r
        \r
+       <!-- Preference title -->\r
+       <string name="pref_title_lock_on_screen_lock">Lock on screen lock</string>\r
+       \r
+       <!-- Preference summary for lock on screen lock -->\r
+       <string name="pref_summary_lock_on_screen_lock">Lock when the screen locks</string>\r
+       \r
        <!-- Preference title: use a numeric keypad to enter the password -->\r
        <string name="pref_title_keypad">Keypad</string>\r
        \r
index 3b062fcc770e885e98a41e79e779f18dd4677991..2bd20f1b7bf359a7bae1424851d9af2876c22232 100644 (file)
                 android:entryValues="@array/pref_entryvalues_lock_timeout"
                 android:dialogTitle="@string/pref_dialog_title_lock_timeout"\r
                android:defaultValue="5" />    
-
+               <CheckBoxPreference
+                       android:title="@string/pref_title_lock_on_screen_lock"
+                       android:summary="@string/pref_summary_lock_on_screen_lock"
+                       android:key="lock_on_screen_lock"
+                       android:defaultValue="true"/>
                <CheckBoxPreference
                        android:title="@string/pref_title_keypad"
                        android:summary="@string/pref_summary_keypad"
index 0b1d7ea9e60e7292c7b8271402ff37103e09281b..43f9ee35d18fdf58d761d1ea789628b71d82eae9 100644 (file)
@@ -122,11 +122,15 @@ public class CategoryList extends ListActivity {
     private Intent restartTimerIntent;
     private int lastPosition=0;
     
+    private boolean lockOnScreenLock=true;
+    
     BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
         public void onReceive(Context context, Intent intent) {
             if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
                 if (debug) Log.d(TAG,"caught ACTION_SCREEN_OFF");
-                masterKey=null;
+                if (lockOnScreenLock) {
+                        masterKey=null;
+                }
             } else if (intent.getAction().equals(CryptoIntents.ACTION_CRYPTO_LOGGED_OUT)) {
                 if (debug) Log.d(TAG,"caught ACTION_CRYPTO_LOGGED_OUT");
                 lockAndShutFrontDoor();
@@ -248,6 +252,8 @@ public class CategoryList extends ListActivity {
        }
 
         showFirstTimeWarningDialog();
+               SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
+               lockOnScreenLock = sp.getBoolean(Preferences.PREFERENCE_LOCK_ON_SCREEN_LOCK, true);
     }
 
        /**
index 4b1e34f832bdcbfd1c0451ff60d7ff68ca8f41ae..76186b16ffe832aeda8e03f583680748fdc6a07e 100644 (file)
@@ -60,7 +60,7 @@ public class IntentHandler extends Activity {
        private CryptoHelper ch;\r
        \r
        // service elements\r
-    private ServiceDispatch service;\r
+    private static ServiceDispatch service=null;\r
     private ServiceDispatchConnection conn;\r
        private Intent mServiceIntent;\r
 \r
@@ -133,7 +133,9 @@ public class IntentHandler extends Activity {
        private void setServiceParametersFromExtrasAndDispatchAction(Intent data) {\r
                salt = data.getStringExtra("salt");\r
                masterKey = data.getStringExtra("masterKey");\r
-               String timeout = mPreferences.getString(Preferences.PREFERENCE_LOCK_TIMEOUT, Preferences.PREFERENCE_LOCK_TIMEOUT_DEFAULT_VALUE); \r
+               String timeout = mPreferences.getString(Preferences.PREFERENCE_LOCK_TIMEOUT, Preferences.PREFERENCE_LOCK_TIMEOUT_DEFAULT_VALUE);\r
+               boolean lockOnScreenLock = mPreferences.getBoolean(Preferences.PREFERENCE_LOCK_ON_SCREEN_LOCK, true);\r
+\r
                int timeoutMinutes=5; // default to 5\r
                try {\r
                        timeoutMinutes = Integer.valueOf(timeout);\r
@@ -143,6 +145,7 @@ public class IntentHandler extends Activity {
                \r
                try {\r
                        service.setTimeoutMinutes(timeoutMinutes);\r
+                       service.setLockOnScreenLock(lockOnScreenLock);\r
                        service.setSalt(salt);\r
                        service.setPassword(masterKey); // should already be connected.\r
                } catch (RemoteException e1) {\r
@@ -560,6 +563,18 @@ public class IntentHandler extends Activity {
                        \r
                        if (debug) Log.d( TAG,"onServiceDisconnected" );\r
                }\r
+               \r
        };\r
 \r
+       public static void setLockOnScreenLock(boolean lock)\r
+       {\r
+               if (service!=null) {\r
+                       try {\r
+                               service.setLockOnScreenLock(lock);\r
+                       } catch (RemoteException e) {\r
+                               Log.d(TAG, e.toString());\r
+                       }\r
+               }\r
+       }\r
+\r
 }\r
index 82a92e859bb2fc1c58d27fa13d07235318028fbb..900431209c7afaa3c09fc5c29508314234509ddb 100644 (file)
@@ -1,13 +1,16 @@
 package org.openintents.safe;
 
+import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.preference.PreferenceActivity;
+import android.preference.PreferenceManager;
 
 public class Preferences extends PreferenceActivity {
 
        public static final String PREFERENCE_ALLOW_EXTERNAL_ACCESS = "external_access";
        public static final String PREFERENCE_LOCK_TIMEOUT = "lock_timeout";
        public static final String PREFERENCE_LOCK_TIMEOUT_DEFAULT_VALUE = "5";
+       public static final String PREFERENCE_LOCK_ON_SCREEN_LOCK = "lock_on_screen_lock";
        public static final String PREFERENCE_FIRST_TIME_WARNING = "first_time_warning";
        public static final String PREFERENCE_KEYPAD = "keypad";
        public static final String PREFERENCE_KEYPAD_MUTE = "keypad_mute";
@@ -35,4 +38,13 @@ public class Preferences extends PreferenceActivity {
                }
        }
 
+       @Override
+       protected void onPause() {
+               super.onPause();
+
+               SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
+               boolean lockOnScreenLock = mPreferences.getBoolean(Preferences.PREFERENCE_LOCK_ON_SCREEN_LOCK, true);
+               IntentHandler.setLockOnScreenLock(lockOnScreenLock);
+       }
+
 }
index 02d6e7b802186f1c1d9cf38824e9c935516adc62..cbf350f7a6f878601f635b962d09828ea30a4ad0 100644 (file)
@@ -24,4 +24,5 @@ interface ServiceDispatch {
   String encrypt (String clearText);\r
   String decrypt (String cryptoText);\r
   void setTimeoutMinutes(int timeoutMinutesIn);\r
+  void setLockOnScreenLock (boolean lock);\r
 }\r
index 70e3f0072cae0d17e1328186f12bea2bb51fb04a..56065e7835b558b91c8cb87f8b386d619e61cff6 100644 (file)
@@ -45,6 +45,7 @@ public class ServiceDispatchImpl extends Service {
     private int timeoutMinutes = 5;
        private long timeoutUntilStop = timeoutMinutes * 60000;
        private BroadcastReceiver mIntentReceiver;
+    private boolean lockOnScreenLock=true;
     
     @Override
     public IBinder onBind(Intent intent) {
@@ -62,7 +63,9 @@ public class ServiceDispatchImpl extends Service {
           public void onReceive(Context context, Intent intent) {
               if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
                 if (debug) Log.d(TAG,"caught ACTION_SCREEN_OFF");
-                stopSelf();
+                if (lockOnScreenLock) {
+                        stopSelf();
+                }
               } else if (intent.getAction().equals(CryptoIntents.ACTION_RESTART_TIMER)) {
                        restartTimer();
               }
@@ -180,6 +183,11 @@ public class ServiceDispatchImpl extends Service {
                        Log.d(TAG,"set timeout to "+timeoutMinutes);
                }
 
+               public void setLockOnScreenLock (boolean lock){
+                       lockOnScreenLock = lock;
+       }
+
+
     };
 
 }