diff options
author | desperateCoder <echotodevnull@gmail.com> | 2020-02-10 17:30:39 +0300 |
---|---|---|
committer | desperateCoder <echotodevnull@gmail.com> | 2020-02-10 17:30:39 +0300 |
commit | bf0409c080060c7ccb27da6d736e32f9bf591828 (patch) | |
tree | c2370b54a96db6d97ead8a910808234362fb228a | |
parent | 386895a06039e0cb9ca233ce8896415df862d38a (diff) |
merge PR #247
-rw-r--r-- | app/build.gradle | 6 | ||||
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/colorchooser/ColorChooser.java | 47 | ||||
-rw-r--r-- | app/src/main/res/drawable/circle_alpha_colorize_36dp.xml | 18 | ||||
-rw-r--r-- | app/src/main/res/drawable/ic_colorize_24dp.xml | 11 | ||||
-rw-r--r-- | app/src/main/res/layout/widget_color_chooser.xml | 22 | ||||
-rw-r--r-- | app/src/main/res/values/colors.xml | 4 |
6 files changed, 106 insertions, 2 deletions
diff --git a/app/build.gradle b/app/build.gradle index a37e27a8c..1d0c05fdd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,7 +4,7 @@ android { compileSdkVersion 29 defaultConfig { applicationId "it.niedermann.nextcloud.deck" - minSdkVersion 14 + minSdkVersion 15 targetSdkVersion 29 versionCode 19 versionName "0.0.19" @@ -15,6 +15,7 @@ android { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] } } + multiDexEnabled true } buildTypes { release { @@ -69,6 +70,9 @@ dependencies { // Tab-Layout-Helper implementation 'com.h6ah4i.android.tablayouthelper:tablayouthelper:1.0.0' + // Custom Color Picker + implementation 'com.github.skydoves:colorpickerpreference:2.0.0' + // ------------------------- // --- Backend-Libraries --- // ------------------------- diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/colorchooser/ColorChooser.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/colorchooser/ColorChooser.java index bd966681d..b83b70ed9 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/colorchooser/ColorChooser.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/helper/colorchooser/ColorChooser.java @@ -4,12 +4,17 @@ import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.LayoutInflater; +import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import androidx.annotation.Nullable; import com.google.android.flexbox.FlexboxLayout; +import com.skydoves.colorpickerview.ColorEnvelope; +import com.skydoves.colorpickerview.ColorPickerView; +import com.skydoves.colorpickerview.listeners.ColorEnvelopeListener; +import com.skydoves.colorpickerview.sliders.BrightnessSlideBar; import butterknife.BindView; import butterknife.ButterKnife; @@ -28,6 +33,10 @@ public class ColorChooser extends LinearLayout { private String previouslySelectedColor; private ImageView previouslySelectedImageView; + private Boolean hasCustomColor = false; + private ColorPickerView customColorPicker; + private BrightnessSlideBar brightnessSlideBar; + private ImageView customColorChooser; public ColorChooser(Context context, @Nullable AttributeSet attrs) { super(context, attrs); @@ -43,6 +52,22 @@ public class ColorChooser extends LinearLayout { inflater.inflate(R.layout.widget_color_chooser, this, true); ButterKnife.bind(this); initDefaultColors(); + + customColorPicker = (ColorPickerView) findViewById(R.id.customColorPicker); + brightnessSlideBar = findViewById(R.id.brightnessSlide); + + customColorPicker.attachBrightnessSlider(brightnessSlideBar); + + customColorPicker.setColorListener(new ColorEnvelopeListener() { + @Override + public void onColorSelected(ColorEnvelope envelope, boolean fromUser) { + String customColor = "#" + envelope.getHexCode().substring(2); + selectedColor = customColor; + previouslySelectedColor = customColor; + //previouslySelectedColor = customColor; + customColorChooser.setImageDrawable(ViewUtil.getTintedImageView(context, R.drawable.circle_alpha_colorize_36dp, selectedColor)); + } + }); } private void initDefaultColors() { @@ -62,14 +87,36 @@ public class ColorChooser extends LinearLayout { } } + private void initCustomColorChooser() { + // initializes a final image icon for the custom color chooser and, if already set, + // will set the icon color to the custom color + customColorChooser = new ImageView(getContext()); + if (!hasCustomColor) { + customColorChooser.setImageDrawable(ViewUtil.getTintedImageView(this.context, R.drawable.circle_alpha_colorize_36dp, R.color.board_default_custom_color)); + } else { + customColorChooser.setImageDrawable(ViewUtil.getTintedImageView(this.context, R.drawable.circle_alpha_colorize_36dp, this.selectedColor)); + } + colorPicker.addView(customColorChooser); + customColorChooser.setOnClickListener((View imageView) -> { + // when clicked sets the custom color wheel to be visible + customColorPicker.setVisibility(View.VISIBLE); + brightnessSlideBar.setVisibility(View.VISIBLE); + }); + } + public void selectColor(String newColor) { selectedColor = newColor; for (int i = 0; i < colors.length; i++) { if (colors[i].equals(newColor)) { + initCustomColorChooser(); // adds custom color picker, with default color colorPicker.getChildAt(i).performClick(); return; } } + // if the board color is not found to be a default color, then a custom color is assumed and + // the custom color chooser is setup for this + hasCustomColor = true; + initCustomColorChooser(); // adds custom color picker, with custom color } public String getSelectedColor() { diff --git a/app/src/main/res/drawable/circle_alpha_colorize_36dp.xml b/app/src/main/res/drawable/circle_alpha_colorize_36dp.xml new file mode 100644 index 000000000..2acba500c --- /dev/null +++ b/app/src/main/res/drawable/circle_alpha_colorize_36dp.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape + android:shape="oval"> + <solid android:color="#55ffffff" /> + <size + android:width="36dp" + android:height="36dp"/> + </shape> + </item> + <item + android:drawable="@drawable/ic_colorize_24dp" + android:top="4dp" + android:bottom="4dp" + android:right="4dp" + android:left="4dp" /> +</layer-list>
\ No newline at end of file diff --git a/app/src/main/res/drawable/ic_colorize_24dp.xml b/app/src/main/res/drawable/ic_colorize_24dp.xml new file mode 100644 index 000000000..15f20c075 --- /dev/null +++ b/app/src/main/res/drawable/ic_colorize_24dp.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:tint="#FFFFFF" + android:viewportWidth="24.0" + android:viewportHeight="24.0" + android:width="24dp" + android:height="24dp"> + <path + android:pathData="M20.71 5.63l-2.34 -2.34c-0.39 -0.39 -1.02 -0.39 -1.41 0l-3.12 3.12 -1.93 -1.91 -1.41 1.41 1.42 1.42L3 16.25V21h4.75l8.92 -8.92 1.42 1.42 1.41 -1.41 -1.92 -1.92 3.12 -3.12c0.4 -0.4 0.4 -1.03 0.01 -1.42zM6.92 19L5 17.08l8.06 -8.06 1.92 1.92L6.92 19z" + android:fillColor="#FF000000" /> +</vector>
\ No newline at end of file diff --git a/app/src/main/res/layout/widget_color_chooser.xml b/app/src/main/res/layout/widget_color_chooser.xml index 26b28d737..86edea8ec 100644 --- a/app/src/main/res/layout/widget_color_chooser.xml +++ b/app/src/main/res/layout/widget_color_chooser.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> @@ -12,4 +13,25 @@ app:alignItems="stretch" app:flexWrap="wrap" app:justifyContent="space_between" /> + + <com.skydoves.colorpickerview.ColorPickerView + android:id="@+id/customColorPicker" + android:layout_width="200dp" + android:layout_height="200dp" + android:layout_gravity="center" + android:layout_marginTop="10dp" + android:visibility="gone" + app:palette="@drawable/palette" + app:selector="@drawable/wheel" /> + + <com.skydoves.colorpickerview.sliders.BrightnessSlideBar + android:id="@+id/brightnessSlide" + android:layout_width="200dp" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginTop="10dp" + android:visibility="gone" + app:borderColor_BrightnessSlider="@android:color/darker_gray" + app:borderSize_BrightnessSlider="5" + app:selector_BrightnessSlider="@drawable/wheel" /> </LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 4d9a31b0e..b24e3d8cd 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -17,7 +17,9 @@ <color name="due_overdue">#d40000</color> <color name="overdue_text_color">#FFFFFF</color> + <!-- board color picker colors --> <color name="board_default_color">#31CC7C</color> + <color name="board_default_custom_color">#616161</color> <string-array name="board_default_colors"> <item>#31CC7C</item> <item>#317CCC</item> @@ -26,6 +28,6 @@ <item>#7C31CC</item> <item>#CC317C</item> <item>#3A3B3D</item> - <item>#CACBCD</item> + <!-- <item>#CACBCD</item> --> </string-array> </resources> |