From 4aac81391e9e505724a315585d4de13b55767c0a Mon Sep 17 00:00:00 2001 From: Helium314 Date: Tue, 25 Jun 2024 18:42:26 +0200 Subject: [PATCH] set random (but fixed) default colors for "all colors", see #903 --- .../java/helium314/keyboard/latin/common/Colors.kt | 4 +++- .../keyboard/latin/settings/ColorsSettingsFragment.kt | 11 +++++++---- app/src/main/res/values/strings.xml | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/latin/common/Colors.kt b/app/src/main/java/helium314/keyboard/latin/common/Colors.kt index 4ad873e4f..80ea36b89 100644 --- a/app/src/main/java/helium314/keyboard/latin/common/Colors.kt +++ b/app/src/main/java/helium314/keyboard/latin/common/Colors.kt @@ -552,7 +552,7 @@ class AllColors(private val colorMap: EnumMap, override val them private val stateListMap = EnumMap(ColorType::class.java) private var backgroundSetupDone = false private val colorFilters = hashMapOf() - override fun get(color: ColorType): Int = colorMap[color] ?: Color.GRAY + override fun get(color: ColorType): Int = colorMap[color] ?: color.default() override fun setColor(drawable: Drawable, color: ColorType) { val colorStateList = stateListMap.getOrPut(color) { stateList(brightenOrDarken(get(color), true), get(color)) } @@ -668,3 +668,5 @@ enum class ColorType { TOOL_BAR_KEY_ENABLED_BACKGROUND, MAIN_BACKGROUND, } + +fun ColorType.default() = ColorUtils.setAlphaComponent(name.hashCode() and 0xffffff, 255) diff --git a/app/src/main/java/helium314/keyboard/latin/settings/ColorsSettingsFragment.kt b/app/src/main/java/helium314/keyboard/latin/settings/ColorsSettingsFragment.kt index c39c963ff..6f005d347 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/ColorsSettingsFragment.kt +++ b/app/src/main/java/helium314/keyboard/latin/settings/ColorsSettingsFragment.kt @@ -2,7 +2,6 @@ package helium314.keyboard.latin.settings import android.content.res.Configuration -import android.graphics.Color import android.os.Bundle import android.view.Menu import android.view.MenuInflater @@ -17,12 +16,14 @@ import androidx.core.content.edit import androidx.core.view.MenuProvider import androidx.core.view.forEach import androidx.core.view.isGone +import androidx.core.view.isVisible import androidx.fragment.app.Fragment import com.rarepebble.colorpicker.ColorPickerView import helium314.keyboard.keyboard.KeyboardSwitcher import helium314.keyboard.latin.R import helium314.keyboard.latin.RichInputMethodManager import helium314.keyboard.latin.common.ColorType +import helium314.keyboard.latin.common.default import helium314.keyboard.latin.common.readAllColorsMap import helium314.keyboard.latin.common.writeAllColorsMap import helium314.keyboard.latin.databinding.ColorSettingBinding @@ -107,7 +108,6 @@ open class ColorsSettingsFragment : Fragment(R.layout.color_settings), MenuProvi reloadKeyboard(false) } moreColors = menuItem.itemId - binding.info.isGone = menuItem.itemId != 2 updateColorPrefs() return true } @@ -128,9 +128,11 @@ open class ColorsSettingsFragment : Fragment(R.layout.color_settings), MenuProvi } private fun showAllColors() { + binding.info.isVisible = true val colors = readAllColorsMap(prefs, isNight) ColorType.entries.forEach { type -> - val color = colors[type] ?: Color.GRAY + val color = colors[type] ?: type.default() + val csb = ColorSettingBinding.inflate(layoutInflater, binding.colorSettingsContainer, true) csb.root.tag = type csb.colorSwitch.isGone = true @@ -174,6 +176,7 @@ open class ColorsSettingsFragment : Fragment(R.layout.color_settings), MenuProvi } private fun showMainColors() { + binding.info.isGone = true val prefPrefix = if (isNight) Settings.PREF_THEME_USER_COLOR_NIGHT_PREFIX else Settings.PREF_THEME_USER_COLOR_PREFIX colorPrefsAndNames.forEachIndexed { index, (colorPref, colorPrefName) -> val autoColor = prefs.getBoolean(prefPrefix + colorPref + Settings.PREF_AUTO_USER_COLOR_SUFFIX, true) @@ -276,7 +279,7 @@ open class ColorsSettingsFragment : Fragment(R.layout.color_settings), MenuProvi val colorMap = readAllColorsMap(prefs, isNight) binding.colorSettingsContainer.forEach { view -> val type = view.tag as? ColorType ?: return@forEach - val color = colorMap[type] ?: Color.GRAY + val color = colorMap[type] ?: type.default() view.findViewById(R.id.color_preview)?.setColorFilter(color) } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fe8f3f71c..f76d50917 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -714,7 +714,7 @@ New dictionary: Show all colors - This setting exposes all colors that are used internally. The list of colors may change at any time. There is no default color, and the names will not be translated. + This setting exposes all colors that are used internally. The list of colors may change at any time. The default color is random, and the names will not be translated. Click for preview