[1/2] OL: Introduce attribute for color picker enablement
Get rid of the dependency on multi color led overlay value
to allow color picker for all devices.
Change-Id: I0a0b7284b6b6bd2497076f85bd0788f575532b1a
diff --git a/res/values/custom_attrs.xml b/res/values/custom_attrs.xml
index d8e3c59..658eed8 100644
--- a/res/values/custom_attrs.xml
+++ b/res/values/custom_attrs.xml
@@ -28,6 +28,7 @@
<declare-styleable name="ColorSelectPreference">
<attr name="ledPreview" format="boolean" />
+ <attr name="multiColor" format="boolean" />
<attr name="withAlpha" format="boolean" />
</declare-styleable>
</resources>
diff --git a/src/org/omnirom/omnilib/preference/ColorSelectDialog.java b/src/org/omnirom/omnilib/preference/ColorSelectDialog.java
index 1decfb3..398949c 100644
--- a/src/org/omnirom/omnilib/preference/ColorSelectDialog.java
+++ b/src/org/omnirom/omnilib/preference/ColorSelectDialog.java
@@ -72,15 +72,18 @@
private boolean mWithAlpha;
private boolean mShowLedPreview;
+ private boolean mShowMultiColor;
private NotificationManager mNoMan;
private Context mContext;
- protected ColorSelectDialog(Context context, int initialColor, boolean showLedPreview, boolean withAlpha) {
+ protected ColorSelectDialog(Context context, int initialColor, boolean showMultiColor, boolean showLedPreview, boolean withAlpha) {
super(context);
mContext = context;
mShowLedPreview = showLedPreview;
mWithAlpha = withAlpha;
- mMultiColor = getContext().getResources().getBoolean(R.bool.config_has_multi_color_led);
+ mShowMultiColor = showMultiColor;
+ mMultiColor =
+ (getContext().getResources().getBoolean(R.bool.config_has_multi_color_led) || mShowMultiColor);
init(initialColor);
}
diff --git a/src/org/omnirom/omnilib/preference/ColorSelectPreference.java b/src/org/omnirom/omnilib/preference/ColorSelectPreference.java
index 755ff44..8155e82 100644
--- a/src/org/omnirom/omnilib/preference/ColorSelectPreference.java
+++ b/src/org/omnirom/omnilib/preference/ColorSelectPreference.java
@@ -43,6 +43,7 @@
private Dialog mDialog;
private boolean mShowLedPreview;
+ private boolean mShowMultiColor;
private boolean mWithAlpha;
/**
@@ -85,6 +86,12 @@
mShowLedPreview = (useLedPreview.type == TypedValue.TYPE_INT_BOOLEAN
&& useLedPreview.data != 0);
}
+ final TypedValue useMultiColor = attributes.peekValue(
+ R.styleable.ColorSelectPreference_multiColor);
+ if (useMultiColor != null) {
+ mShowMultiColor = (useMultiColor.type == TypedValue.TYPE_INT_BOOLEAN
+ && useMultiColor.data != 0);
+ }
}
}
@@ -126,7 +133,7 @@
public Dialog getDialog() {
final ColorSelectDialog d = new ColorSelectDialog(getContext(),
- 0xFF000000 | mColorValue, mShowLedPreview, mWithAlpha);
+ 0xFF000000 | mColorValue, mShowMultiColor, mShowLedPreview, mWithAlpha);
d.setButton(AlertDialog.BUTTON_POSITIVE, mResources.getString(R.string.ok),
new DialogInterface.OnClickListener() {
@@ -173,4 +180,8 @@
public void setWithLedPreview(boolean value) {
mShowLedPreview = value;
}
+
+ public void setWithMultiColor(boolean value) {
+ mShowMultiColor = value;
+ }
}