Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7f7417a authored by Geoffrey Boullanger's avatar Geoffrey Boullanger Committed by Android (Google) Code Review
Browse files

Merge "Updated toggles in Date and time settings page" into main

parents da37ff06 b2dd2e32
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -9,3 +9,11 @@ flag {
    bug: "283239837"
}

flag {
    name: "revamp_toggles"
    # "location" is used by the Android System Time team for feature flags.
    namespace: "location"
    description: "Makes the use location toggle dependent on automatic time zone detection"
    bug: "296835792"
}
+1 −1
Original line number Diff line number Diff line
@@ -579,7 +579,7 @@
    <!-- Date & time setting screen setting switch summary: whether the time zone should be determined automatically [CHAR LIMIT=100]  -->
    <string name="zone_auto_title_summary">Set automatically based on mobile networks near you</string>
    <!-- Date & time setting screen setting switch summary for non-telephony devices [CHAR LIMIT=100] -->
    <string name="auto_zone_requires_location_summary">Set automatically using your device location, if available. An active Wifi connection may also be required.</string>
    <string name="auto_zone_requires_location_summary">Set automatically using your device location, if available</string>
    <!-- Date & time setting screen setting option summary text for the automatic 24 hour setting checkbox [CHAR LIMIT=100] -->
    <string name="date_time_24hour_auto">Use locale default</string>
    <!-- Date & time setting screen setting check box title -->
+104 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2024 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settings="http://schemas.android.com/apk/res-auto"
    android:title="@string/date_and_time"
    settings:keywords="@string/keywords_date_and_time">

    <com.android.settingslib.RestrictedSwitchPreference
        android:key="auto_time"
        android:title="@string/date_time_auto"
        android:summary="@string/summary_placeholder"
        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: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:controller="com.android.settings.datetime.TimePreferenceController" />

    <PreferenceCategory
        android:key="timezone_preference_category"
        android:title="@string/date_time_set_timezone_title">

        <com.android.settingslib.RestrictedSwitchPreference
            android:key="auto_zone"
            android:title="@string/zone_auto_title"
            android:summary="@string/summary_placeholder"
            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"
            android:title="@string/location_time_zone_detection_status_title"
            settings:controller="com.android.settings.datetime.LocationProviderStatusPreferenceController"/>

        <!-- This preference gets removed if location-based time zone detection is not supported -->
        <SwitchPreferenceCompat
            android:key="location_time_zone_detection"
            android:title="@string/location_time_zone_detection_toggle_title"
            android:summary="@string/summary_placeholder"
            settings:controller="com.android.settings.datetime.LocationTimeZoneDetectionPreferenceController"/>

        <com.android.settingslib.RestrictedPreference
            android:key="timezone"
            android:title="@string/date_time_set_timezone_title"
            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:controller="com.android.settings.datetime.TimeZonePreferenceController" />

    </PreferenceCategory>

    <!-- An optional preference category for feedback. Only displayed up if enabled via flags and config. -->
    <PreferenceCategory
            android:key="time_feedback_preference_category"
            android:title="@string/time_feedback_category_title"
            settings:keywords="@string/keywords_time_feedback_category"
            settings:controller="com.android.settings.datetime.TimeFeedbackPreferenceCategoryController">

        <Preference
                android:key="time_feedback"
                android:title="@string/time_feedback_title"
                settings:keywords="@string/keywords_time_feedback"
                settings:controller="com.android.settings.datetime.TimeFeedbackPreferenceController" />

    </PreferenceCategory>

    <PreferenceCategory
        android:key="time_format_preference_category"
        android:title="@string/time_format_category_title"
        settings:keywords="@string/keywords_time_format">

        <SwitchPreferenceCompat
            android:key="24 hour"
            android:title="@string/date_time_24hour"
            settings:controller="com.android.settings.datetime.TimeFormatPreferenceController" />
    </PreferenceCategory>

</PreferenceScreen>
+25 −7
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import androidx.preference.Preference;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.flags.Flags;

public class AutoTimeZonePreferenceController extends TogglePreferenceController {

@@ -103,10 +104,25 @@ public class AutoTimeZonePreferenceController extends TogglePreferenceController

    @Override
    public boolean setChecked(boolean isChecked) {
        TimeZoneConfiguration configuration = new TimeZoneConfiguration.Builder()
                .setAutoDetectionEnabled(isChecked)
                .build();
        boolean result = mTimeManager.updateTimeZoneConfiguration(configuration);
        TimeZoneConfiguration.Builder configuration = new TimeZoneConfiguration.Builder()
                .setAutoDetectionEnabled(isChecked);

        if (Flags.revampToggles()) {
            // "Use location for time zone" is only used if "Automatic time zone" is enabled. If
            // the user toggles off automatic time zone, set the toggle off and disable the toggle.
            int geoDetectionCapability = mTimeManager
                    .getTimeZoneCapabilitiesAndConfig()
                    .getCapabilities()
                    .getConfigureGeoDetectionEnabledCapability();

            if (!isChecked
                    && (geoDetectionCapability == CAPABILITY_NOT_APPLICABLE
                    || geoDetectionCapability == CAPABILITY_POSSESSED)) {
                configuration.setGeoDetectionEnabled(false);
            }
        }

        boolean result = mTimeManager.updateTimeZoneConfiguration(configuration.build());

        mCallback.updateTimeAndDateDisplay(mContext);
        return result;
@@ -138,8 +154,10 @@ public class AutoTimeZonePreferenceController extends TogglePreferenceController

    @VisibleForTesting
    boolean isEnabled() {
        TimeZoneConfiguration config = getTimeZoneCapabilitiesAndConfig().getConfiguration();
        return config.isAutoDetectionEnabled();
        return mTimeManager
                .getTimeZoneCapabilitiesAndConfig()
                .getConfiguration()
                .isAutoDetectionEnabled();
    }

    private TimeZoneCapabilitiesAndConfig getTimeZoneCapabilitiesAndConfig() {
+6 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.content.Context;

import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.flags.Flags;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;

@@ -49,6 +50,9 @@ public class DateTimeSettings extends DashboardFragment implements

    @Override
    protected int getPreferenceScreenResId() {
        if (Flags.revampToggles()) {
            return R.xml.date_time_prefs_revamped;
        }
        return R.xml.date_time_prefs;
    }

@@ -119,5 +123,6 @@ public class DateTimeSettings extends DashboardFragment implements
    }

    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider(R.xml.date_time_prefs);
            new BaseSearchIndexProvider(
                    Flags.revampToggles() ? R.xml.date_time_prefs_revamped : R.xml.date_time_prefs);
}
Loading