OSDN Git Service

Add 'restore on app install?" to Privacy settings UI
authorChristopher Tate <ctate@google.com>
Wed, 3 Feb 2010 20:54:31 +0000 (12:54 -0800)
committerChristopher Tate <ctate@google.com>
Wed, 3 Feb 2010 23:09:20 +0000 (15:09 -0800)
Change-Id: I6fe4b05596881ae26ebf536d9774fb3033aa15f3

res/values/strings.xml
res/xml/privacy_settings.xml
src/com/android/settings/PrivacySettings.java

index edcbe90..0d40330 100644 (file)
@@ -2251,16 +2251,23 @@ found in the list of installed applications.</string>
     <string name="privacy_settings_title">Privacy settings</string>
     <!-- Location settings section title -->
     <string name="location_section_title">Location</string>
-    <!-- Settings section title -->
-    <string name="settings_section_title">Settings</string>
+    <!-- Backup section title -->
+    <string name="backup_section_title">Backup and Restore</string>
     <!-- Personal data section title -->
     <string name="personal_data_section_title">Personal data</string>
     <!-- Backup settings menu title -->
     <string name="backup_settings_title">Back up my settings</string>
+    <!-- Auto-restore menu title -->
+    <string name="auto_restore_title">Automatic restore</string>
+    <!-- Summary text of the "automatic restore" setting -->
+    <string name="auto_restore_summary">Restore applications\' data from backup when they are installed</string>
     <!-- Dialog title for confirmation to erase backup data from server -->
-    <string name="backup_erase_dialog_title">Settings backup</string>
+    <string name="backup_erase_dialog_title">Backup</string>
     <!-- Dialog title for confirmation to erase backup data from server -->
-    <string name="backup_erase_dialog_message">Are you sure you want to stop backing up your settings and erase all copies on Google servers?</string>
+    <string name="backup_erase_dialog_message">Are you sure you want to stop backing up your settings and application data and erase all copies on Google servers?</string>
+
+    <!-- Do not translate. Obsolete Settings section title - STOPSHIP remove before shipping -->
+    <string name="settings_section_title">Settings</string>
 
     <!-- Device admin settings screen --><skip/>
     <!-- Device admin settings activity title -->
index 92955a5..9a440cc 100644 (file)
                 android:summary="@string/use_location_summary"/>
     </PreferenceCategory>
 
-    <PreferenceCategory android:key="settings_category"
-            android:title="@string/settings_section_title">
+    <PreferenceCategory android:key="backup_category"
+            android:title="@string/backup_section_title">
         <!-- Backup settings -->
         <CheckBoxPreference
                 android:key="backup_settings"
                 android:title="@string/backup_settings_title"
                 android:persistent="false" />
+        <CheckBoxPreference
+                android:key="auto_restore"
+                android:title="@string/auto_restore_title"
+                android:summary="@string/auto_restore_summary"
+                android:persistent="false" />
     </PreferenceCategory>
 
     <PreferenceCategory
index 611af04..a92f09b 100644 (file)
@@ -47,12 +47,14 @@ public class PrivacySettings extends PreferenceActivity implements
     // Vendor specific
     private static final String GSETTINGS_PROVIDER = "com.google.settings";
     private static final String LOCATION_CATEGORY = "location_category";
-    private static final String SETTINGS_CATEGORY = "settings_category";
+    private static final String BACKUP_CATEGORY = "backup_category";
     private static final String USE_LOCATION = "use_location";
     private static final String BACKUP_SETTINGS = "backup_settings";
+    private static final String AUTO_RESTORE = "auto_restore";
     private static final String KEY_DONE_USE_LOCATION = "doneLocation";
     private CheckBoxPreference mUseLocation;
     private CheckBoxPreference mBackup;
+    private CheckBoxPreference mAutoRestore;
     private boolean mOkClicked;
     private Dialog mConfirmDialog;
 
@@ -64,14 +66,16 @@ public class PrivacySettings extends PreferenceActivity implements
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.privacy_settings);
+        final PreferenceScreen screen = getPreferenceScreen();
 
-        mUseLocation = (CheckBoxPreference) getPreferenceScreen().findPreference(USE_LOCATION);
-        mBackup = (CheckBoxPreference) getPreferenceScreen().findPreference(BACKUP_SETTINGS);
+        mUseLocation = (CheckBoxPreference) screen.findPreference(USE_LOCATION);
+        mBackup = (CheckBoxPreference) screen.findPreference(BACKUP_SETTINGS);
+        mAutoRestore = (CheckBoxPreference) screen.findPreference(AUTO_RESTORE);
 
         // Vendor specific
         if (getPackageManager().resolveContentProvider(GSETTINGS_PROVIDER, 0) == null) {
-            getPreferenceScreen().removePreference(findPreference(LOCATION_CATEGORY));
-            getPreferenceScreen().removePreference(findPreference(SETTINGS_CATEGORY));
+            screen.removePreference(findPreference(LOCATION_CATEGORY));
+            screen.removePreference(findPreference(BACKUP_CATEGORY));
         }
         updateToggles();
 
@@ -118,6 +122,18 @@ public class PrivacySettings extends PreferenceActivity implements
             } else {
                 setBackupEnabled(true);
             }
+        } else if (preference == mAutoRestore) {
+            IBackupManager bm = IBackupManager.Stub.asInterface(
+                    ServiceManager.getService(Context.BACKUP_SERVICE));
+            if (bm != null) {
+                // TODO: disable via the backup manager interface
+                boolean curState = mAutoRestore.isChecked();
+                try {
+                    bm.setAutoRestore(curState);
+                } catch (RemoteException e) {
+                    mAutoRestore.setChecked(!curState);
+                }
+            }
         }
 
         return false;
@@ -171,8 +187,14 @@ public class PrivacySettings extends PreferenceActivity implements
         ContentResolver res = getContentResolver();
         mUseLocation.setChecked(Settings.Secure.getInt(res,
                 Settings.Secure.USE_LOCATION_FOR_SERVICES, 2) == 1);
-        mBackup.setChecked(Settings.Secure.getInt(res,
-                Settings.Secure.BACKUP_ENABLED, 0) == 1);
+
+        final boolean backupEnabled = Settings.Secure.getInt(res,
+                Settings.Secure.BACKUP_ENABLED, 0) == 1;
+        mBackup.setChecked(backupEnabled);
+
+        mAutoRestore.setChecked(Settings.Secure.getInt(res,
+                Settings.Secure.BACKUP_AUTO_RESTORE, 0) == 1);
+        mAutoRestore.setEnabled(backupEnabled);
     }
 
     private void updateUseLocation() {
@@ -196,6 +218,7 @@ public class PrivacySettings extends PreferenceActivity implements
                 mUseLocation.setChecked(false);
             } else if (mDialogType == DIALOG_ERASE_BACKUP) {
                 mBackup.setChecked(true);
+                mAutoRestore.setEnabled(true);
             }
         }
         updateUseLocation();
@@ -248,9 +271,11 @@ public class PrivacySettings extends PreferenceActivity implements
                 bm.setBackupEnabled(enable);
             } catch (RemoteException e) {
                 mBackup.setChecked(!enable);
+                mAutoRestore.setEnabled(!enable);
                 return;
             }
         }
         mBackup.setChecked(enable);
+        mAutoRestore.setEnabled(enable);
     }
 }