Loading src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java +26 −10 Original line number Diff line number Diff line Loading @@ -452,17 +452,38 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen var pref = getDisplayPreference(context, display, groupCleanable); pref.setSummary(display.getMode().getPhysicalWidth() + " x " + display.getMode().getPhysicalHeight()); pref.setTitle(display.getName()); } } } private Preference getDisplayPreference(@NonNull Context context, @NonNull Display display, @NonNull PrefRefresh groupCleanable) { var pref = groupCleanable.findUnusedPreference(DisplayPreference.generateKey(display)); pref = pref != null ? pref : new DisplayPreference(context, display); groupCleanable.addPreference(pref); return pref; var itemKey = "display_id_" + display.getDisplayId(); var categoryKey = itemKey + "_category"; var category = (PreferenceCategory) groupCleanable.findUnusedPreference(categoryKey); if (category != null) { groupCleanable.addPreference(category); return category.findPreference(itemKey); } else { category = new PreferenceCategory(context); category.setPersistent(false); category.setKey(categoryKey); // Must add the category to the hierarchy before adding its descendants. Otherwise // the category will not have a preference manager, which causes an exception when a // child is added to it. groupCleanable.addPreference(category); var prefItem = new DisplayPreference(context, display); prefItem.setTitle(context.getString(EXTERNAL_DISPLAY_RESOLUTION_TITLE_RESOURCE) + " | " + context.getString(EXTERNAL_DISPLAY_ROTATION_TITLE_RESOURCE)); prefItem.setKey(itemKey); category.addPreference(prefItem); category.setTitle(display.getName()); return prefItem; } } private List<Display> externalDisplaysToShow(int displayIdToShow) { Loading Loading @@ -621,16 +642,11 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen implements Preference.OnPreferenceClickListener { private final int mDisplayId; static String generateKey(final Display display) { return "display_id_" + display.getDisplayId(); } DisplayPreference(@NonNull final Context context, @NonNull final Display display) { super(context); mDisplayId = display.getDisplayId(); setPersistent(false); setKey(generateKey(display)); setOnPreferenceClickListener(this); } Loading tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java +6 −4 Original line number Diff line number Diff line Loading @@ -173,16 +173,18 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa mHandler.flush(); PreferenceCategory pref = mPreferenceScreen.findPreference(DISPLAYS_LIST_PREFERENCE_KEY); assertThat(pref).isNotNull(); DisplayPreference display1Pref = (DisplayPreference) pref.getPreference(0); DisplayPreference display2Pref = (DisplayPreference) pref.getPreference(1); var display1Category = (PreferenceCategory) pref.getPreference(0); var display1Pref = (DisplayPreference) display1Category.getPreference(0); var display2Category = (PreferenceCategory) pref.getPreference(1); var display2Pref = (DisplayPreference) display2Category.getPreference(0); assertThat(display1Pref.getKey()).isEqualTo("display_id_" + 1); assertThat("" + display1Pref.getTitle()).isEqualTo("HDMI"); assertThat("" + display1Category.getTitle()).isEqualTo("HDMI"); assertThat("" + display1Pref.getSummary()).isEqualTo("1920 x 1080"); display1Pref.onPreferenceClick(display1Pref); assertThat(mDisplayIdArg).isEqualTo(1); verify(mMockedMetricsLogger).writePreferenceClickMetric(display1Pref); assertThat(display2Pref.getKey()).isEqualTo("display_id_" + 2); assertThat("" + display2Pref.getTitle()).isEqualTo("Overlay #1"); assertThat("" + display2Category.getTitle()).isEqualTo("Overlay #1"); assertThat("" + display2Pref.getSummary()).isEqualTo("1240 x 780"); display2Pref.onPreferenceClick(display2Pref); assertThat(mDisplayIdArg).isEqualTo(2); Loading Loading
src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java +26 −10 Original line number Diff line number Diff line Loading @@ -452,17 +452,38 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen var pref = getDisplayPreference(context, display, groupCleanable); pref.setSummary(display.getMode().getPhysicalWidth() + " x " + display.getMode().getPhysicalHeight()); pref.setTitle(display.getName()); } } } private Preference getDisplayPreference(@NonNull Context context, @NonNull Display display, @NonNull PrefRefresh groupCleanable) { var pref = groupCleanable.findUnusedPreference(DisplayPreference.generateKey(display)); pref = pref != null ? pref : new DisplayPreference(context, display); groupCleanable.addPreference(pref); return pref; var itemKey = "display_id_" + display.getDisplayId(); var categoryKey = itemKey + "_category"; var category = (PreferenceCategory) groupCleanable.findUnusedPreference(categoryKey); if (category != null) { groupCleanable.addPreference(category); return category.findPreference(itemKey); } else { category = new PreferenceCategory(context); category.setPersistent(false); category.setKey(categoryKey); // Must add the category to the hierarchy before adding its descendants. Otherwise // the category will not have a preference manager, which causes an exception when a // child is added to it. groupCleanable.addPreference(category); var prefItem = new DisplayPreference(context, display); prefItem.setTitle(context.getString(EXTERNAL_DISPLAY_RESOLUTION_TITLE_RESOURCE) + " | " + context.getString(EXTERNAL_DISPLAY_ROTATION_TITLE_RESOURCE)); prefItem.setKey(itemKey); category.addPreference(prefItem); category.setTitle(display.getName()); return prefItem; } } private List<Display> externalDisplaysToShow(int displayIdToShow) { Loading Loading @@ -621,16 +642,11 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen implements Preference.OnPreferenceClickListener { private final int mDisplayId; static String generateKey(final Display display) { return "display_id_" + display.getDisplayId(); } DisplayPreference(@NonNull final Context context, @NonNull final Display display) { super(context); mDisplayId = display.getDisplayId(); setPersistent(false); setKey(generateKey(display)); setOnPreferenceClickListener(this); } Loading
tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java +6 −4 Original line number Diff line number Diff line Loading @@ -173,16 +173,18 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa mHandler.flush(); PreferenceCategory pref = mPreferenceScreen.findPreference(DISPLAYS_LIST_PREFERENCE_KEY); assertThat(pref).isNotNull(); DisplayPreference display1Pref = (DisplayPreference) pref.getPreference(0); DisplayPreference display2Pref = (DisplayPreference) pref.getPreference(1); var display1Category = (PreferenceCategory) pref.getPreference(0); var display1Pref = (DisplayPreference) display1Category.getPreference(0); var display2Category = (PreferenceCategory) pref.getPreference(1); var display2Pref = (DisplayPreference) display2Category.getPreference(0); assertThat(display1Pref.getKey()).isEqualTo("display_id_" + 1); assertThat("" + display1Pref.getTitle()).isEqualTo("HDMI"); assertThat("" + display1Category.getTitle()).isEqualTo("HDMI"); assertThat("" + display1Pref.getSummary()).isEqualTo("1920 x 1080"); display1Pref.onPreferenceClick(display1Pref); assertThat(mDisplayIdArg).isEqualTo(1); verify(mMockedMetricsLogger).writePreferenceClickMetric(display1Pref); assertThat(display2Pref.getKey()).isEqualTo("display_id_" + 2); assertThat("" + display2Pref.getTitle()).isEqualTo("Overlay #1"); assertThat("" + display2Category.getTitle()).isEqualTo("Overlay #1"); assertThat("" + display2Pref.getSummary()).isEqualTo("1240 x 780"); display2Pref.onPreferenceClick(display2Pref); assertThat(mDisplayIdArg).isEqualTo(2); Loading