Show color modes from config_availableColorModes

Check config_availableColorModes to decide which color mode options
to show.

Bug: 73824924
Bug: 73825738
Test: 2016, 2017, and 2018 devices
Change-Id: I42915595348061ff4b3f2fdf14753e96dfcb2052
This commit is contained in:
Chia-I Wu
2018-03-15 08:35:20 -07:00
parent c4929ccc19
commit d4cfb414c3
5 changed files with 132 additions and 12 deletions

View File

@@ -49,6 +49,9 @@ public class ColorModePreferenceController extends BasePreferenceController {
@Override
public CharSequence getSummary() {
final int colorMode = getColorDisplayController().getColorMode();
if (colorMode == ColorDisplayController.COLOR_MODE_AUTOMATIC) {
return mContext.getText(R.string.color_mode_option_automatic);
}
if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) {
return mContext.getText(R.string.color_mode_option_saturated);
}

View File

@@ -26,7 +26,7 @@ import com.android.settings.R;
import com.android.settings.widget.RadioButtonPickerFragment;
import com.android.settingslib.widget.CandidateInfo;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
@SuppressWarnings("WeakerAccess")
@@ -39,6 +39,8 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment
static final String KEY_COLOR_MODE_BOOSTED = "color_mode_boosted";
@VisibleForTesting
static final String KEY_COLOR_MODE_SATURATED = "color_mode_saturated";
@VisibleForTesting
static final String KEY_COLOR_MODE_AUTOMATIC = "color_mode_automatic";
private ColorDisplayController mController;
@@ -78,21 +80,41 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment
@Override
protected List<? extends CandidateInfo> getCandidates() {
Context c = getContext();
return Arrays.asList(
new ColorModeCandidateInfo(c.getText(R.string.color_mode_option_natural),
KEY_COLOR_MODE_NATURAL, true /* enabled */),
new ColorModeCandidateInfo(c.getText(R.string.color_mode_option_boosted),
KEY_COLOR_MODE_BOOSTED, true /* enabled */),
new ColorModeCandidateInfo(c.getText(R.string.color_mode_option_saturated),
KEY_COLOR_MODE_SATURATED, true /* enabled */)
);
final Context c = getContext();
final int[] availableColorModes = c.getResources().getIntArray(
com.android.internal.R.array.config_availableColorModes);
List<ColorModeCandidateInfo> candidates = new ArrayList<ColorModeCandidateInfo>();
if (availableColorModes != null) {
for (int colorMode : availableColorModes) {
if (colorMode == ColorDisplayController.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) {
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) {
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) {
candidates.add(new ColorModeCandidateInfo(
c.getText(R.string.color_mode_option_automatic),
KEY_COLOR_MODE_AUTOMATIC, true /* enabled */));
}
}
}
return candidates;
}
@Override
protected String getDefaultKey() {
final int colorMode = mController.getColorMode();
if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) {
if (colorMode == ColorDisplayController.COLOR_MODE_AUTOMATIC) {
return KEY_COLOR_MODE_AUTOMATIC;
} else if (colorMode == ColorDisplayController.COLOR_MODE_SATURATED) {
return KEY_COLOR_MODE_SATURATED;
} else if (colorMode == ColorDisplayController.COLOR_MODE_BOOSTED) {
return KEY_COLOR_MODE_BOOSTED;
@@ -112,6 +134,9 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment
case KEY_COLOR_MODE_SATURATED:
mController.setColorMode(ColorDisplayController.COLOR_MODE_SATURATED);
break;
case KEY_COLOR_MODE_AUTOMATIC:
mController.setColorMode(ColorDisplayController.COLOR_MODE_AUTOMATIC);
break;
}
return true;
}