diff options
author | Kriti Dang <kritidang@google.com> | 2022-05-19 16:22:09 +0200 |
---|---|---|
committer | Kriti Dang <kritidang@google.com> | 2022-06-01 19:27:35 +0000 |
commit | cef436714e8dea42cc6b6af67e1a0e24b02d1742 (patch) | |
tree | 9152b0937c4cdc94a400c6a839ff4519b3ff1258 | |
parent | 55d8c0ab40681ff6ede627fa24a4b93f04e151ec (diff) | |
download | TvSettings-cef436714e8dea42cc6b6af67e1a0e24b02d1742.tar.gz |
Adding logic for Resolution preference in DisplayPreviewFragment
Bug: 232852397
Steps to test: m, go Settings->Display&Sound Observe:Resoution setting not
present if getSystemPreferredMode returns null
Test: Tested manually
Change-Id: Icc655c4bc987fe7b5f54583172375e0002c38835
Merged-In: Icc655c4bc987fe7b5f54583172375e0002c38835
-rw-r--r-- | Settings/src/com/android/tv/settings/vendor/DisplayPreviewFragment.java | 59 |
1 files changed, 58 insertions, 1 deletions
diff --git a/Settings/src/com/android/tv/settings/vendor/DisplayPreviewFragment.java b/Settings/src/com/android/tv/settings/vendor/DisplayPreviewFragment.java index 59dfcde87..4c69ca93c 100644 --- a/Settings/src/com/android/tv/settings/vendor/DisplayPreviewFragment.java +++ b/Settings/src/com/android/tv/settings/vendor/DisplayPreviewFragment.java @@ -16,18 +16,75 @@ package com.android.tv.settings.vendor; +import android.hardware.display.DisplayManager; import android.os.Bundle; +import android.view.Display; import androidx.annotation.Keep; +import androidx.annotation.VisibleForTesting; +import androidx.preference.Preference; import com.android.tv.settings.R; import com.android.tv.settings.SettingsPreferenceFragment; +import com.android.tv.settings.util.ResolutionSelectionUtils; + +import java.util.Objects; /** A vendor sample of display preview settings. */ @Keep -public class DisplayPreviewFragment extends SettingsPreferenceFragment { +public class DisplayPreviewFragment extends SettingsPreferenceFragment implements + DisplayManager.DisplayListener { + private DisplayManager mDisplayManager; + private Display.Mode mCurrentMode = null; + private static final String KEY_RESOLUTION_TITLE = "resolution_selection"; + @Override public void onCreatePreferences(Bundle bundle, String s) { setPreferencesFromResource(R.xml.preview_display_vendor, null); + mDisplayManager = getDisplayManager(); + Display display = mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY); + if (display.getSystemPreferredDisplayMode() != null) { + mDisplayManager.registerDisplayListener(this, null); + mCurrentMode = mDisplayManager.getGlobalUserPreferredDisplayMode(); + updateResolutionTitleDescription(ResolutionSelectionUtils.modeToString( + mCurrentMode, getContext())); + } else { + removeResolutionPreference(); + } + } + + @VisibleForTesting + DisplayManager getDisplayManager() { + return getContext().getSystemService(DisplayManager.class); + } + + @Override + public void onDisplayAdded(int displayId) {} + + @Override + public void onDisplayRemoved(int displayId) {} + + @Override + public void onDisplayChanged(int displayId) { + Display.Mode newMode = mDisplayManager.getGlobalUserPreferredDisplayMode(); + if (!Objects.equals(mCurrentMode, newMode)) { + updateResolutionTitleDescription( + ResolutionSelectionUtils.modeToString(newMode, getContext())); + mCurrentMode = newMode; + } + } + + private void updateResolutionTitleDescription(String summary) { + Preference titlePreference = findPreference(KEY_RESOLUTION_TITLE); + if (titlePreference != null) { + titlePreference.setSummary(summary); + } + } + + private void removeResolutionPreference() { + Preference resolutionPreference = findPreference(KEY_RESOLUTION_TITLE); + if (resolutionPreference != null) { + getPreferenceScreen().removePreference(resolutionPreference); + } } } |