Merge "Define menu keys for highlighting the menu entry on 2-pane UI" into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f8bb8aced9
@@ -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
res/values/menu_keys.xml
Executable file
38
res/values/menu_keys.xml
Executable file
@@ -0,0 +1,38 @@
|
||||
<?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>
|
@@ -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>
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -105,7 +105,7 @@ public class HighlightablePreferenceGroupAdapter extends PreferenceGroupAdapter
|
||||
context.getTheme().resolveAttribute(android.R.attr.selectableItemBackground,
|
||||
outValue, true /* resolveRefs */);
|
||||
mNormalBackgroundRes = outValue.resourceId;
|
||||
mHighlightColor = context.getColor(R.color.preference_highligh_color);
|
||||
mHighlightColor = context.getColor(R.color.preference_highlight_color);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -24,6 +24,7 @@
|
||||
android:title="title"
|
||||
android:icon="@drawable/ic_android"
|
||||
android:summary="summary"
|
||||
settings:highlightableMenuKey="menu_key"
|
||||
settings:controller="com.android.settings.slices.FakePreferenceController"
|
||||
settings:keywords="a, b, c"
|
||||
settings:unavailableSliceSubtitle="subtitleOfUnavailableSlice"/>
|
||||
|
@@ -174,18 +174,36 @@ public class PreferenceXmlParserUtilsTest {
|
||||
assertThat(entries).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void extractHomepageMetadata_shouldContainKeyAndHighlightableMenuKey()
|
||||
throws IOException, XmlPullParserException {
|
||||
List<Bundle> metadata = PreferenceXmlParserUtils.extractMetadata(mContext,
|
||||
R.xml.top_level_settings,
|
||||
MetadataFlag.FLAG_NEED_KEY | MetadataFlag.FLAG_NEED_HIGHLIGHTABLE_MENU_KEY);
|
||||
|
||||
assertThat(metadata).isNotEmpty();
|
||||
for (Bundle bundle : metadata) {
|
||||
assertThat(bundle.getString(PreferenceXmlParserUtils.METADATA_KEY)).isNotNull();
|
||||
assertThat(bundle.getString(PreferenceXmlParserUtils.METADATA_HIGHLIGHTABLE_MENU_KEY))
|
||||
.isNotNull();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(qualifiers = "mcc999")
|
||||
public void extractMetadata_shouldContainKeyAndControllerName()
|
||||
public void extractMetadata_shouldContainKeyAndControllerNameAndHighlightableMenuKey()
|
||||
throws IOException, XmlPullParserException {
|
||||
List<Bundle> metadata = PreferenceXmlParserUtils.extractMetadata(mContext,
|
||||
R.xml.location_settings,
|
||||
MetadataFlag.FLAG_NEED_KEY | MetadataFlag.FLAG_NEED_PREF_CONTROLLER);
|
||||
MetadataFlag.FLAG_NEED_KEY | MetadataFlag.FLAG_NEED_PREF_CONTROLLER
|
||||
| MetadataFlag.FLAG_NEED_HIGHLIGHTABLE_MENU_KEY);
|
||||
|
||||
assertThat(metadata).isNotEmpty();
|
||||
for (Bundle bundle : metadata) {
|
||||
assertThat(bundle.getString(PreferenceXmlParserUtils.METADATA_KEY)).isNotNull();
|
||||
assertThat(bundle.getString(PreferenceXmlParserUtils.METADATA_CONTROLLER)).isNotNull();
|
||||
assertThat(bundle.getString(PreferenceXmlParserUtils.METADATA_HIGHLIGHTABLE_MENU_KEY))
|
||||
.isNotNull();
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user