summaryrefslogtreecommitdiff
path: root/Settings/src/com/android/tv/settings/compat/RenderUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'Settings/src/com/android/tv/settings/compat/RenderUtil.java')
-rw-r--r--Settings/src/com/android/tv/settings/compat/RenderUtil.java334
1 files changed, 0 insertions, 334 deletions
diff --git a/Settings/src/com/android/tv/settings/compat/RenderUtil.java b/Settings/src/com/android/tv/settings/compat/RenderUtil.java
deleted file mode 100644
index 4777dee44..000000000
--- a/Settings/src/com/android/tv/settings/compat/RenderUtil.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.tv.settings.compat;
-
-import static com.android.tv.settings.compat.TsCollapsibleCategory.COLLAPSE;
-import static com.android.tv.settings.library.ManagerUtil.INFO_WIFI_SIGNAL_LEVEL;
-import static com.android.tv.settings.library.ManagerUtil.STATE_ACCESSIBILITY_SERVICE;
-import static com.android.tv.settings.library.ManagerUtil.STATE_APPS;
-import static com.android.tv.settings.library.ManagerUtil.STATE_APP_MANAGEMENT;
-import static com.android.tv.settings.library.ManagerUtil.STATE_EMPTY;
-import static com.android.tv.settings.library.ManagerUtil.STATE_MISSING_STORAGE;
-import static com.android.tv.settings.library.ManagerUtil.STATE_STORAGE;
-import static com.android.tv.settings.library.ManagerUtil.STATE_WIFI_DETAILS;
-import static com.android.tv.settings.library.PreferenceCompat.TYPE_DIALOG;
-import static com.android.tv.settings.library.PreferenceCompat.TYPE_LIST;
-import static com.android.tv.settings.library.PreferenceCompat.TYPE_PREFERENCE;
-import static com.android.tv.settings.library.PreferenceCompat.TYPE_PREFERENCE_ACCESS_POINT;
-import static com.android.tv.settings.library.PreferenceCompat.TYPE_PREFERENCE_CATEGORY;
-import static com.android.tv.settings.library.PreferenceCompat.TYPE_PREFERENCE_COLLAPSE_CATEGORY;
-import static com.android.tv.settings.library.PreferenceCompat.TYPE_RADIO;
-import static com.android.tv.settings.library.PreferenceCompat.TYPE_SWITCH;
-
-import android.content.Context;
-
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-import androidx.preference.TwoStatePreference;
-
-import com.android.tv.settings.R;
-import com.android.tv.settings.RadioPreference;
-import com.android.tv.settings.library.PreferenceCompat;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.OptionalInt;
-import java.util.stream.IntStream;
-
-/** Provide utility methods for rendering PreferenceFragment. */
-public final class RenderUtil {
-
- private RenderUtil() {
- }
-
- public static void updatePreferenceGroup(
- PreferenceGroup preferenceGroup, List<PreferenceCompat> newPrefCompats, int order) {
- if (preferenceGroup == null || newPrefCompats == null) {
- return;
- }
- Context context = preferenceGroup.getContext();
- // Remove old preferences that do not exist in the new list
- int index = 0;
- while (index < getPreferenceCount(preferenceGroup)) {
- if (!(preferenceGroup.getPreference(index) instanceof HasKeys)) {
- return;
- }
- HasKeys pref = (HasKeys) preferenceGroup.getPreference(index);
- // Do not remove the preference if order is provided and current preference is not in
- // the group with the provided order.
- if (order != -1 && ((Preference) pref).getOrder() != order) {
- index++;
- } else {
- boolean match =
- newPrefCompats.stream().anyMatch(
- prefParcelable -> keyMatch(pref, prefParcelable));
- if (!match) {
- preferenceGroup.removePreference((Preference) pref);
- } else {
- index++;
- }
- }
- }
-
- // Add or update preferences following the order in the new list.
- IntStream.range(0, newPrefCompats.size())
- .forEach(
- i -> {
- PreferenceCompat preferenceCompat = newPrefCompats.get(i);
- OptionalInt matchedIndex =
- IntStream.range(0, getPreferenceCount(preferenceGroup))
- .filter(
- j -> keyMatch(
- (HasKeys) preferenceGroup.getPreference(
- j), preferenceCompat))
- .findFirst();
- HasKeys newPref;
- if (matchedIndex.isPresent()) {
- newPref = (HasKeys) preferenceGroup.getPreference(
- matchedIndex.getAsInt());
- } else {
- newPref = createPreference(context, preferenceCompat);
- preferenceGroup.addPreference((Preference) newPref);
- }
- updatePreference(context, newPref, preferenceCompat,
- order != -1 ? order : i);
- if (newPref instanceof PreferenceGroup) {
- updatePreferenceGroup((PreferenceGroup) newPref,
- preferenceCompat.getChildPrefCompats(), -1);
- }
- });
- }
-
- public static void updatePreferenceGroup(
- PreferenceGroup preferenceGroup, List<PreferenceCompat> newPrefCompats) {
- updatePreferenceGroup(preferenceGroup, newPrefCompats, -1);
- }
-
- private static int getPreferenceCount(PreferenceGroup preferenceGroup) {
- return (preferenceGroup instanceof TsCollapsibleCategory)
- ? ((TsCollapsibleCategory) preferenceGroup).getRealPreferenceCount()
- : preferenceGroup.getPreferenceCount();
- }
-
- static boolean keyMatch(HasKeys preference, PreferenceCompat preferenceCompat) {
- return Arrays.equals(preference.getKeys(), preferenceCompat.getKey());
- }
-
- public static void updatePreference(
- Context context,
- HasKeys hasKeysPreference,
- PreferenceCompat preferenceCompat,
- int order) {
- switch (preferenceCompat.getType()) {
- case TYPE_PREFERENCE_ACCESS_POINT:
- Integer wifiLevel = getInfoInt(INFO_WIFI_SIGNAL_LEVEL, preferenceCompat);
- if (wifiLevel != null) {
- updateAccessPointPreference(
- (Preference) hasKeysPreference,
- wifiLevel,
- context);
- }
- break;
- case TYPE_PREFERENCE_COLLAPSE_CATEGORY:
- ((TsCollapsibleCategory) hasKeysPreference)
- .setCollapsed(getInfoBoolean(COLLAPSE, preferenceCompat));
- break;
- case TYPE_LIST:
- if (hasKeysPreference instanceof TsListPreference) {
- TsListPreference pref = (TsListPreference) hasKeysPreference;
- pref.setValue(preferenceCompat.getValue());
- }
- break;
- default:
- // no-op
- }
-
- String[] keys = preferenceCompat.getKey();
- hasKeysPreference.setKeys(keys);
- Preference preference = (Preference) hasKeysPreference;
- preference.setKey(keys[keys.length - 1]);
- if (preferenceCompat.getTitle() != null) {
- preference.setTitle(preferenceCompat.getTitle());
- }
- if (preferenceCompat.getSummary() != null) {
- preference.setSummary(preferenceCompat.getSummary());
- }
- if (preferenceCompat.getIntent() != null) {
- preference.setIntent(preferenceCompat.getIntent());
- }
- if (preferenceCompat.getExtras() != null) {
- preference.getExtras().putAll(preferenceCompat.getExtras());
- }
- Integer nextState = preferenceCompat.getNextState();
- if (nextState != null) {
- preference.setFragment(getNextFragment(nextState));
- }
- setVisible(preference, preferenceCompat);
- setSelectable(preference, preferenceCompat);
- setEnabled(preference, preferenceCompat);
- setPersistent(preference, preferenceCompat);
- if (preference instanceof TwoStatePreference) {
- setChecked((TwoStatePreference) preference, preferenceCompat);
- }
- if (preference instanceof TsRadioPreference) {
- if (preferenceCompat.getRadioGroup() != null) {
- ((RadioPreference) preference).setRadioGroup(preferenceCompat.getRadioGroup());
- }
- }
- if (preference instanceof TsRestrictedPreference) {
- ((TsRestrictedPreference) preference).setDisabledByAdmin(
- preferenceCompat.isDisabledByAdmin());
- }
- if (preference instanceof TsRestrictedSwitchPreference) {
- ((TsRestrictedSwitchPreference) preference).setDisabledByAdmin(
- preferenceCompat.isDisabledByAdmin());
- }
- if (preference instanceof TsListPreference) {
- ((TsListPreference) preference).setEntries(preferenceCompat.getEntries());
- ((TsListPreference) preference).setEntryValues(preferenceCompat.getEntryValues());
- ((TsListPreference) preference).setValueIndex(preferenceCompat.getValueIndex());
- ((TsListPreference) preference).setValue(preferenceCompat.getValue());
- }
- preference.setOrder(order);
- }
-
- public static HasKeys createPreference(Context context, PreferenceCompat preferenceCompat) {
- if (preferenceCompat.isRestricted()) {
- if (preferenceCompat.getType() == TYPE_SWITCH) {
- return new TsRestrictedSwitchPreference(preferenceCompat.getKey(), context);
- }
- return new TsRestrictedPreference(preferenceCompat.getKey(), context);
- }
- if (preferenceCompat.hasSlice()) {
- return new TsSlicePreference(
- context, preferenceCompat.getKey(), preferenceCompat.getSliceUri());
- }
- switch (preferenceCompat.getType()) {
- case TYPE_PREFERENCE_ACCESS_POINT:
- return new TsAccessPointPreference(context, preferenceCompat.getKey());
- case TYPE_PREFERENCE_CATEGORY:
- return new TsPreferenceCategory(context, preferenceCompat.getKey());
- case TYPE_PREFERENCE_COLLAPSE_CATEGORY:
- return new TsCollapsibleCategory(context, preferenceCompat.getKey());
- case TYPE_LIST:
- return new TsListPreference(context, preferenceCompat.getKey());
- case TYPE_RADIO:
- return new TsRadioPreference(context, preferenceCompat.getKey());
- case TYPE_SWITCH:
- return new TsSwitchPreference(context, preferenceCompat.getKey());
- case TYPE_DIALOG:
- return new TsDialogPreference(context, preferenceCompat.getKey());
- case TYPE_PREFERENCE:
- default:
- return new TsPreference(context, preferenceCompat.getKey());
- }
- }
-
- public static Boolean getInfoBoolean(String key, PreferenceCompat preferenceCompat) {
- Object value = preferenceCompat.getInfo(key);
- return (value instanceof Boolean) ? (Boolean) value : null;
- }
-
- public static Integer getInfoInt(String key, PreferenceCompat preferenceCompat) {
- Object value = preferenceCompat.getInfo(key);
- return (value instanceof Integer) ? (Integer) value : null;
- }
-
- public static void setChecked(
- TwoStatePreference preference, PreferenceCompat preferenceCompat) {
- if (preferenceCompat.getChecked() == PreferenceCompat.STATUS_ON) {
- preference.setChecked(true);
- } else if (preferenceCompat.getChecked() == PreferenceCompat.STATUS_OFF) {
- preference.setChecked(false);
- }
- }
-
- public static void setPersistent(
- Preference preference, PreferenceCompat preferenceCompat) {
- if (preferenceCompat.getPersistent() == PreferenceCompat.STATUS_ON) {
- preference.setPersistent(true);
- } else if (preferenceCompat.getPersistent() == PreferenceCompat.STATUS_OFF) {
- preference.setPersistent(false);
- }
- }
-
- public static void setSelectable(Preference preference, PreferenceCompat preferenceParcelable) {
- if (preferenceParcelable.getSelectable() == PreferenceCompat.STATUS_ON) {
- preference.setVisible(true);
- } else if (preferenceParcelable.getVisible() == PreferenceCompat.STATUS_OFF) {
- preference.setVisible(false);
- }
- }
-
- public static void setVisible(Preference preference, PreferenceCompat preferenceParcelable) {
- if (preferenceParcelable.getVisible() == PreferenceCompat.STATUS_ON) {
- preference.setVisible(true);
- } else if (preferenceParcelable.getVisible() == PreferenceCompat.STATUS_OFF) {
- preference.setVisible(false);
- }
- }
-
- public static void setEnabled(Preference preference, PreferenceCompat preferenceParcelable) {
- if (preferenceParcelable.getEnabled() == PreferenceCompat.STATUS_ON) {
- preference.setEnabled(true);
- } else if (preferenceParcelable.getEnabled() == PreferenceCompat.STATUS_OFF) {
- preference.setEnabled(false);
- }
- }
-
- static void updateAccessPointPreference(Preference preference, int level, Context context) {
- switch (level) {
- case 4:
- preference.setIcon(R.drawable.ic_wifi_signal_4_white);
- return;
- case 3:
- preference.setIcon(R.drawable.ic_wifi_signal_3_white);
- return;
- case 2:
- preference.setIcon(R.drawable.ic_wifi_signal_2_white);
- return;
- case 1:
- preference.setIcon(R.drawable.ic_wifi_signal_1_white);
- return;
- case 0:
- // fall through
- default:
- preference.setIcon(R.drawable.ic_wifi_signal_0_white);
- return;
- }
- }
-
- private static String getNextFragment(int nextState) {
- switch (nextState) {
- case STATE_WIFI_DETAILS:
- return "com.android.tv.settings.connectivity.WifiDetailsFragmentCompat";
- case STATE_APP_MANAGEMENT:
- return "com.android.tv.settings.device.apps.AppManagementFragmentCompat";
- case STATE_ACCESSIBILITY_SERVICE:
- return "com.android.tv.settings.accessibility.AccessibilityServiceFragmentCompat";
- case STATE_STORAGE:
- return "com.android.tv.settings.device.storage.StorageFragmentCompat";
- case STATE_MISSING_STORAGE:
- return "com.android.tv.settings.device.storage.MissingStorageFragmentCompat";
- case STATE_APPS:
- return "com.android.tv.settings.device.apps.AppsFragmentCompat";
- case STATE_EMPTY:
- default:
- return null;
- }
- }
-}