[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;
+    }
 }