From efd9ea2e2502abda3a6c9ecd973e7636b83efd4c Mon Sep 17 00:00:00 2001 From: Hamad alghanim Date: Sun, 11 Jun 2017 19:49:42 +0300 Subject: [PATCH] added color picker in preference --- app/build.gradle | 1 + .../ui/widgets/ColorPickerPreference.java | 84 +++++++++++++++++++ .../main/res/xml/customization_settings.xml | 2 +- 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java diff --git a/app/build.gradle b/app/build.gradle index dabffe9d..7a0dc288 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -150,6 +150,7 @@ dependencies { implementation 'org.jsoup:jsoup:1.10.2' implementation 'com.jakewharton:kotterknife:0.1.0-SNAPSHOT' implementation "com.evernote:android-state:${state_version}" + implementation "petrov.kristiyan:colorpicker-library:1.1.4" compileOnly "org.projectlombok:lombok:${lombokVersion}" kapt "io.requery:requery-processor:${requery}" kapt "org.projectlombok:lombok:${lombokVersion}" diff --git a/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java b/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java new file mode 100644 index 00000000..d5de5912 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java @@ -0,0 +1,84 @@ +package com.fastaccess.ui.widgets; + +import android.content.Context; +import android.graphics.Color; +import android.support.v7.preference.Preference; +import android.util.AttributeSet; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.Toast; + +import com.fastaccess.R; +import com.fastaccess.helper.PrefGetter; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; + +import petrov.kristiyan.colorpicker.ColorPicker; + +/** + * Created by Hamad on 6/11/17. + */ + +public class ColorPickerPreference extends Preference implements Preference.OnPreferenceClickListener, ColorPicker.OnChooseColorListener { + + private int mValue = Color.BLACK; + private ColorPicker colorPicker; + + public ColorPickerPreference(Context context) { + super(context); + init(context, null); + } + + public ColorPickerPreference(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs); + } + + public ColorPickerPreference(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(context, attrs); + } + + private void init(Context context, AttributeSet attrs) { + setOnPreferenceClickListener(this); + } + + @Override + protected void onClick() { + super.onClick(); + + /* + colors should no be setup like this must be a better way to retrive them from the theme + or from preferences + also relaying on constant integers worries me + */ + String[] colors = {"#F44336", "#E91E63", "#9C27B0", "#673AB7", "#3F51B5", "#2196F3", "#03A9F4", "#00BCD4", "#009688", "#4CAF50", "#8BC34A", "#CDDC39", "#FFEB3B", "#FFC107", "#FF9800","#FF5722"}; + colorPicker = new ColorPicker(getContext()).setRoundColorButton(true).setColors(new ArrayList<>(Arrays.asList(colors))); + colorPicker.setDefaultColorButton(Color.parseColor(colors[PrefGetter.getThemeColor(getContext()) - 1])); + colorPicker.setOnChooseColorListener(this); + colorPicker.show(); + } + + @Override + public boolean onPreferenceClick(Preference preference) { + return false; + } + + @Override + public void onChooseColor(int position, int color) { + // put code + //getOnPreferenceChangeListener().onPreferenceChange(ColorPickerPreference.this, color); + Toast.makeText(getContext(), "" + position, Toast.LENGTH_SHORT).show(); + persistString(getContext().getResources().getStringArray(R.array.theme_colors)[position]); + getOnPreferenceChangeListener().onPreferenceChange(this, getContext().getResources().getStringArray(R.array.theme_colors)[position]); + + } + + @Override + public void onCancel() { + + } +} diff --git a/app/src/main/res/xml/customization_settings.xml b/app/src/main/res/xml/customization_settings.xml index 1161f048..5d66188b 100644 --- a/app/src/main/res/xml/customization_settings.xml +++ b/app/src/main/res/xml/customization_settings.xml @@ -7,7 +7,7 @@ android:key="enable_ads" android:title="@string/enable_ads"/> -