diff --git a/res/values/cherish_attrs.xml b/res/values/cherish_attrs.xml
index ad0ca2a..386e60d 100644
--- a/res/values/cherish_attrs.xml
+++ b/res/values/cherish_attrs.xml
@@ -20,4 +20,9 @@
+
+
+
+
+
diff --git a/src/net/margaritov/preference/colorpicker/ColorPickerPreference.java b/src/net/margaritov/preference/colorpicker/ColorPickerPreference.java
index 4bbf057..8152168 100644
--- a/src/net/margaritov/preference/colorpicker/ColorPickerPreference.java
+++ b/src/net/margaritov/preference/colorpicker/ColorPickerPreference.java
@@ -1,6 +1,7 @@
/*
* Copyright (C) 2011 Sergey Margaritov
* Copyright (C) 2013 Slimroms
+ * Copyright (C) 2015 The TeamEos Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,12 +29,11 @@ import android.os.Parcelable;
import android.support.v7.preference.*;
import android.util.AttributeSet;
import android.view.View;
+import android.view.ViewGroup.LayoutParams;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
-import com.android.settings.R;
-
/**
* A preference type that allows a user to choose a time
*
@@ -49,6 +49,12 @@ public class ColorPickerPreference extends Preference implements
private float mDensity = 0;
private boolean mAlphaSliderEnabled = false;
+ // if we return -6, button is not enabled
+ static final String SETTINGS_NS = "http://schemas.android.com/apk/res/com.android.settings";
+ static final int DEF_VALUE_DEFAULT = -6;
+ boolean mUsesDefaultButton = false;
+ int mDefValue = -1;
+
private EditText mEditText;
public ColorPickerPreference(Context context) {
@@ -81,6 +87,11 @@ public class ColorPickerPreference extends Preference implements
setOnPreferenceClickListener(this);
if (attrs != null) {
mAlphaSliderEnabled = attrs.getAttributeBooleanValue(null, "alphaSlider", false);
+ int defVal = attrs.getAttributeIntValue(SETTINGS_NS, "defaultColorValue", DEF_VALUE_DEFAULT);
+ if (defVal != DEF_VALUE_DEFAULT) {
+ mUsesDefaultButton = true;
+ mDefValue = defVal;
+ }
}
}
@@ -92,9 +103,67 @@ public class ColorPickerPreference extends Preference implements
widgetFrameView = ((LinearLayout) view
.findViewById(android.R.id.widget_frame));
+ if (mUsesDefaultButton) {
+ setDefaultButton();
+ }
+
setPreviewColor();
}
+ /**
+ * Restore a default value, not necessarily a color
+ * For example: Set default value to -1 to remove a color filter
+ *
+ * @author Randall Rushing aka Bigrushdog
+ */
+ private void setDefaultButton() {
+ if (mView == null)
+ return;
+
+ LinearLayout widgetFrameView = ((LinearLayout) mView
+ .findViewById(android.R.id.widget_frame));
+ if (widgetFrameView == null)
+ return;
+
+ ImageView defView = new ImageView(getContext());
+ widgetFrameView.setOrientation(LinearLayout.HORIZONTAL);
+
+ // remove already created default button
+ int count = widgetFrameView.getChildCount();
+ if (count > 0) {
+ View oldView = widgetFrameView.findViewWithTag("default");
+ View spacer = widgetFrameView.findViewWithTag("spacer");
+ if (oldView != null) {
+ widgetFrameView.removeView(oldView);
+ }
+ if (spacer != null) {
+ widgetFrameView.removeView(spacer);
+ }
+ }
+
+ widgetFrameView.addView(defView);
+ widgetFrameView.setMinimumWidth(0);
+ defView.setBackground(getContext().getDrawable(android.R.drawable.ic_menu_revert));
+ defView.setTag("default");
+ defView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ try {
+ getOnPreferenceChangeListener().onPreferenceChange(ColorPickerPreference.this,
+ Integer.valueOf(mDefValue));
+ } catch (NullPointerException e) {
+ }
+ }
+ });
+
+ // sorcery for a linear layout ugh
+ View spacer = new View(getContext());
+ spacer.setTag("spacer");
+ spacer.setLayoutParams(new LinearLayout.LayoutParams((int) (mDensity * 16),
+ LayoutParams.MATCH_PARENT));
+ widgetFrameView.addView(spacer);
+ }
+
private void setPreviewColor() {
if (mView == null)
return;
@@ -115,12 +184,22 @@ public class ColorPickerPreference extends Preference implements
// remove already create preview image
int count = widgetFrameView.getChildCount();
if (count > 0) {
- widgetFrameView.removeViews(0, count);
+ View preview = widgetFrameView.findViewWithTag("preview");
+ if (preview != null) {
+ widgetFrameView.removeView(preview);
+ }
}
widgetFrameView.addView(iView);
widgetFrameView.setMinimumWidth(0);
iView.setBackgroundDrawable(new AlphaPatternDrawable((int) (5 * mDensity)));
iView.setImageBitmap(getPreviewBitmap());
+ iView.setTag("preview");
+ iView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ showDialog(null);
+ }
+ });
}
private Bitmap getPreviewBitmap() {
@@ -161,7 +240,7 @@ public class ColorPickerPreference extends Preference implements
}
public boolean onPreferenceClick(Preference preference) {
- showDialog(null);
+ //showDialog(null);
return false;
}