summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKriti Dang <kritidang@google.com>2022-05-19 16:22:09 +0200
committerKriti Dang <kritidang@google.com>2022-06-01 19:27:35 +0000
commitcef436714e8dea42cc6b6af67e1a0e24b02d1742 (patch)
tree9152b0937c4cdc94a400c6a839ff4519b3ff1258
parent55d8c0ab40681ff6ede627fa24a4b93f04e151ec (diff)
downloadTvSettings-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.java59
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);
+ }
}
}