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

Commit 88307075 authored by Matthew DeVore's avatar Matthew DeVore Committed by Android (Google) Code Review
Browse files

Merge "Show a category for each external display" into main

parents 2701724b c1191380
Loading
Loading
Loading
Loading
+26 −10
Original line number Diff line number Diff line
@@ -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) {
@@ -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);
        }

+6 −4
Original line number Diff line number Diff line
@@ -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);