Color transforms are now color modes.
We've also standardized on a specific, enumerated set of modes, which simplifies the code a bit. Bug: 29044347 Change-Id: I621352954d42ad25f9969b7a88d53defe84dd3b4
This commit is contained in:
@@ -67,6 +67,7 @@
|
|||||||
<uses-permission android:name="android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" />
|
<uses-permission android:name="android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" />
|
||||||
<uses-permission android:name="android.permission.READ_PROFILE" />
|
<uses-permission android:name="android.permission.READ_PROFILE" />
|
||||||
<uses-permission android:name="android.permission.CONFIGURE_WIFI_DISPLAY" />
|
<uses-permission android:name="android.permission.CONFIGURE_WIFI_DISPLAY" />
|
||||||
|
<uses-permission android:name="android.permission.CONFIGURE_DISPLAY_COLOR_MODE" />
|
||||||
<uses-permission android:name="android.permission.SET_TIME" />
|
<uses-permission android:name="android.permission.SET_TIME" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_NOTIFICATIONS" />
|
<uses-permission android:name="android.permission.ACCESS_NOTIFICATIONS" />
|
||||||
<uses-permission android:name="android.permission.REBOOT" />
|
<uses-permission android:name="android.permission.REBOOT" />
|
||||||
|
@@ -24,7 +24,6 @@ import android.os.Looper;
|
|||||||
import android.support.v14.preference.SwitchPreference;
|
import android.support.v14.preference.SwitchPreference;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
import android.view.Display.ColorTransform;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@@ -34,14 +33,14 @@ public class ColorModePreference extends SwitchPreference implements DisplayList
|
|||||||
private Display mDisplay;
|
private Display mDisplay;
|
||||||
|
|
||||||
private int mCurrentIndex;
|
private int mCurrentIndex;
|
||||||
private ArrayList<ColorTransformDescription> mDescriptions;
|
private ArrayList<ColorModeDescription> mDescriptions;
|
||||||
|
|
||||||
public ColorModePreference(Context context, AttributeSet attrs) {
|
public ColorModePreference(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
mDisplayManager = getContext().getSystemService(DisplayManager.class);
|
mDisplayManager = getContext().getSystemService(DisplayManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTransformsCount() {
|
public int getColorModeCount() {
|
||||||
return mDescriptions.size();
|
return mDescriptions.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,43 +76,24 @@ public class ColorModePreference extends SwitchPreference implements DisplayList
|
|||||||
mDescriptions = new ArrayList<>();
|
mDescriptions = new ArrayList<>();
|
||||||
|
|
||||||
Resources resources = getContext().getResources();
|
Resources resources = getContext().getResources();
|
||||||
int[] transforms = resources.getIntArray(
|
int[] colorModes = resources.getIntArray(R.array.color_mode_ids);
|
||||||
com.android.internal.R.array.config_colorTransforms);
|
|
||||||
String[] titles = resources.getStringArray(R.array.color_mode_names);
|
String[] titles = resources.getStringArray(R.array.color_mode_names);
|
||||||
String[] descriptions = resources.getStringArray(R.array.color_mode_descriptions);
|
String[] descriptions = resources.getStringArray(R.array.color_mode_descriptions);
|
||||||
// Map the resource information describing color transforms.
|
// Map the resource information describing color modes.
|
||||||
for (int i = 0; i < transforms.length; i++) {
|
for (int i = 0; i < colorModes.length; i++) {
|
||||||
if (transforms[i] != -1 && i != 1 /* Skip Natural for now. */) {
|
if (colorModes[i] != -1 && i != 1 /* Skip Natural for now. */) {
|
||||||
ColorTransformDescription desc = new ColorTransformDescription();
|
ColorModeDescription desc = new ColorModeDescription();
|
||||||
desc.colorTransform = transforms[i];
|
desc.colorMode = colorModes[i];
|
||||||
desc.title = titles[i];
|
desc.title = titles[i];
|
||||||
desc.summary = descriptions[i];
|
desc.summary = descriptions[i];
|
||||||
mDescriptions.add(desc);
|
mDescriptions.add(desc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Match up a ColorTransform to every description.
|
|
||||||
ColorTransform[] supportedColorTransforms = mDisplay.getSupportedColorTransforms();
|
|
||||||
for (int i = 0; i < supportedColorTransforms.length; i++) {
|
|
||||||
for (int j = 0; j < mDescriptions.size(); j++) {
|
|
||||||
if (mDescriptions.get(j).colorTransform
|
|
||||||
== supportedColorTransforms[i].getColorTransform()
|
|
||||||
&& mDescriptions.get(j).transform == null) {
|
|
||||||
mDescriptions.get(j).transform = supportedColorTransforms[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Remove any extras that don't have a transform for some reason.
|
|
||||||
for (int i = 0; i < mDescriptions.size(); i++) {
|
|
||||||
if (mDescriptions.get(i).transform == null) {
|
|
||||||
mDescriptions.remove(i--);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ColorTransform currentTransform = mDisplay.getColorTransform();
|
int currentColorMode = mDisplay.getColorMode();
|
||||||
mCurrentIndex = -1;
|
mCurrentIndex = -1;
|
||||||
for (int i = 0; i < mDescriptions.size(); i++) {
|
for (int i = 0; i < mDescriptions.size(); i++) {
|
||||||
if (mDescriptions.get(i).colorTransform == currentTransform.getColorTransform()) {
|
if (mDescriptions.get(i).colorMode == currentColorMode) {
|
||||||
mCurrentIndex = i;
|
mCurrentIndex = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -125,19 +105,18 @@ public class ColorModePreference extends SwitchPreference implements DisplayList
|
|||||||
protected boolean persistBoolean(boolean value) {
|
protected boolean persistBoolean(boolean value) {
|
||||||
// Right now this is a switch, so we only support two modes.
|
// Right now this is a switch, so we only support two modes.
|
||||||
if (mDescriptions.size() == 2) {
|
if (mDescriptions.size() == 2) {
|
||||||
ColorTransformDescription desc = mDescriptions.get(value ? 1 : 0);
|
ColorModeDescription desc = mDescriptions.get(value ? 1 : 0);
|
||||||
|
|
||||||
mDisplay.requestColorTransform(desc.transform);
|
mDisplay.requestColorMode(desc.colorMode);
|
||||||
mCurrentIndex = mDescriptions.indexOf(desc);
|
mCurrentIndex = mDescriptions.indexOf(desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class ColorTransformDescription {
|
private static class ColorModeDescription {
|
||||||
private int colorTransform;
|
private int colorMode;
|
||||||
private String title;
|
private String title;
|
||||||
private String summary;
|
private String summary;
|
||||||
private ColorTransform transform;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -478,7 +478,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
|
|||||||
|
|
||||||
mColorModePreference = (ColorModePreference) findPreference(KEY_COLOR_MODE);
|
mColorModePreference = (ColorModePreference) findPreference(KEY_COLOR_MODE);
|
||||||
mColorModePreference.updateCurrentAndSupported();
|
mColorModePreference.updateCurrentAndSupported();
|
||||||
if (mColorModePreference.getTransformsCount() < 2) {
|
if (mColorModePreference.getColorModeCount() < 2) {
|
||||||
removePreference(KEY_COLOR_MODE);
|
removePreference(KEY_COLOR_MODE);
|
||||||
mColorModePreference = null;
|
mColorModePreference = null;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user