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

Commit 7426ab7b authored by Jason Chiu's avatar Jason Chiu
Browse files

Define menu keys for highlighting the menu entry on 2-pane UI

- Define an attribute for highlightable menu keys
- List the keys for Settings menu entries
- Support parsing the attribute

Bug: 199017944
Test: robotest
Change-Id: I5759bff591c79d498fffb8b2c2b57f2cb66c4421
parent 8b3bb01c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -72,6 +72,8 @@
        <attr name="unavailableSliceSubtitle" format="string" />
        <!-- Whether or not the preference is for work profile, by default it's false. -->
        <attr name="forWork" format="boolean" />
        <!-- Identifier for highlighting the menu preference on 2-pane -->
        <attr name="highlightableMenuKey" format="string" />
    </declare-styleable>

    <declare-styleable name="PreferenceScreen">
+38 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2021 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.
-->

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

    <string name="menu_key_network" translatable="false">top_level_network</string>
    <string name="menu_key_connected_devices" translatable="false">top_level_connected_devices</string>
    <string name="menu_key_apps" translatable="false">top_level_apps</string>
    <string name="menu_key_notifications" translatable="false">top_level_notifications</string>
    <string name="menu_key_battery" translatable="false">top_level_battery</string>
    <string name="menu_key_storage" translatable="false">top_level_storage</string>
    <string name="menu_key_sound" translatable="false">top_level_sound</string>
    <string name="menu_key_display" translatable="false">top_level_display</string>
    <string name="menu_key_wallpaper" translatable="false">top_level_wallpaper</string>
    <string name="menu_key_accessibility" translatable="false">top_level_accessibility</string>
    <string name="menu_key_security" translatable="false">top_level_security</string>
    <string name="menu_key_privacy" translatable="false">top_level_privacy</string>
    <string name="menu_key_location" translatable="false">top_level_location</string>
    <string name="menu_key_emergency" translatable="false">top_level_emergency</string>
    <string name="menu_key_accounts" translatable="false">top_level_accounts</string>
    <string name="menu_key_system" translatable="false">top_level_system</string>
    <string name="menu_key_about_device" translatable="false">top_level_about_device</string>
    <string name="menu_key_support" translatable="false">top_level_support</string>

</resources>
+25 −7
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
        android:order="-150"
        android:title="@string/network_dashboard_title"
        android:summary="@string/summary_placeholder"
        settings:highlightableMenuKey="@string/menu_key_network"
        settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/>

    <Preference
@@ -36,6 +37,7 @@
        android:order="-140"
        android:title="@string/connected_devices_dashboard_title"
        android:summary="@string/connected_devices_dashboard_default_summary"
        settings:highlightableMenuKey="@string/menu_key_connected_devices"
        settings:controller="com.android.settings.connecteddevice.TopLevelConnectedDevicesPreferenceController"/>

    <Preference
@@ -44,15 +46,17 @@
        android:key="top_level_apps"
        android:order="-130"
        android:title="@string/apps_dashboard_title"
        android:summary="@string/app_and_notification_dashboard_summary"/>
        android:summary="@string/app_and_notification_dashboard_summary"
        settings:highlightableMenuKey="@string/menu_key_apps"/>

    <Preference
        android:fragment="com.android.settings.notification.ConfigureNotificationSettings"
        android:icon="@drawable/ic_notifications"
        android:key="top_level_notification"
        android:key="top_level_notifications"
        android:order="-120"
        android:title="@string/configure_notification_settings"
        android:summary="@string/notification_dashboard_summary"/>
        android:summary="@string/notification_dashboard_summary"
        settings:highlightableMenuKey="@string/menu_key_notifications"/>

    <Preference
        android:fragment="com.android.settings.fuelgauge.PowerUsageSummary"
@@ -61,6 +65,7 @@
        android:order="-110"
        android:title="@string/power_usage_summary_title"
        android:summary="@string/summary_placeholder"
        settings:highlightableMenuKey="@string/menu_key_battery"
        settings:controller="com.android.settings.fuelgauge.TopLevelBatteryPreferenceController"/>

    <Preference
@@ -70,6 +75,7 @@
        android:order="-100"
        android:title="@string/storage_settings"
        android:summary="@string/summary_placeholder"
        settings:highlightableMenuKey="@string/menu_key_storage"
        settings:controller="com.android.settings.deviceinfo.TopLevelStoragePreferenceController"/>

    <Preference
@@ -78,7 +84,8 @@
        android:key="top_level_sound"
        android:order="-90"
        android:title="@string/sound_settings"
        android:summary="@string/sound_dashboard_summary"/>
        android:summary="@string/sound_dashboard_summary"
        settings:highlightableMenuKey="@string/menu_key_sound"/>

    <Preference
        android:fragment="com.android.settings.DisplaySettings"
@@ -87,6 +94,7 @@
        android:order="-80"
        android:title="@string/display_settings"
        android:summary="@string/display_dashboard_summary"
        settings:highlightableMenuKey="@string/menu_key_display"
        settings:controller="com.android.settings.display.TopLevelDisplayPreferenceController"/>

    <com.android.settingslib.RestrictedTopLevelPreference
@@ -95,6 +103,7 @@
        android:order="-70"
        android:title="@string/wallpaper_settings_title"
        android:summary="@string/wallpaper_dashboard_summary"
        settings:highlightableMenuKey="@string/menu_key_wallpaper"
        settings:controller="com.android.settings.display.TopLevelWallpaperPreferenceController"/>

    <Preference
@@ -104,6 +113,7 @@
        android:order="-60"
        android:title="@string/accessibility_settings"
        android:summary="@string/accessibility_settings_summary"
        settings:highlightableMenuKey="@string/menu_key_accessibility"
        settings:controller="com.android.settings.accessibility.TopLevelAccessibilityPreferenceController"/>

    <Preference
@@ -113,6 +123,7 @@
        android:order="-50"
        android:title="@string/security_settings_title"
        android:summary="@string/security_dashboard_summary"
        settings:highlightableMenuKey="@string/menu_key_security"
        settings:controller="com.android.settings.security.TopLevelSecurityEntryPreferenceController"/>

    <Preference
@@ -121,7 +132,8 @@
        android:key="top_level_privacy"
        android:order="-40"
        android:title="@string/privacy_dashboard_title"
        android:summary="@string/privacy_dashboard_summary"/>
        android:summary="@string/privacy_dashboard_summary"
        settings:highlightableMenuKey="@string/menu_key_privacy"/>

    <Preference
        android:fragment="com.android.settings.location.LocationSettings"
@@ -130,6 +142,7 @@
        android:order="-30"
        android:title="@string/location_settings_title"
        android:summary="@string/location_settings_loading_app_permission_stats"
        settings:highlightableMenuKey="@string/menu_key_location"
        settings:controller="com.android.settings.location.TopLevelLocationPreferenceController"/>

    <Preference
@@ -138,7 +151,8 @@
        android:summary="@string/emergency_dashboard_summary"
        android:icon="@drawable/ic_settings_emergency"
        android:order="-20"
        android:fragment="com.android.settings.emergency.EmergencyDashboardFragment"/>
        android:fragment="com.android.settings.emergency.EmergencyDashboardFragment"
        settings:highlightableMenuKey="@string/menu_key_emergency"/>

    <Preference
        android:fragment="com.android.settings.accounts.AccountDashboardFragment"
@@ -147,6 +161,7 @@
        android:order="-10"
        android:title="@string/account_dashboard_title"
        android:summary="@string/summary_placeholder"
        settings:highlightableMenuKey="@string/menu_key_accounts"
        settings:controller="com.android.settings.accounts.TopLevelAccountEntryPreferenceController"/>

    <Preference
@@ -155,7 +170,8 @@
        android:key="top_level_system"
        android:order="10"
        android:title="@string/header_category_system"
        android:summary="@string/system_dashboard_summary"/>
        android:summary="@string/system_dashboard_summary"
        settings:highlightableMenuKey="@string/menu_key_system"/>

    <Preference
        android:fragment="com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment"
@@ -164,6 +180,7 @@
        android:order="20"
        android:title="@string/about_settings"
        android:summary="@string/summary_placeholder"
        settings:highlightableMenuKey="@string/menu_key_about_device"
        settings:controller="com.android.settings.deviceinfo.aboutphone.TopLevelAboutDevicePreferenceController"/>

    <Preference
@@ -172,6 +189,7 @@
        android:order="100"
        android:title="@string/page_tab_title_support"
        android:summary="@string/support_summary"
        settings:highlightableMenuKey="@string/menu_key_support"
        settings:controller="com.android.settings.support.SupportPreferenceController"/>

</PreferenceScreen>
+12 −1
Original line number Diff line number Diff line
@@ -73,7 +73,8 @@ public class PreferenceXmlParserUtils {
            MetadataFlag.FLAG_NEED_PREF_ICON,
            MetadataFlag.FLAG_NEED_SEARCHABLE,
            MetadataFlag.FLAG_UNAVAILABLE_SLICE_SUBTITLE,
            MetadataFlag.FLAG_FOR_WORK})
            MetadataFlag.FLAG_FOR_WORK,
            MetadataFlag.FLAG_NEED_HIGHLIGHTABLE_MENU_KEY})
    @Retention(RetentionPolicy.SOURCE)
    public @interface MetadataFlag {

@@ -89,6 +90,7 @@ public class PreferenceXmlParserUtils {
        int FLAG_NEED_PREF_APPEND = 1 << 10;
        int FLAG_UNAVAILABLE_SLICE_SUBTITLE = 1 << 11;
        int FLAG_FOR_WORK = 1 << 12;
        int FLAG_NEED_HIGHLIGHTABLE_MENU_KEY = 1 << 13;
    }

    public static final String METADATA_PREF_TYPE = "type";
@@ -102,6 +104,7 @@ public class PreferenceXmlParserUtils {
    public static final String METADATA_APPEND = "staticPreferenceLocation";
    public static final String METADATA_UNAVAILABLE_SLICE_SUBTITLE = "unavailable_slice_subtitle";
    public static final String METADATA_FOR_WORK = "for_work";
    public static final String METADATA_HIGHLIGHTABLE_MENU_KEY = "highlightable_menu_key";

    private static final String ENTRIES_SEPARATOR = "|";

@@ -250,6 +253,10 @@ public class PreferenceXmlParserUtils {
                preferenceMetadata.putBoolean(METADATA_FOR_WORK,
                        isForWork(preferenceAttributes));
            }
            if (hasFlag(flags, MetadataFlag.FLAG_NEED_HIGHLIGHTABLE_MENU_KEY)) {
                preferenceMetadata.putString(METADATA_HIGHLIGHTABLE_MENU_KEY,
                        getHighlightableMenuKey(preferenceAttributes));
            }
            metadata.add(preferenceMetadata);

            preferenceAttributes.recycle();
@@ -314,6 +321,10 @@ public class PreferenceXmlParserUtils {
        return styledAttributes.getString(R.styleable.Preference_controller);
    }

    private static String getHighlightableMenuKey(TypedArray styledAttributes) {
        return styledAttributes.getString(R.styleable.Preference_highlightableMenuKey);
    }

    private static int getIcon(TypedArray styledAttributes) {
        return styledAttributes.getResourceId(com.android.internal.R.styleable.Icon_icon, 0);
    }
Loading