Move color modes to ColorDisplayManager
Bug: 123352608 Test: make RunSettingsRoboTests Change-Id: I3c054fa0cca4bbd1c955ef03d1733320ffe9e0f0
This commit is contained in:
@@ -18,14 +18,12 @@ import android.hardware.display.ColorDisplayManager;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.internal.app.ColorDisplayController;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
|
||||
public class ColorModePreferenceController extends BasePreferenceController {
|
||||
private static final String TAG = "ColorModePreference";
|
||||
|
||||
private ColorDisplayController mColorDisplayController;
|
||||
private ColorDisplayManager mColorDisplayManager;
|
||||
|
||||
public ColorModePreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
@@ -35,30 +33,30 @@ public class ColorModePreferenceController extends BasePreferenceController {
|
||||
public int getAvailabilityStatus() {
|
||||
return mContext.getSystemService(ColorDisplayManager.class)
|
||||
.isDeviceColorManaged()
|
||||
&& !getColorDisplayController().getAccessibilityTransformActivated() ?
|
||||
&& !ColorDisplayManager.areAccessibilityTransformsEnabled(mContext) ?
|
||||
AVAILABLE_UNSEARCHABLE : DISABLED_FOR_USER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getSummary() {
|
||||
final int colorMode = getColorDisplayController().getColorMode();
|
||||
if (colorMode == ColorDisplayController.COLOR_MODE_AUTOMATIC) {
|
||||
final int colorMode = getColorDisplayManager().getColorMode();
|
||||
if (colorMode == ColorDisplayManager.COLOR_MODE_AUTOMATIC) {
|
||||
return mContext.getText(R.string.color_mode_option_automatic);
|
||||
}
|
||||
if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) {
|
||||
if (colorMode == ColorDisplayManager.COLOR_MODE_SATURATED) {
|
||||
return mContext.getText(R.string.color_mode_option_saturated);
|
||||
}
|
||||
if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) {
|
||||
if (colorMode == ColorDisplayManager.COLOR_MODE_BOOSTED) {
|
||||
return mContext.getText(R.string.color_mode_option_boosted);
|
||||
}
|
||||
return mContext.getText(R.string.color_mode_option_natural);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
ColorDisplayController getColorDisplayController() {
|
||||
if (mColorDisplayController == null) {
|
||||
mColorDisplayController = new ColorDisplayController(mContext);
|
||||
ColorDisplayManager getColorDisplayManager() {
|
||||
if (mColorDisplayManager == null) {
|
||||
mColorDisplayManager = mContext.getSystemService(ColorDisplayManager.class);
|
||||
}
|
||||
return mColorDisplayController;
|
||||
return mColorDisplayManager;
|
||||
}
|
||||
}
|
||||
|
@@ -14,14 +14,20 @@
|
||||
package com.android.settings.display;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.database.ContentObserver;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.hardware.display.ColorDisplayManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.provider.SearchIndexableResource;
|
||||
|
||||
import android.provider.Settings.Secure;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.internal.app.ColorDisplayController;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.search.Indexable;
|
||||
@@ -36,8 +42,7 @@ import java.util.List;
|
||||
|
||||
@SuppressWarnings("WeakerAccess")
|
||||
@SearchIndexable
|
||||
public class ColorModePreferenceFragment extends RadioButtonPickerFragment
|
||||
implements ColorDisplayController.Callback {
|
||||
public class ColorModePreferenceFragment extends RadioButtonPickerFragment {
|
||||
|
||||
@VisibleForTesting
|
||||
static final String KEY_COLOR_MODE_NATURAL = "color_mode_natural";
|
||||
@@ -48,21 +53,41 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment
|
||||
@VisibleForTesting
|
||||
static final String KEY_COLOR_MODE_AUTOMATIC = "color_mode_automatic";
|
||||
|
||||
private ColorDisplayController mController;
|
||||
private ContentObserver mContentObserver;
|
||||
private ColorDisplayManager mColorDisplayManager;
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
mController = new ColorDisplayController(context);
|
||||
mController.setListener(this);
|
||||
|
||||
mColorDisplayManager = context.getSystemService(ColorDisplayManager.class);
|
||||
|
||||
final ContentResolver cr = context.getContentResolver();
|
||||
mContentObserver = new ContentObserver(new Handler(Looper.getMainLooper())) {
|
||||
@Override
|
||||
public void onChange(boolean selfChange, Uri uri) {
|
||||
super.onChange(selfChange, uri);
|
||||
if (ColorDisplayManager.areAccessibilityTransformsEnabled(getContext())) {
|
||||
// Color modes are not configurable when Accessibility transforms are enabled.
|
||||
// Close this fragment in that case.
|
||||
getActivity().finish();
|
||||
}
|
||||
}
|
||||
};
|
||||
cr.registerContentObserver(
|
||||
Secure.getUriFor(Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED),
|
||||
false /* notifyForDescendants */, mContentObserver, mUserId);
|
||||
cr.registerContentObserver(
|
||||
Secure.getUriFor(Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED),
|
||||
false /* notifyForDescendants */, mContentObserver, mUserId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
super.onDetach();
|
||||
if (mController != null) {
|
||||
mController.setListener(null);
|
||||
mController = null;
|
||||
if (mContentObserver != null) {
|
||||
getContext().getContentResolver().unregisterContentObserver(mContentObserver);
|
||||
mContentObserver = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,22 +115,22 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment
|
||||
final int[] availableColorModes = c.getResources().getIntArray(
|
||||
com.android.internal.R.array.config_availableColorModes);
|
||||
|
||||
List<ColorModeCandidateInfo> candidates = new ArrayList<ColorModeCandidateInfo>();
|
||||
List<ColorModeCandidateInfo> candidates = new ArrayList<>();
|
||||
if (availableColorModes != null) {
|
||||
for (int colorMode : availableColorModes) {
|
||||
if (colorMode == ColorDisplayController.COLOR_MODE_NATURAL) {
|
||||
if (colorMode == ColorDisplayManager.COLOR_MODE_NATURAL) {
|
||||
candidates.add(new ColorModeCandidateInfo(
|
||||
c.getText(R.string.color_mode_option_natural),
|
||||
KEY_COLOR_MODE_NATURAL, true /* enabled */));
|
||||
} else if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) {
|
||||
} else if (colorMode == ColorDisplayManager.COLOR_MODE_BOOSTED) {
|
||||
candidates.add(new ColorModeCandidateInfo(
|
||||
c.getText(R.string.color_mode_option_boosted),
|
||||
KEY_COLOR_MODE_BOOSTED, true /* enabled */));
|
||||
} else if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) {
|
||||
} else if (colorMode == ColorDisplayManager.COLOR_MODE_SATURATED) {
|
||||
candidates.add(new ColorModeCandidateInfo(
|
||||
c.getText(R.string.color_mode_option_saturated),
|
||||
KEY_COLOR_MODE_SATURATED, true /* enabled */));
|
||||
} else if (colorMode == ColorDisplayController.COLOR_MODE_AUTOMATIC) {
|
||||
} else if (colorMode == ColorDisplayManager.COLOR_MODE_AUTOMATIC) {
|
||||
candidates.add(new ColorModeCandidateInfo(
|
||||
c.getText(R.string.color_mode_option_automatic),
|
||||
KEY_COLOR_MODE_AUTOMATIC, true /* enabled */));
|
||||
@@ -117,12 +142,12 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment
|
||||
|
||||
@Override
|
||||
protected String getDefaultKey() {
|
||||
final int colorMode = mController.getColorMode();
|
||||
if (colorMode == ColorDisplayController.COLOR_MODE_AUTOMATIC) {
|
||||
final int colorMode = mColorDisplayManager.getColorMode();
|
||||
if (colorMode == ColorDisplayManager.COLOR_MODE_AUTOMATIC) {
|
||||
return KEY_COLOR_MODE_AUTOMATIC;
|
||||
} else if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) {
|
||||
} else if (colorMode == ColorDisplayManager.COLOR_MODE_SATURATED) {
|
||||
return KEY_COLOR_MODE_SATURATED;
|
||||
} else if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) {
|
||||
} else if (colorMode == ColorDisplayManager.COLOR_MODE_BOOSTED) {
|
||||
return KEY_COLOR_MODE_BOOSTED;
|
||||
}
|
||||
return KEY_COLOR_MODE_NATURAL;
|
||||
@@ -132,16 +157,16 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment
|
||||
protected boolean setDefaultKey(String key) {
|
||||
switch (key) {
|
||||
case KEY_COLOR_MODE_NATURAL:
|
||||
mController.setColorMode(ColorDisplayController.COLOR_MODE_NATURAL);
|
||||
mColorDisplayManager.setColorMode(ColorDisplayManager.COLOR_MODE_NATURAL);
|
||||
break;
|
||||
case KEY_COLOR_MODE_BOOSTED:
|
||||
mController.setColorMode(ColorDisplayController.COLOR_MODE_BOOSTED);
|
||||
mColorDisplayManager.setColorMode(ColorDisplayManager.COLOR_MODE_BOOSTED);
|
||||
break;
|
||||
case KEY_COLOR_MODE_SATURATED:
|
||||
mController.setColorMode(ColorDisplayController.COLOR_MODE_SATURATED);
|
||||
mColorDisplayManager.setColorMode(ColorDisplayManager.COLOR_MODE_SATURATED);
|
||||
break;
|
||||
case KEY_COLOR_MODE_AUTOMATIC:
|
||||
mController.setColorMode(ColorDisplayController.COLOR_MODE_AUTOMATIC);
|
||||
mColorDisplayManager.setColorMode(ColorDisplayManager.COLOR_MODE_AUTOMATIC);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
@@ -179,15 +204,6 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAccessibilityTransformChanged(boolean state) {
|
||||
// Color modes are no not configurable when Accessibility transforms are enabled. Close
|
||||
// this fragment in that case.
|
||||
if (state) {
|
||||
getActivity().onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||
new BaseSearchIndexProvider() {
|
||||
@Override
|
||||
|
@@ -17,12 +17,13 @@ import android.content.Context;
|
||||
import android.hardware.display.ColorDisplayManager;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.Settings.Secure;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.internal.app.ColorDisplayController;
|
||||
import com.android.settings.core.TogglePreferenceController;
|
||||
|
||||
public class DisplayWhiteBalancePreferenceController extends TogglePreferenceController {
|
||||
private ColorDisplayController mColorDisplayController;
|
||||
|
||||
private ColorDisplayManager mColorDisplayManager;
|
||||
|
||||
public DisplayWhiteBalancePreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
@@ -33,8 +34,8 @@ public class DisplayWhiteBalancePreferenceController extends TogglePreferenceCon
|
||||
// Display white balance is only valid in linear light space. COLOR_MODE_SATURATED implies
|
||||
// unmanaged color mode, and hence unknown color processing conditions.
|
||||
return ColorDisplayManager.isDisplayWhiteBalanceAvailable(mContext) &&
|
||||
getColorDisplayController().getColorMode() !=
|
||||
ColorDisplayController.COLOR_MODE_SATURATED ?
|
||||
getColorDisplayManager().getColorMode() !=
|
||||
ColorDisplayManager.COLOR_MODE_SATURATED ?
|
||||
AVAILABLE : DISABLED_FOR_USER;
|
||||
}
|
||||
|
||||
@@ -51,10 +52,11 @@ public class DisplayWhiteBalancePreferenceController extends TogglePreferenceCon
|
||||
return true;
|
||||
}
|
||||
|
||||
ColorDisplayController getColorDisplayController() {
|
||||
if (mColorDisplayController == null) {
|
||||
mColorDisplayController = new ColorDisplayController(mContext);
|
||||
@VisibleForTesting
|
||||
ColorDisplayManager getColorDisplayManager() {
|
||||
if (mColorDisplayManager == null) {
|
||||
mColorDisplayManager = mContext.getSystemService(ColorDisplayManager.class);
|
||||
}
|
||||
return mColorDisplayController;
|
||||
return mColorDisplayManager;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user