Loading res/xml/date_time_prefs.xml +17 −10 Original line number Diff line number Diff line Loading @@ -24,19 +24,22 @@ android:key="auto_time" android:title="@string/date_time_auto" settings:useAdditionalSummary="true" settings:userRestriction="no_config_date_time"/> settings:userRestriction="no_config_date_time" settings:controller="com.android.settings.datetime.AutoTimePreferenceController" /> <com.android.settingslib.RestrictedPreference android:key="date" android:title="@string/date_time_set_date_title" android:summary="@string/summary_placeholder" settings:userRestriction="no_config_date_time"/> settings:userRestriction="no_config_date_time" settings:controller="com.android.settings.datetime.DatePreferenceController" /> <com.android.settingslib.RestrictedPreference android:key="time" android:title="@string/date_time_set_time_title" android:summary="@string/summary_placeholder" settings:userRestriction="no_config_date_time"/> settings:userRestriction="no_config_date_time" settings:controller="com.android.settings.datetime.TimePreferenceController" /> <PreferenceCategory android:key="timezone_preference_category" Loading @@ -45,7 +48,8 @@ <com.android.settingslib.RestrictedSwitchPreference android:key="auto_zone" android:title="@string/zone_auto_title" settings:userRestriction="no_config_date_time"/> settings:userRestriction="no_config_date_time" settings:controller="com.android.settings.datetime.AutoTimeZonePreferenceController" /> <com.android.settingslib.widget.BannerMessagePreference android:key="location_time_zone_detection_status" Loading @@ -53,7 +57,7 @@ settings:controller="com.android.settings.datetime.LocationProviderStatusPreferenceController"/> <!-- This preference gets removed if location-based time zone detection is not supported --> <SwitchPreferenceCompat <SwitchPreference android:key="location_time_zone_detection" android:title="@string/location_time_zone_detection_toggle_title" settings:controller="com.android.settings.datetime.LocationTimeZoneDetectionPreferenceController"/> Loading @@ -64,7 +68,8 @@ android:summary="@string/summary_placeholder" android:fragment="com.android.settings.datetime.timezone.TimeZoneSettings" settings:userRestriction="no_config_date_time" settings:keywords="@string/keywords_time_zone"/> settings:keywords="@string/keywords_time_zone" settings:controller="com.android.settings.datetime.TimeZonePreferenceController" /> </PreferenceCategory> Loading @@ -72,13 +77,15 @@ android:key="time_format_preference_category" android:title="@string/time_format_category_title" settings:keywords="@string/keywords_time_format"> <SwitchPreferenceCompat <SwitchPreference android:key="auto_24hour" android:title="@string/date_time_24hour_auto"/> android:title="@string/date_time_24hour_auto" settings:controller="com.android.settings.datetime.AutoTimeFormatPreferenceController" /> <SwitchPreferenceCompat <SwitchPreference android:key="24 hour" android:title="@string/date_time_24hour" /> android:title="@string/date_time_24hour" settings:controller="com.android.settings.datetime.TimeFormatPreferenceController" /> </PreferenceCategory> </PreferenceScreen> src/com/android/settings/datetime/AutoTimeFormatPreferenceController.java +16 −31 Original line number Diff line number Diff line Loading @@ -19,53 +19,33 @@ package com.android.settings.datetime; import android.content.Context; import android.provider.Settings; import android.provider.Settings.System; import android.text.TextUtils; import android.text.format.DateFormat; import androidx.preference.Preference; import androidx.preference.TwoStatePreference; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; import java.util.Locale; public class AutoTimeFormatPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin { private static final String KEY_AUTO_24_HOUR = "auto_24hour"; public class AutoTimeFormatPreferenceController extends TogglePreferenceController { public AutoTimeFormatPreferenceController(Context context, UpdateTimeAndDateCallback callback) { super(context); public AutoTimeFormatPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } @Override public boolean isAvailable() { return true; public int getAvailabilityStatus() { return AVAILABLE; } @Override public String getPreferenceKey() { return KEY_AUTO_24_HOUR; public boolean isChecked() { return isAutoTimeFormatSelection(mContext); } @Override public void updateState(Preference preference) { if (!(preference instanceof TwoStatePreference)) { return; } ((TwoStatePreference) preference).setChecked(isAutoTimeFormatSelection(mContext)); } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (!(preference instanceof TwoStatePreference) || !TextUtils.equals(KEY_AUTO_24_HOUR, preference.getKey())) { return false; } boolean auto24HourEnabled = ((TwoStatePreference) preference).isChecked(); public boolean setChecked(boolean isChecked) { Boolean is24Hour; if (auto24HourEnabled) { if (isChecked) { is24Hour = null; } else { is24Hour = is24HourLocale(mContext.getResources().getConfiguration().locale); Loading @@ -74,6 +54,11 @@ public class AutoTimeFormatPreferenceController extends AbstractPreferenceContro return true; } @Override public int getSliceHighlightMenuRes() { return R.string.menu_key_system; } boolean is24HourLocale(Locale locale) { return DateFormat.is24HourLocale(locale); } Loading src/com/android/settings/datetime/AutoTimePreferenceController.java +21 −30 Original line number Diff line number Diff line Loading @@ -27,28 +27,26 @@ import android.app.time.TimeConfiguration; import android.app.time.TimeManager; import android.content.Context; import androidx.preference.Preference; import androidx.preference.TwoStatePreference; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; public class AutoTimePreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener { public class AutoTimePreferenceController extends TogglePreferenceController { private static final String KEY_AUTO_TIME = "auto_time"; private final UpdateTimeAndDateCallback mCallback; private UpdateTimeAndDateCallback mCallback; private final TimeManager mTimeManager; public AutoTimePreferenceController(Context context, UpdateTimeAndDateCallback callback) { super(context); public AutoTimePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mTimeManager = context.getSystemService(TimeManager.class); } public void setDateAndTimeCallback(UpdateTimeAndDateCallback callback) { mCallback = callback; } @Override public boolean isAvailable() { public int getAvailabilityStatus() { TimeCapabilities timeCapabilities = getTimeCapabilitiesAndConfig().getCapabilities(); int capability = timeCapabilities.getConfigureAutoDetectionEnabledCapability(); Loading @@ -57,43 +55,31 @@ public class AutoTimePreferenceController extends AbstractPreferenceController // This method handles the "is visible?" check. switch (capability) { case CAPABILITY_NOT_SUPPORTED: return false; return DISABLED_DEPENDENT_SETTING; case CAPABILITY_POSSESSED: return true; case CAPABILITY_NOT_ALLOWED: // This case is expected for enterprise restrictions, where the toggle should be // present but disabled. Disabling is handled declaratively via the // settings:userRestriction attribute in .xml. The client-side logic is expected to // concur with the capabilities logic in the system server. return true; case CAPABILITY_NOT_APPLICABLE: // CAPABILITY_NOT_APPLICABLE is not currently expected, so this is return value is // arbitrary. return true; return AVAILABLE; default: throw new IllegalStateException("Unknown capability=" + capability); } } @Override public void updateState(Preference preference) { if (!(preference instanceof TwoStatePreference)) { return; } ((TwoStatePreference) preference).setChecked(isEnabled()); public boolean isChecked() { return isEnabled(); } @Override public String getPreferenceKey() { return KEY_AUTO_TIME; } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { boolean autoTimeEnabled = (Boolean) newValue; public boolean setChecked(boolean isChecked) { TimeConfiguration configuration = new TimeConfiguration.Builder() .setAutoDetectionEnabled(autoTimeEnabled) .setAutoDetectionEnabled(isChecked) .build(); boolean result = mTimeManager.updateTimeConfiguration(configuration); Loading @@ -101,6 +87,11 @@ public class AutoTimePreferenceController extends AbstractPreferenceController return result; } @Override public int getSliceHighlightMenuRes() { return R.string.menu_key_system; } /** Returns whether the preference should be "checked", i.e. set to the "on" position. */ @VisibleForTesting public boolean isEnabled() { Loading src/com/android/settings/datetime/AutoTimeZonePreferenceController.java +34 −41 Original line number Diff line number Diff line Loading @@ -27,36 +27,42 @@ import android.app.time.TimeZoneCapabilitiesAndConfig; import android.app.time.TimeZoneConfiguration; import android.content.Context; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import androidx.preference.TwoStatePreference; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; public class AutoTimeZonePreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener { import com.android.settings.core.TogglePreferenceController; private static final String KEY_AUTO_TIME_ZONE = "auto_zone"; public class AutoTimeZonePreferenceController extends TogglePreferenceController { private final boolean mIsFromSUW; private final UpdateTimeAndDateCallback mCallback; private boolean mIsFromSUW; private UpdateTimeAndDateCallback mCallback; private final TimeManager mTimeManager; public AutoTimeZonePreferenceController(Context context, UpdateTimeAndDateCallback callback, boolean isFromSUW) { super(context); public AutoTimeZonePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mTimeManager = context.getSystemService(TimeManager.class); } /** * Set the Time and Date callback */ public AutoTimeZonePreferenceController setTimeAndDateCallback( UpdateTimeAndDateCallback callback) { mCallback = callback; return this; } /** * Set if current fragment is launched via SUW */ public AutoTimeZonePreferenceController setFromSUW(boolean isFromSUW) { mIsFromSUW = isFromSUW; return this; } @Override public boolean isAvailable() { public int getAvailabilityStatus() { if (mIsFromSUW) { return false; return DISABLED_DEPENDENT_SETTING; } TimeZoneCapabilities timeZoneCapabilities = Loading @@ -67,43 +73,31 @@ public class AutoTimeZonePreferenceController extends AbstractPreferenceControll // This method handles the "is visible?" check. switch (capability) { case CAPABILITY_NOT_SUPPORTED: return false; return DISABLED_DEPENDENT_SETTING; case CAPABILITY_POSSESSED: return true; case CAPABILITY_NOT_ALLOWED: // This case is expected for enterprise restrictions, where the toggle should be // present but disabled. Disabling is handled declaratively via the // settings:userRestriction attribute in .xml. The client-side logic is expected to // concur with the capabilities logic in the system server. return true; case CAPABILITY_NOT_APPLICABLE: // CAPABILITY_NOT_APPLICABLE is not currently expected, so this is return value is // arbitrary. return true; return AVAILABLE; default: throw new IllegalStateException("Unknown capability=" + capability); } } @Override public String getPreferenceKey() { return KEY_AUTO_TIME_ZONE; public boolean isChecked() { return isEnabled(); } @Override public void updateState(Preference preference) { if (!(preference instanceof TwoStatePreference)) { return; } ((TwoStatePreference) preference).setChecked(isEnabled()); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { boolean autoZoneEnabled = (Boolean) newValue; public boolean setChecked(boolean isChecked) { TimeZoneConfiguration configuration = new TimeZoneConfiguration.Builder() .setAutoDetectionEnabled(autoZoneEnabled) .setAutoDetectionEnabled(isChecked) .build(); boolean result = mTimeManager.updateTimeZoneConfiguration(configuration); Loading @@ -111,6 +105,11 @@ public class AutoTimeZonePreferenceController extends AbstractPreferenceControll return result; } @Override public int getSliceHighlightMenuRes() { return R.string.menu_key_system; } @Override public CharSequence getSummary() { // If auto time zone cannot enable telephony fallback and is capable of location, then auto Loading @@ -124,12 +123,6 @@ public class AutoTimeZonePreferenceController extends AbstractPreferenceControll return ""; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); refreshSummary(screen.findPreference(getPreferenceKey())); } @VisibleForTesting boolean isEnabled() { TimeZoneConfiguration config = getTimeZoneCapabilitiesAndConfig().getConfiguration(); Loading src/com/android/settings/datetime/DatePreferenceController.java +21 −27 Original line number Diff line number Diff line Loading @@ -33,14 +33,12 @@ import android.widget.DatePicker; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.RestrictedPreference; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settings.core.BasePreferenceController; import java.util.Calendar; public class DatePreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, DatePickerDialog.OnDateSetListener { public class DatePreferenceController extends BasePreferenceController implements DatePickerDialog.OnDateSetListener { public interface DatePreferenceHost extends UpdateTimeAndDateCallback { void showDatePicker(); Loading @@ -49,49 +47,45 @@ public class DatePreferenceController extends AbstractPreferenceController public static final int DIALOG_DATEPICKER = 0; private static final String TAG = "DatePreferenceController"; private static final String KEY_DATE = "date"; private final DatePreferenceHost mHost; private DatePreferenceHost mHost; private final TimeManager mTimeManager; public DatePreferenceController(Context context, DatePreferenceHost host) { super(context); mHost = host; public DatePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mTimeManager = context.getSystemService(TimeManager.class); } public void setHost(DatePreferenceHost host) { mHost = host; } @Override public boolean isAvailable() { return true; public int getAvailabilityStatus() { return isEnabled() ? AVAILABLE : DISABLED_DEPENDENT_SETTING; } @Override public void updateState(Preference preference) { if (!(preference instanceof RestrictedPreference)) { return; } final Calendar now = Calendar.getInstance(); preference.setSummary(DateFormat.getLongDateFormat(mContext).format(now.getTime())); if (!((RestrictedPreference) preference).isDisabledByAdmin()) { boolean enableManualDateSelection = isEnabled(); preference.setEnabled(enableManualDateSelection); super.updateState(preference); preference.setEnabled(isEnabled()); } @Override public CharSequence getSummary() { Calendar now = Calendar.getInstance(); return DateFormat.getLongDateFormat(mContext).format(now.getTime()); } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (!TextUtils.equals(preference.getKey(), KEY_DATE)) { if (!TextUtils.equals(getPreferenceKey(), preference.getKey())) { return false; } mHost.showDatePicker(); return true; } @Override public String getPreferenceKey() { return KEY_DATE; } @Override public void onDateSet(DatePicker view, int year, int month, int day) { setDate(year, month, day); Loading Loading
res/xml/date_time_prefs.xml +17 −10 Original line number Diff line number Diff line Loading @@ -24,19 +24,22 @@ android:key="auto_time" android:title="@string/date_time_auto" settings:useAdditionalSummary="true" settings:userRestriction="no_config_date_time"/> settings:userRestriction="no_config_date_time" settings:controller="com.android.settings.datetime.AutoTimePreferenceController" /> <com.android.settingslib.RestrictedPreference android:key="date" android:title="@string/date_time_set_date_title" android:summary="@string/summary_placeholder" settings:userRestriction="no_config_date_time"/> settings:userRestriction="no_config_date_time" settings:controller="com.android.settings.datetime.DatePreferenceController" /> <com.android.settingslib.RestrictedPreference android:key="time" android:title="@string/date_time_set_time_title" android:summary="@string/summary_placeholder" settings:userRestriction="no_config_date_time"/> settings:userRestriction="no_config_date_time" settings:controller="com.android.settings.datetime.TimePreferenceController" /> <PreferenceCategory android:key="timezone_preference_category" Loading @@ -45,7 +48,8 @@ <com.android.settingslib.RestrictedSwitchPreference android:key="auto_zone" android:title="@string/zone_auto_title" settings:userRestriction="no_config_date_time"/> settings:userRestriction="no_config_date_time" settings:controller="com.android.settings.datetime.AutoTimeZonePreferenceController" /> <com.android.settingslib.widget.BannerMessagePreference android:key="location_time_zone_detection_status" Loading @@ -53,7 +57,7 @@ settings:controller="com.android.settings.datetime.LocationProviderStatusPreferenceController"/> <!-- This preference gets removed if location-based time zone detection is not supported --> <SwitchPreferenceCompat <SwitchPreference android:key="location_time_zone_detection" android:title="@string/location_time_zone_detection_toggle_title" settings:controller="com.android.settings.datetime.LocationTimeZoneDetectionPreferenceController"/> Loading @@ -64,7 +68,8 @@ android:summary="@string/summary_placeholder" android:fragment="com.android.settings.datetime.timezone.TimeZoneSettings" settings:userRestriction="no_config_date_time" settings:keywords="@string/keywords_time_zone"/> settings:keywords="@string/keywords_time_zone" settings:controller="com.android.settings.datetime.TimeZonePreferenceController" /> </PreferenceCategory> Loading @@ -72,13 +77,15 @@ android:key="time_format_preference_category" android:title="@string/time_format_category_title" settings:keywords="@string/keywords_time_format"> <SwitchPreferenceCompat <SwitchPreference android:key="auto_24hour" android:title="@string/date_time_24hour_auto"/> android:title="@string/date_time_24hour_auto" settings:controller="com.android.settings.datetime.AutoTimeFormatPreferenceController" /> <SwitchPreferenceCompat <SwitchPreference android:key="24 hour" android:title="@string/date_time_24hour" /> android:title="@string/date_time_24hour" settings:controller="com.android.settings.datetime.TimeFormatPreferenceController" /> </PreferenceCategory> </PreferenceScreen>
src/com/android/settings/datetime/AutoTimeFormatPreferenceController.java +16 −31 Original line number Diff line number Diff line Loading @@ -19,53 +19,33 @@ package com.android.settings.datetime; import android.content.Context; import android.provider.Settings; import android.provider.Settings.System; import android.text.TextUtils; import android.text.format.DateFormat; import androidx.preference.Preference; import androidx.preference.TwoStatePreference; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; import java.util.Locale; public class AutoTimeFormatPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin { private static final String KEY_AUTO_24_HOUR = "auto_24hour"; public class AutoTimeFormatPreferenceController extends TogglePreferenceController { public AutoTimeFormatPreferenceController(Context context, UpdateTimeAndDateCallback callback) { super(context); public AutoTimeFormatPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } @Override public boolean isAvailable() { return true; public int getAvailabilityStatus() { return AVAILABLE; } @Override public String getPreferenceKey() { return KEY_AUTO_24_HOUR; public boolean isChecked() { return isAutoTimeFormatSelection(mContext); } @Override public void updateState(Preference preference) { if (!(preference instanceof TwoStatePreference)) { return; } ((TwoStatePreference) preference).setChecked(isAutoTimeFormatSelection(mContext)); } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (!(preference instanceof TwoStatePreference) || !TextUtils.equals(KEY_AUTO_24_HOUR, preference.getKey())) { return false; } boolean auto24HourEnabled = ((TwoStatePreference) preference).isChecked(); public boolean setChecked(boolean isChecked) { Boolean is24Hour; if (auto24HourEnabled) { if (isChecked) { is24Hour = null; } else { is24Hour = is24HourLocale(mContext.getResources().getConfiguration().locale); Loading @@ -74,6 +54,11 @@ public class AutoTimeFormatPreferenceController extends AbstractPreferenceContro return true; } @Override public int getSliceHighlightMenuRes() { return R.string.menu_key_system; } boolean is24HourLocale(Locale locale) { return DateFormat.is24HourLocale(locale); } Loading
src/com/android/settings/datetime/AutoTimePreferenceController.java +21 −30 Original line number Diff line number Diff line Loading @@ -27,28 +27,26 @@ import android.app.time.TimeConfiguration; import android.app.time.TimeManager; import android.content.Context; import androidx.preference.Preference; import androidx.preference.TwoStatePreference; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; public class AutoTimePreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener { public class AutoTimePreferenceController extends TogglePreferenceController { private static final String KEY_AUTO_TIME = "auto_time"; private final UpdateTimeAndDateCallback mCallback; private UpdateTimeAndDateCallback mCallback; private final TimeManager mTimeManager; public AutoTimePreferenceController(Context context, UpdateTimeAndDateCallback callback) { super(context); public AutoTimePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mTimeManager = context.getSystemService(TimeManager.class); } public void setDateAndTimeCallback(UpdateTimeAndDateCallback callback) { mCallback = callback; } @Override public boolean isAvailable() { public int getAvailabilityStatus() { TimeCapabilities timeCapabilities = getTimeCapabilitiesAndConfig().getCapabilities(); int capability = timeCapabilities.getConfigureAutoDetectionEnabledCapability(); Loading @@ -57,43 +55,31 @@ public class AutoTimePreferenceController extends AbstractPreferenceController // This method handles the "is visible?" check. switch (capability) { case CAPABILITY_NOT_SUPPORTED: return false; return DISABLED_DEPENDENT_SETTING; case CAPABILITY_POSSESSED: return true; case CAPABILITY_NOT_ALLOWED: // This case is expected for enterprise restrictions, where the toggle should be // present but disabled. Disabling is handled declaratively via the // settings:userRestriction attribute in .xml. The client-side logic is expected to // concur with the capabilities logic in the system server. return true; case CAPABILITY_NOT_APPLICABLE: // CAPABILITY_NOT_APPLICABLE is not currently expected, so this is return value is // arbitrary. return true; return AVAILABLE; default: throw new IllegalStateException("Unknown capability=" + capability); } } @Override public void updateState(Preference preference) { if (!(preference instanceof TwoStatePreference)) { return; } ((TwoStatePreference) preference).setChecked(isEnabled()); public boolean isChecked() { return isEnabled(); } @Override public String getPreferenceKey() { return KEY_AUTO_TIME; } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { boolean autoTimeEnabled = (Boolean) newValue; public boolean setChecked(boolean isChecked) { TimeConfiguration configuration = new TimeConfiguration.Builder() .setAutoDetectionEnabled(autoTimeEnabled) .setAutoDetectionEnabled(isChecked) .build(); boolean result = mTimeManager.updateTimeConfiguration(configuration); Loading @@ -101,6 +87,11 @@ public class AutoTimePreferenceController extends AbstractPreferenceController return result; } @Override public int getSliceHighlightMenuRes() { return R.string.menu_key_system; } /** Returns whether the preference should be "checked", i.e. set to the "on" position. */ @VisibleForTesting public boolean isEnabled() { Loading
src/com/android/settings/datetime/AutoTimeZonePreferenceController.java +34 −41 Original line number Diff line number Diff line Loading @@ -27,36 +27,42 @@ import android.app.time.TimeZoneCapabilitiesAndConfig; import android.app.time.TimeZoneConfiguration; import android.content.Context; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import androidx.preference.TwoStatePreference; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; public class AutoTimeZonePreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener { import com.android.settings.core.TogglePreferenceController; private static final String KEY_AUTO_TIME_ZONE = "auto_zone"; public class AutoTimeZonePreferenceController extends TogglePreferenceController { private final boolean mIsFromSUW; private final UpdateTimeAndDateCallback mCallback; private boolean mIsFromSUW; private UpdateTimeAndDateCallback mCallback; private final TimeManager mTimeManager; public AutoTimeZonePreferenceController(Context context, UpdateTimeAndDateCallback callback, boolean isFromSUW) { super(context); public AutoTimeZonePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mTimeManager = context.getSystemService(TimeManager.class); } /** * Set the Time and Date callback */ public AutoTimeZonePreferenceController setTimeAndDateCallback( UpdateTimeAndDateCallback callback) { mCallback = callback; return this; } /** * Set if current fragment is launched via SUW */ public AutoTimeZonePreferenceController setFromSUW(boolean isFromSUW) { mIsFromSUW = isFromSUW; return this; } @Override public boolean isAvailable() { public int getAvailabilityStatus() { if (mIsFromSUW) { return false; return DISABLED_DEPENDENT_SETTING; } TimeZoneCapabilities timeZoneCapabilities = Loading @@ -67,43 +73,31 @@ public class AutoTimeZonePreferenceController extends AbstractPreferenceControll // This method handles the "is visible?" check. switch (capability) { case CAPABILITY_NOT_SUPPORTED: return false; return DISABLED_DEPENDENT_SETTING; case CAPABILITY_POSSESSED: return true; case CAPABILITY_NOT_ALLOWED: // This case is expected for enterprise restrictions, where the toggle should be // present but disabled. Disabling is handled declaratively via the // settings:userRestriction attribute in .xml. The client-side logic is expected to // concur with the capabilities logic in the system server. return true; case CAPABILITY_NOT_APPLICABLE: // CAPABILITY_NOT_APPLICABLE is not currently expected, so this is return value is // arbitrary. return true; return AVAILABLE; default: throw new IllegalStateException("Unknown capability=" + capability); } } @Override public String getPreferenceKey() { return KEY_AUTO_TIME_ZONE; public boolean isChecked() { return isEnabled(); } @Override public void updateState(Preference preference) { if (!(preference instanceof TwoStatePreference)) { return; } ((TwoStatePreference) preference).setChecked(isEnabled()); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { boolean autoZoneEnabled = (Boolean) newValue; public boolean setChecked(boolean isChecked) { TimeZoneConfiguration configuration = new TimeZoneConfiguration.Builder() .setAutoDetectionEnabled(autoZoneEnabled) .setAutoDetectionEnabled(isChecked) .build(); boolean result = mTimeManager.updateTimeZoneConfiguration(configuration); Loading @@ -111,6 +105,11 @@ public class AutoTimeZonePreferenceController extends AbstractPreferenceControll return result; } @Override public int getSliceHighlightMenuRes() { return R.string.menu_key_system; } @Override public CharSequence getSummary() { // If auto time zone cannot enable telephony fallback and is capable of location, then auto Loading @@ -124,12 +123,6 @@ public class AutoTimeZonePreferenceController extends AbstractPreferenceControll return ""; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); refreshSummary(screen.findPreference(getPreferenceKey())); } @VisibleForTesting boolean isEnabled() { TimeZoneConfiguration config = getTimeZoneCapabilitiesAndConfig().getConfiguration(); Loading
src/com/android/settings/datetime/DatePreferenceController.java +21 −27 Original line number Diff line number Diff line Loading @@ -33,14 +33,12 @@ import android.widget.DatePicker; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.RestrictedPreference; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settings.core.BasePreferenceController; import java.util.Calendar; public class DatePreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, DatePickerDialog.OnDateSetListener { public class DatePreferenceController extends BasePreferenceController implements DatePickerDialog.OnDateSetListener { public interface DatePreferenceHost extends UpdateTimeAndDateCallback { void showDatePicker(); Loading @@ -49,49 +47,45 @@ public class DatePreferenceController extends AbstractPreferenceController public static final int DIALOG_DATEPICKER = 0; private static final String TAG = "DatePreferenceController"; private static final String KEY_DATE = "date"; private final DatePreferenceHost mHost; private DatePreferenceHost mHost; private final TimeManager mTimeManager; public DatePreferenceController(Context context, DatePreferenceHost host) { super(context); mHost = host; public DatePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mTimeManager = context.getSystemService(TimeManager.class); } public void setHost(DatePreferenceHost host) { mHost = host; } @Override public boolean isAvailable() { return true; public int getAvailabilityStatus() { return isEnabled() ? AVAILABLE : DISABLED_DEPENDENT_SETTING; } @Override public void updateState(Preference preference) { if (!(preference instanceof RestrictedPreference)) { return; } final Calendar now = Calendar.getInstance(); preference.setSummary(DateFormat.getLongDateFormat(mContext).format(now.getTime())); if (!((RestrictedPreference) preference).isDisabledByAdmin()) { boolean enableManualDateSelection = isEnabled(); preference.setEnabled(enableManualDateSelection); super.updateState(preference); preference.setEnabled(isEnabled()); } @Override public CharSequence getSummary() { Calendar now = Calendar.getInstance(); return DateFormat.getLongDateFormat(mContext).format(now.getTime()); } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (!TextUtils.equals(preference.getKey(), KEY_DATE)) { if (!TextUtils.equals(getPreferenceKey(), preference.getKey())) { return false; } mHost.showDatePicker(); return true; } @Override public String getPreferenceKey() { return KEY_DATE; } @Override public void onDateSet(DatePicker view, int year, int month, int day) { setDate(year, month, day); Loading