Let SetupWizard XL use Auto_TIME_ZONE

Bug: 2989496
Change-Id: I37719a70783fc0505598ef9aaad1792d4a0ca1af
diff --git a/src/com/android/settings/DateTimeSettingsSetupWizard.java b/src/com/android/settings/DateTimeSettingsSetupWizard.java
index 016a7f2..c47af0a 100644
--- a/src/com/android/settings/DateTimeSettingsSetupWizard.java
+++ b/src/com/android/settings/DateTimeSettingsSetupWizard.java
@@ -43,6 +43,8 @@
     private boolean mXLargeScreenSize;
 
     /* Available only in XL */
+    private CompoundButton mAutoDateTimeButton;
+    private CompoundButton mAutoTimeZoneButton;
     private Button mTimeZone;
     private TimePicker mTimePicker;
     private DatePicker mDatePicker;
@@ -65,28 +67,25 @@
     }
 
     public void initUiForXl() {
-        // TODO: use system value
-        final boolean autoTimeZoneEnabled = false;
-        final CompoundButton autoTimeZoneButton =
-                (CompoundButton)findViewById(R.id.time_zone_auto);
-        autoTimeZoneButton.setChecked(autoTimeZoneEnabled);
-        autoTimeZoneButton.setOnCheckedChangeListener(this);
-        // TODO: remove this after the system support.
-        autoTimeZoneButton.setEnabled(false);
-
-        final boolean autoDateTimeEnabled = isAutoDateTimeEnabled();
-        final CompoundButton autoDateTimeButton =
-                (CompoundButton)findViewById(R.id.date_time_auto);
-        autoDateTimeButton.setChecked(autoDateTimeEnabled);
-        autoDateTimeButton.setText(autoDateTimeEnabled ? R.string.date_time_auto_summaryOn :
-                R.string.date_time_auto_summaryOff);
-        autoDateTimeButton.setOnCheckedChangeListener(this);
+        final boolean autoTimeZoneEnabled = isAutoTimeZoneEnabled();
+        mAutoTimeZoneButton = (CompoundButton)findViewById(R.id.time_zone_auto);
+        mAutoTimeZoneButton.setChecked(autoTimeZoneEnabled);
+        mAutoTimeZoneButton.setOnCheckedChangeListener(this);
+        mAutoTimeZoneButton.setText(autoTimeZoneEnabled ? R.string.zone_auto_summaryOn :
+                R.string.zone_auto_summaryOff);
 
         final TimeZone tz = TimeZone.getDefault();
         mTimeZone = (Button)findViewById(R.id.current_time_zone);
         mTimeZone.setText(DateTimeSettings.getTimeZoneText(tz));
         mTimeZone.setOnClickListener(this);
-        mTimeZone.setEnabled(!autoDateTimeEnabled);
+        mTimeZone.setEnabled(!autoTimeZoneEnabled);
+
+        final boolean autoDateTimeEnabled = isAutoDateTimeEnabled();
+        mAutoDateTimeButton = (CompoundButton)findViewById(R.id.date_time_auto);
+        mAutoDateTimeButton.setChecked(autoDateTimeEnabled);
+        mAutoDateTimeButton.setText(autoDateTimeEnabled ? R.string.date_time_auto_summaryOn :
+                R.string.date_time_auto_summaryOff);
+        mAutoDateTimeButton.setOnCheckedChangeListener(this);
 
         mTimePicker = (TimePicker)findViewById(R.id.time_picker);
         mTimePicker.setEnabled(!autoDateTimeEnabled);
@@ -112,6 +111,13 @@
         }
         case R.id.next_button: {
             if (mXLargeScreenSize) {
+                Settings.System.putInt(getContentResolver(), Settings.System.AUTO_TIME_ZONE,
+                        mAutoTimeZoneButton.isChecked() ? 1 : 0);
+                Settings.System.putInt(getContentResolver(), Settings.System.AUTO_TIME,
+                        mAutoDateTimeButton.isChecked() ? 1 : 0);
+                // Note: in non-XL, Date & Time is stored by DatePickerDialog/TimePickerDialog,
+                // so we don't need to save those values there, while in XL, we need to as
+                // we don't use those Dialogs.
                 DateTimeSettings.setDate(mDatePicker.getYear(), mDatePicker.getMonth(),
                         mDatePicker.getDayOfMonth());
                 DateTimeSettings.setTime(
@@ -129,16 +135,27 @@
     @Override
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
         final boolean autoEnabled = isChecked;  // just for readibility.
-        Settings.System.putInt(getContentResolver(),
-                Settings.System.AUTO_TIME,
-                isChecked ? 1 : 0);
-        if (isChecked) {
-            findViewById(R.id.current_time_zone).setVisibility(View.VISIBLE);
-            findViewById(R.id.zone_picker).setVisibility(View.GONE);
+        if (buttonView == mAutoTimeZoneButton) {
+            // In XL screen, we save all the state only when the next button is pressed.
+            if (!mXLargeScreenSize) {
+                Settings.System.putInt(getContentResolver(),
+                        Settings.System.AUTO_TIME_ZONE,
+                        isChecked ? 1 : 0);
+            }
+            mTimeZone.setEnabled(!autoEnabled);
+            if (isChecked) {
+                findViewById(R.id.current_time_zone).setVisibility(View.VISIBLE);
+                findViewById(R.id.zone_picker).setVisibility(View.GONE);
+            }
+        } else if (buttonView == mAutoDateTimeButton) {
+            if (!mXLargeScreenSize) {
+                Settings.System.putInt(getContentResolver(),
+                        Settings.System.AUTO_TIME,
+                        isChecked ? 1 : 0);
+            }
+            mTimePicker.setEnabled(!autoEnabled);
+            mDatePicker.setEnabled(!autoEnabled);
         }
-        mTimeZone.setEnabled(!autoEnabled);
-        mTimePicker.setEnabled(!autoEnabled);
-        mDatePicker.setEnabled(!autoEnabled);
         if (autoEnabled) {
             final View focusedView = getCurrentFocus();
             if (focusedView != null) {
@@ -167,4 +184,13 @@
             return true;
         }
     }
+
+    private boolean isAutoTimeZoneEnabled() {
+        try {
+            return Settings.System.getInt(getContentResolver(),
+                    Settings.System.AUTO_TIME_ZONE) > 0;
+        } catch (SettingNotFoundException e) {
+            return true;
+        }
+    }
 }