Button for opening colour picker now tints properly, including its text and icon

This commit is contained in:
denizk0461
2023-05-16 14:14:38 +02:00
parent a573e2e071
commit 2566952d96
6 changed files with 39 additions and 9 deletions
@@ -20,6 +20,7 @@ import com.denizd.textbasic.databinding.FragmentSettingsNewBinding
import com.denizd.textbasic.db.QuoteStorage import com.denizd.textbasic.db.QuoteStorage
import com.denizd.textbasic.sheet.TextSheet import com.denizd.textbasic.sheet.TextSheet
import com.denizd.textbasic.util.SettingsPreference import com.denizd.textbasic.util.SettingsPreference
import com.denizd.textbasic.util.getConstrast
import com.denizd.textbasic.util.viewBinding import com.denizd.textbasic.util.viewBinding
import com.denizd.textbasic.widget.CanvasText import com.denizd.textbasic.widget.CanvasText
import com.google.android.material.button.MaterialButton import com.google.android.material.button.MaterialButton
@@ -368,17 +369,27 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) {
private fun setTextColour(colour: String) { private fun setTextColour(colour: String) {
binding.textTextColourCode.text = "#$colour" binding.textTextColourCode.text = "#$colour"
val newColour = Color.parseColor("#$colour")
val contrast = newColour.getConstrast()
binding.buttonTextColourDisplay.backgroundTintList = ColorStateList.valueOf( binding.buttonTextColourDisplay.backgroundTintList = ColorStateList.valueOf(
Color.parseColor("#$colour") newColour
) )
binding.buttonTextColourDisplay.setTextColor(contrast)
binding.buttonTextColourDisplay.iconTint = ColorStateList.valueOf(contrast)
} }
private fun setHighlightColour(colour: String) { private fun setHighlightColour(colour: String) {
binding.textHighlightColourCode.text = "#$colour" binding.textHighlightColourCode.text = "#$colour"
binding.buttonHighlightColourDisplay.backgroundTintList = ColorStateList.valueOf( val newColour = Color.parseColor("#$colour")
Color.parseColor("#$colour") val contrast = newColour.getConstrast()
)
binding.buttonHighlightColourDisplay.backgroundTintList = ColorStateList.valueOf(newColour)
binding.buttonHighlightColourDisplay.setTextColor(contrast)
binding.buttonHighlightColourDisplay.iconTint = ColorStateList.valueOf(contrast)
} }
// TODO this should start with the current colour of the attribute that's to be changed! // TODO this should start with the current colour of the attribute that's to be changed!
@@ -390,10 +401,6 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) {
// colour: String, // colour: String,
) { ) {
ColorPickerDialog.Builder(context) ColorPickerDialog.Builder(context)
// .setInitialColor(Color.parseColor("#$colour"))
// .setPreferenceName(tag)
// .setLifecycleOwner(this)
// .build()
.setTitle(getString(title)) .setTitle(getString(title))
.setPositiveButton(getString(R.string.settings_colour_dialog_positive), object : ColorEnvelopeListener { .setPositiveButton(getString(R.string.settings_colour_dialog_positive), object : ColorEnvelopeListener {
override fun onColorSelected(envelope: ColorEnvelope, fromUser: Boolean) { override fun onColorSelected(envelope: ColorEnvelope, fromUser: Boolean) {
@@ -1,6 +1,7 @@
package com.denizd.textbasic.util package com.denizd.textbasic.util
import android.content.res.Resources import android.content.res.Resources
import android.graphics.Color
import android.util.TypedValue import android.util.TypedValue
import android.view.View import android.view.View
import androidx.annotation.AttrRes import androidx.annotation.AttrRes
@@ -54,3 +55,12 @@ fun Resources.Theme.showSnackBar(
anchor?.let { a -> s.setAnchorView(a) } anchor?.let { a -> s.setAnchorView(a) }
s.show() s.show()
} }
fun Int.getConstrast(): Int = Color.parseColor(if ((
Color.red(this) * 0.299 +
Color.green(this) * 0.587 +
Color.blue(this) * 0.114) > 186) {
"#000000"
} else {
"#ffffff"
})
+5
View File
@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#000000"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,3c-4.97,0 -9,4.03 -9,9s4.03,9 9,9c0.83,0 1.5,-0.67 1.5,-1.5 0,-0.39 -0.15,-0.74 -0.39,-1.01 -0.23,-0.26 -0.38,-0.61 -0.38,-0.99 0,-0.83 0.67,-1.5 1.5,-1.5L16,16c2.76,0 5,-2.24 5,-5 0,-4.42 -4.03,-8 -9,-8zM6.5,12c-0.83,0 -1.5,-0.67 -1.5,-1.5S5.67,9 6.5,9 8,9.67 8,10.5 7.33,12 6.5,12zM9.5,8C8.67,8 8,7.33 8,6.5S8.67,5 9.5,5s1.5,0.67 1.5,1.5S10.33,8 9.5,8zM14.5,8c-0.83,0 -1.5,-0.67 -1.5,-1.5S13.67,5 14.5,5s1.5,0.67 1.5,1.5S15.33,8 14.5,8zM17.5,12c-0.83,0 -1.5,-0.67 -1.5,-1.5S16.67,9 17.5,9s1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5z"/>
</vector>
@@ -310,8 +310,10 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
app:icon="@drawable/color_lens"
app:strokeColor="@color/list_button_stroke" app:strokeColor="@color/list_button_stroke"
app:strokeWidth="1dp" app:strokeWidth="1dp"
android:text="@string/settings_text_colour_button_text"
android:layout_marginStart="8dp"/> android:layout_marginStart="8dp"/>
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
@@ -532,8 +534,10 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
app:icon="@drawable/color_lens"
app:strokeColor="@color/list_button_stroke" app:strokeColor="@color/list_button_stroke"
app:strokeWidth="1dp" app:strokeWidth="1dp"
android:text="@string/settings_highlight_colour_button_text"
android:layout_marginStart="8dp"/> android:layout_marginStart="8dp"/>
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
+2
View File
@@ -37,6 +37,7 @@
<string name="settings_text_style_button_bolditalic">Fett &amp; Kursiv</string> <string name="settings_text_style_button_bolditalic">Fett &amp; Kursiv</string>
<string name="settings_text_size_header">Textgröße</string> <string name="settings_text_size_header">Textgröße</string>
<string name="settings_text_colour_header">Textfarbe</string> <string name="settings_text_colour_header">Textfarbe</string>
<string name="settings_text_colour_button_text">Wähle eine Farbe</string>
<string name="settings_text_colour_dialog_title">Wähle eine Textfarbe</string> <string name="settings_text_colour_dialog_title">Wähle eine Textfarbe</string>
<string name="settings_text_transparency_header">Textopazität</string> <string name="settings_text_transparency_header">Textopazität</string>
@@ -48,6 +49,7 @@
<string name="settings_highlight_style_button_shadow">Schatten</string> <string name="settings_highlight_style_button_shadow">Schatten</string>
<string name="settings_highlight_intensity_header">Stärke</string> <string name="settings_highlight_intensity_header">Stärke</string>
<string name="settings_highlight_colour_header">Highlight-Farbe</string> <string name="settings_highlight_colour_header">Highlight-Farbe</string>
<string name="settings_highlight_colour_button_text">Wähle eine Farbe</string>
<string name="settings_highlight_colour_dialog_title">Wähle eine Highlight-Farbe</string> <string name="settings_highlight_colour_dialog_title">Wähle eine Highlight-Farbe</string>
<string name="settings_highlight_transparency_header">Highlight-Opazität</string> <string name="settings_highlight_transparency_header">Highlight-Opazität</string>
+2
View File
@@ -36,6 +36,7 @@
<string name="settings_text_style_button_bolditalic">Bold &amp; Italic</string> <string name="settings_text_style_button_bolditalic">Bold &amp; Italic</string>
<string name="settings_text_size_header">Text size</string> <string name="settings_text_size_header">Text size</string>
<string name="settings_text_colour_header">Text colour</string> <string name="settings_text_colour_header">Text colour</string>
<string name="settings_text_colour_button_text">Pick a colour</string>
<string name="settings_text_colour_dialog_title">Pick a text colour</string> <string name="settings_text_colour_dialog_title">Pick a text colour</string>
<string name="settings_text_transparency_header">Text opacity</string> <string name="settings_text_transparency_header">Text opacity</string>
@@ -47,6 +48,7 @@
<string name="settings_highlight_style_button_shadow">Shadow</string> <string name="settings_highlight_style_button_shadow">Shadow</string>
<string name="settings_highlight_intensity_header">Intensity</string> <string name="settings_highlight_intensity_header">Intensity</string>
<string name="settings_highlight_colour_header">Highlight colour</string> <string name="settings_highlight_colour_header">Highlight colour</string>
<string name="settings_highlight_colour_button_text">Pick a colour</string>
<string name="settings_highlight_colour_dialog_title">Pick a highlight colour</string> <string name="settings_highlight_colour_dialog_title">Pick a highlight colour</string>
<string name="settings_highlight_transparency_header">Opacity</string> <string name="settings_highlight_transparency_header">Opacity</string>