diff --git a/app/src/main/java/com/denizd/textbasic/fragment/SettingsNewFragment.kt b/app/src/main/java/com/denizd/textbasic/fragment/SettingsNewFragment.kt index f61b548..4cdf346 100644 --- a/app/src/main/java/com/denizd/textbasic/fragment/SettingsNewFragment.kt +++ b/app/src/main/java/com/denizd/textbasic/fragment/SettingsNewFragment.kt @@ -20,6 +20,7 @@ import com.denizd.textbasic.databinding.FragmentSettingsNewBinding import com.denizd.textbasic.db.QuoteStorage import com.denizd.textbasic.sheet.TextSheet import com.denizd.textbasic.util.SettingsPreference +import com.denizd.textbasic.util.getConstrast import com.denizd.textbasic.util.viewBinding import com.denizd.textbasic.widget.CanvasText import com.google.android.material.button.MaterialButton @@ -368,17 +369,27 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) { private fun setTextColour(colour: String) { binding.textTextColourCode.text = "#$colour" + val newColour = Color.parseColor("#$colour") + val contrast = newColour.getConstrast() + binding.buttonTextColourDisplay.backgroundTintList = ColorStateList.valueOf( - Color.parseColor("#$colour") + newColour ) + + binding.buttonTextColourDisplay.setTextColor(contrast) + binding.buttonTextColourDisplay.iconTint = ColorStateList.valueOf(contrast) } private fun setHighlightColour(colour: String) { binding.textHighlightColourCode.text = "#$colour" - binding.buttonHighlightColourDisplay.backgroundTintList = ColorStateList.valueOf( - Color.parseColor("#$colour") - ) + val newColour = 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! @@ -390,10 +401,6 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) { // colour: String, ) { ColorPickerDialog.Builder(context) -// .setInitialColor(Color.parseColor("#$colour")) -// .setPreferenceName(tag) -// .setLifecycleOwner(this) -// .build() .setTitle(getString(title)) .setPositiveButton(getString(R.string.settings_colour_dialog_positive), object : ColorEnvelopeListener { override fun onColorSelected(envelope: ColorEnvelope, fromUser: Boolean) { diff --git a/app/src/main/java/com/denizd/textbasic/util/Extensions.kt b/app/src/main/java/com/denizd/textbasic/util/Extensions.kt index fab2a07..fc0d76d 100644 --- a/app/src/main/java/com/denizd/textbasic/util/Extensions.kt +++ b/app/src/main/java/com/denizd/textbasic/util/Extensions.kt @@ -1,6 +1,7 @@ package com.denizd.textbasic.util import android.content.res.Resources +import android.graphics.Color import android.util.TypedValue import android.view.View import androidx.annotation.AttrRes @@ -53,4 +54,13 @@ fun Resources.Theme.showSnackBar( // Set anchor view, if one has been passed anchor?.let { a -> s.setAnchorView(a) } s.show() -} \ No newline at end of file +} + +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" +}) \ No newline at end of file diff --git a/app/src/main/res/drawable/color_lens.xml b/app/src/main/res/drawable/color_lens.xml new file mode 100644 index 0000000..c3d2c7b --- /dev/null +++ b/app/src/main/res/drawable/color_lens.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/fragment_settings_new.xml b/app/src/main/res/layout/fragment_settings_new.xml index a0ed547..4ffe159 100644 --- a/app/src/main/res/layout/fragment_settings_new.xml +++ b/app/src/main/res/layout/fragment_settings_new.xml @@ -310,8 +310,10 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" + app:icon="@drawable/color_lens" app:strokeColor="@color/list_button_stroke" app:strokeWidth="1dp" + android:text="@string/settings_text_colour_button_text" android:layout_marginStart="8dp"/> @@ -532,8 +534,10 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" + app:icon="@drawable/color_lens" app:strokeColor="@color/list_button_stroke" app:strokeWidth="1dp" + android:text="@string/settings_highlight_colour_button_text" android:layout_marginStart="8dp"/> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d2cc00c..518253a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -37,6 +37,7 @@ Fett & Kursiv Textgröße Textfarbe + Wähle eine Farbe Wähle eine Textfarbe Textopazität @@ -48,6 +49,7 @@ Schatten Stärke Highlight-Farbe + Wähle eine Farbe Wähle eine Highlight-Farbe Highlight-Opazität diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d449333..35a761f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -36,6 +36,7 @@ Bold & Italic Text size Text colour + Pick a colour Pick a text colour Text opacity @@ -47,6 +48,7 @@ Shadow Intensity Highlight colour + Pick a colour Pick a highlight colour Opacity