diff --git a/res/color/preference_highligh_color.xml b/res/color/preference_highlight_color.xml
similarity index 100%
rename from res/color/preference_highligh_color.xml
rename to res/color/preference_highlight_color.xml
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 573d906b166..579ac35e46b 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -72,6 +72,8 @@
+
+
diff --git a/res/values/menu_keys.xml b/res/values/menu_keys.xml
new file mode 100755
index 00000000000..e69664a3408
--- /dev/null
+++ b/res/values/menu_keys.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+ top_level_network
+ top_level_connected_devices
+ top_level_apps
+ top_level_notifications
+ top_level_battery
+ top_level_storage
+ top_level_sound
+ top_level_display
+ top_level_wallpaper
+ top_level_accessibility
+ top_level_security
+ top_level_privacy
+ top_level_location
+ top_level_emergency
+ top_level_accounts
+ top_level_system
+ top_level_about_device
+ top_level_support
+
+
diff --git a/res/xml/top_level_settings.xml b/res/xml/top_level_settings.xml
index 1b949e97e26..e2cb1736fcf 100644
--- a/res/xml/top_level_settings.xml
+++ b/res/xml/top_level_settings.xml
@@ -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"/>
+ android:summary="@string/app_and_notification_dashboard_summary"
+ settings:highlightableMenuKey="@string/menu_key_apps"/>
+ android:summary="@string/notification_dashboard_summary"
+ settings:highlightableMenuKey="@string/menu_key_notifications"/>
+ android:summary="@string/sound_dashboard_summary"
+ settings:highlightableMenuKey="@string/menu_key_sound"/>
+ android:summary="@string/privacy_dashboard_summary"
+ settings:highlightableMenuKey="@string/menu_key_privacy"/>
+ android:fragment="com.android.settings.emergency.EmergencyDashboardFragment"
+ settings:highlightableMenuKey="@string/menu_key_emergency"/>
+ android:summary="@string/system_dashboard_summary"
+ settings:highlightableMenuKey="@string/menu_key_system"/>
diff --git a/src/com/android/settings/core/PreferenceXmlParserUtils.java b/src/com/android/settings/core/PreferenceXmlParserUtils.java
index 240426d69d9..a1a8d6731a7 100644
--- a/src/com/android/settings/core/PreferenceXmlParserUtils.java
+++ b/src/com/android/settings/core/PreferenceXmlParserUtils.java
@@ -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);
}
diff --git a/src/com/android/settings/widget/HighlightablePreferenceGroupAdapter.java b/src/com/android/settings/widget/HighlightablePreferenceGroupAdapter.java
index 6e73382915e..9009b32be9e 100644
--- a/src/com/android/settings/widget/HighlightablePreferenceGroupAdapter.java
+++ b/src/com/android/settings/widget/HighlightablePreferenceGroupAdapter.java
@@ -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
diff --git a/tests/robotests/res/xml-mcc999/location_settings.xml b/tests/robotests/res/xml-mcc999/location_settings.xml
index d2dc132be43..b2a67ab2f9e 100644
--- a/tests/robotests/res/xml-mcc999/location_settings.xml
+++ b/tests/robotests/res/xml-mcc999/location_settings.xml
@@ -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"/>
diff --git a/tests/robotests/src/com/android/settings/core/PreferenceXmlParserUtilsTest.java b/tests/robotests/src/com/android/settings/core/PreferenceXmlParserUtilsTest.java
index 4cde04b94b4..23ade9d14ab 100644
--- a/tests/robotests/src/com/android/settings/core/PreferenceXmlParserUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/core/PreferenceXmlParserUtilsTest.java
@@ -174,18 +174,36 @@ public class PreferenceXmlParserUtilsTest {
assertThat(entries).isNull();
}
+ @Test
+ public void extractHomepageMetadata_shouldContainKeyAndHighlightableMenuKey()
+ throws IOException, XmlPullParserException {
+ List 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 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();
}
}