From c7ea083176ec9e87cf2a0c8f598823335f282da2 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sun, 31 Dec 2023 17:05:57 +0100 Subject: [PATCH] add separate color for suggestion strip, fixes #285 --- .../inputmethod/keyboard/KeyboardTheme.java | 7 +++++ .../clipboard/ClipboardHistoryView.kt | 4 +-- .../inputmethod/latin/common/Colors.kt | 29 ++++++++----------- .../latin/settings/ColorsSettingsFragment.kt | 7 +++-- .../inputmethod/latin/settings/Settings.java | 3 ++ app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 30 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardTheme.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardTheme.java index 86602fc04..4cb5b5e49 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardTheme.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardTheme.java @@ -165,6 +165,7 @@ public final class KeyboardTheme implements Comparable { Settings.readUserColor(prefs, context, Settings.PREF_COLOR_SPACEBAR_SUFFIX, false), Settings.readUserColor(prefs, context, Settings.PREF_COLOR_TEXT_SUFFIX, false), Settings.readUserColor(prefs, context, Settings.PREF_COLOR_HINT_TEXT_SUFFIX, false), + Settings.readUserColor(prefs, context, Settings.PREF_COLOR_SUGGESTION_TEXT_SUFFIX, false), Settings.readUserColor(prefs, context, Settings.PREF_COLOR_SPACEBAR_TEXT_SUFFIX, false) ); case THEME_USER_NIGHT: @@ -179,6 +180,7 @@ public final class KeyboardTheme implements Comparable { Settings.readUserColor(prefs, context, Settings.PREF_COLOR_SPACEBAR_SUFFIX, true), Settings.readUserColor(prefs, context, Settings.PREF_COLOR_TEXT_SUFFIX, true), Settings.readUserColor(prefs, context, Settings.PREF_COLOR_HINT_TEXT_SUFFIX, true), + Settings.readUserColor(prefs, context, Settings.PREF_COLOR_SUGGESTION_TEXT_SUFFIX, true), Settings.readUserColor(prefs, context, Settings.PREF_COLOR_SPACEBAR_TEXT_SUFFIX, true) ); case THEME_DARK: @@ -194,6 +196,7 @@ public final class KeyboardTheme implements Comparable { Color.parseColor("#364248"), ContextCompat.getColor(context, R.color.key_text_color_lxx_dark), ContextCompat.getColor(context, R.color.key_hint_letter_color_lxx_dark), + ContextCompat.getColor(context, R.color.key_text_color_lxx_dark), ContextCompat.getColor(context, R.color.spacebar_letter_color_lxx_dark) ); case THEME_HOLO_WHITE: @@ -209,6 +212,7 @@ public final class KeyboardTheme implements Comparable { Color.parseColor("#FFFFFF"), Color.parseColor("#FFFFFF"), Color.parseColor("#282828"), + Color.parseColor("#FFFFFF"), Color.parseColor("#80FFFFFF") ); case THEME_DARKER: @@ -223,6 +227,7 @@ public final class KeyboardTheme implements Comparable { ContextCompat.getColor(context, R.color.key_background_normal_lxx_dark_border), ContextCompat.getColor(context, R.color.key_text_color_lxx_dark), ContextCompat.getColor(context, R.color.key_hint_letter_color_lxx_dark), + ContextCompat.getColor(context, R.color.key_text_color_lxx_dark), ContextCompat.getColor(context, R.color.spacebar_letter_color_lxx_dark) ); case THEME_BLACK: @@ -237,6 +242,7 @@ public final class KeyboardTheme implements Comparable { ContextCompat.getColor(context, R.color.background_amoled_dark), ContextCompat.getColor(context, R.color.key_text_color_lxx_dark), ContextCompat.getColor(context, R.color.key_hint_letter_color_lxx_dark), + ContextCompat.getColor(context, R.color.key_text_color_lxx_dark), ContextCompat.getColor(context, R.color.spacebar_letter_color_lxx_dark) ); case THEME_DYNAMIC: @@ -256,6 +262,7 @@ public final class KeyboardTheme implements Comparable { ContextCompat.getColor(context, R.color.key_background_normal_lxx_light_border), ContextCompat.getColor(context, R.color.key_text_color_lxx_light), ContextCompat.getColor(context, R.color.key_hint_letter_color_lxx_light), + ContextCompat.getColor(context, R.color.key_text_color_lxx_light), ContextCompat.getColor(context, R.color.spacebar_letter_color_lxx_light) ); } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryView.kt b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryView.kt index 7a5cd2802..f94465d37 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryView.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryView.kt @@ -115,8 +115,8 @@ class ClipboardHistoryView @JvmOverloads constructor( clipboardStrip.addView(it) it.setOnTouchListener(this@ClipboardHistoryView) it.setOnClickListener(this@ClipboardHistoryView) - colors.setColor(it, ColorType.CLEAR_CLIPBOARD_HISTORY_KEY) - colors.setBackground(it, ColorType.CLEAR_CLIPBOARD_HISTORY_KEY) + colors.setColor(it, ColorType.TOOL_BAR_KEY) + colors.setBackground(it, ColorType.TOOL_BAR_KEY) } colors.setBackground(clipboardStrip, ColorType.BACKGROUND) } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Colors.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Colors.kt index 7a3417260..070494d41 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Colors.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Colors.kt @@ -247,7 +247,7 @@ class DynamicColors(context: Context, override val themeStyle: String, override CHIP, EMOJI_CATEGORY_BACKGROUND, GESTURE_PREVIEW, MORE_KEYS_BACKGROUND, MORE_SUGGESTIONS_BACKGROUND, KEY_PREVIEW -> adjustedBackground TOOL_BAR_EXPAND_KEY_BACKGROUND -> if (!isNight) accent else doubleAdjustedBackground GESTURE_TRAIL -> gesture - KEY_TEXT, SUGGESTION_AUTO_CORRECT, REMOVE_SUGGESTION_ICON, CLEAR_CLIPBOARD_HISTORY_KEY, + KEY_TEXT, SUGGESTION_AUTO_CORRECT, REMOVE_SUGGESTION_ICON, KEY_ICON, ONE_HANDED_MODE_BUTTON, EMOJI_CATEGORY, TOOL_BAR_KEY, FUNCTIONAL_KEY_TEXT -> keyText KEY_HINT_TEXT -> keyHintText SPACE_BAR_TEXT -> spaceBarText @@ -290,7 +290,7 @@ class DynamicColors(context: Context, override val themeStyle: String, override private fun getColorFilter(color: ColorType): ColorFilter? = when (color) { EMOJI_CATEGORY_SELECTED, CLIPBOARD_PIN, SHIFT_KEY_ICON -> accentColorFilter - REMOVE_SUGGESTION_ICON, CLEAR_CLIPBOARD_HISTORY_KEY, EMOJI_CATEGORY, KEY_TEXT, + REMOVE_SUGGESTION_ICON, EMOJI_CATEGORY, KEY_TEXT, KEY_ICON, ONE_HANDED_MODE_BUTTON, TOOL_BAR_KEY, TOOL_BAR_EXPAND_KEY -> keyTextFilter KEY_PREVIEW -> adjustedBackgroundFilter ACTION_KEY_ICON -> actionKeyIconColorFilter @@ -323,7 +323,6 @@ class DynamicColors(context: Context, override val themeStyle: String, override if (view.background == null) view.setBackgroundColor(Color.WHITE) // set white to make the color filters word when (color) { - CLEAR_CLIPBOARD_HISTORY_KEY -> setColor(view.background, SUGGESTION_BACKGROUND) EMOJI_CATEGORY_BACKGROUND -> view.setBackgroundColor(get(color)) KEY_PREVIEW -> view.background.colorFilter = adjustedBackgroundFilter FUNCTIONAL_KEY_BACKGROUND, KEY_BACKGROUND, BACKGROUND, SPACE_BAR_BACKGROUND, SUGGESTION_BACKGROUND -> setColor(view.background, color) @@ -353,6 +352,7 @@ class DefaultColors ( private val spaceBar: Int, private val keyText: Int, private val keyHintText: Int, + private val suggestionText: Int, private val spaceBarText: Int ) : Colors { private val navBar: Int @@ -361,13 +361,13 @@ class DefaultColors ( private val adjustedBackground: Int /** further brightened or darkened variant of [adjustedBackground] */ private val doubleAdjustedBackground: Int - /** brightened or darkened variant of [keyText] */ - private val adjustedKeyText: Int + private val adjustedSuggestionText = brightenOrDarken(suggestionText, true) - private val backgroundFilter: ColorFilter + private val backgroundFilter = colorFilter(background) private val adjustedBackgroundFilter: ColorFilter private val keyTextFilter: ColorFilter - private val accentColorFilter: ColorFilter = colorFilter(accent) + private val suggestionTextFilter = colorFilter(suggestionText) + private val accentColorFilter = colorFilter(accent) /** color filter for the white action key icons in material theme, switches to gray if necessary for contrast */ private val actionKeyIconColorFilter: ColorFilter? @@ -395,9 +395,6 @@ class DefaultColors ( keyboardBackground = null } - backgroundFilter = colorFilter(background) - adjustedKeyText = brightenOrDarken(keyText, true) - if (isDarkColor(background)) { adjustedBackground = brighten(background) doubleAdjustedBackground = brighten(adjustedBackground) @@ -445,8 +442,7 @@ class DefaultColors ( CHIP, EMOJI_CATEGORY_BACKGROUND, GESTURE_PREVIEW, MORE_KEYS_BACKGROUND, MORE_SUGGESTIONS_BACKGROUND, KEY_PREVIEW -> adjustedBackground TOOL_BAR_EXPAND_KEY_BACKGROUND -> doubleAdjustedBackground GESTURE_TRAIL -> gesture - KEY_TEXT, SUGGESTION_AUTO_CORRECT, REMOVE_SUGGESTION_ICON, CLEAR_CLIPBOARD_HISTORY_KEY, FUNCTIONAL_KEY_TEXT, - KEY_ICON, ONE_HANDED_MODE_BUTTON, EMOJI_CATEGORY, TOOL_BAR_KEY, TOOL_BAR_EXPAND_KEY -> keyText + KEY_TEXT, REMOVE_SUGGESTION_ICON, FUNCTIONAL_KEY_TEXT, KEY_ICON -> keyText KEY_HINT_TEXT -> keyHintText SPACE_BAR_TEXT -> spaceBarText FUNCTIONAL_KEY_BACKGROUND -> functionalKey @@ -456,7 +452,8 @@ class DefaultColors ( ACTION_KEY_MORE_KEYS_BACKGROUND -> if (themeStyle == STYLE_HOLO) adjustedBackground else accent SUGGESTION_BACKGROUND -> if (!hasKeyBorders && themeStyle == STYLE_MATERIAL) adjustedBackground else background NAVIGATION_BAR -> navBar - MORE_SUGGESTIONS_HINT, SUGGESTED_WORD, SUGGESTION_TYPED_WORD, SUGGESTION_VALID_WORD -> adjustedKeyText + SUGGESTION_AUTO_CORRECT, EMOJI_CATEGORY, TOOL_BAR_KEY, TOOL_BAR_EXPAND_KEY, ONE_HANDED_MODE_BUTTON -> suggestionText + MORE_SUGGESTIONS_HINT, SUGGESTED_WORD, SUGGESTION_TYPED_WORD, SUGGESTION_VALID_WORD -> adjustedSuggestionText ACTION_KEY_ICON -> Color.WHITE } @@ -490,7 +487,6 @@ class DefaultColors ( if (view.background == null) view.setBackgroundColor(Color.WHITE) // set white to make the color filters word when (color) { - CLEAR_CLIPBOARD_HISTORY_KEY -> setColor(view.background, SUGGESTION_BACKGROUND) EMOJI_CATEGORY_BACKGROUND -> view.setBackgroundColor(get(color)) KEY_PREVIEW, MORE_KEYS_BACKGROUND -> view.background.colorFilter = adjustedBackgroundFilter FUNCTIONAL_KEY_BACKGROUND, KEY_BACKGROUND, BACKGROUND, SPACE_BAR_BACKGROUND, SUGGESTION_BACKGROUND -> setColor(view.background, color) @@ -506,8 +502,8 @@ class DefaultColors ( private fun getColorFilter(color: ColorType): ColorFilter? = when (color) { EMOJI_CATEGORY_SELECTED, CLIPBOARD_PIN, SHIFT_KEY_ICON -> accentColorFilter - REMOVE_SUGGESTION_ICON, CLEAR_CLIPBOARD_HISTORY_KEY, EMOJI_CATEGORY, KEY_TEXT, KEY_ICON, - ONE_HANDED_MODE_BUTTON, TOOL_BAR_KEY, TOOL_BAR_EXPAND_KEY -> keyTextFilter + KEY_TEXT, KEY_ICON -> keyTextFilter + REMOVE_SUGGESTION_ICON, EMOJI_CATEGORY, ONE_HANDED_MODE_BUTTON, TOOL_BAR_KEY, TOOL_BAR_EXPAND_KEY -> suggestionTextFilter KEY_PREVIEW -> adjustedBackgroundFilter ACTION_KEY_ICON -> actionKeyIconColorFilter else -> colorFilter(get(color)) // create color filter (not great for performance, so the frequently used filters should be stored) @@ -552,7 +548,6 @@ enum class ColorType { ACTION_KEY_MORE_KEYS_BACKGROUND, BACKGROUND, CHIP, - CLEAR_CLIPBOARD_HISTORY_KEY, CLIPBOARD_PIN, CLIPBOARD_BACKGROUND, EMOJI_BACKGROUND, diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/ColorsSettingsFragment.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/ColorsSettingsFragment.kt index ae0eb1939..067440421 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/ColorsSettingsFragment.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/ColorsSettingsFragment.kt @@ -44,14 +44,14 @@ open class ColorsSettingsFragment : Fragment(R.layout.color_settings), MenuProvi Settings.PREF_COLOR_SPACEBAR_SUFFIX, Settings.PREF_COLOR_TEXT_SUFFIX, Settings.PREF_COLOR_HINT_TEXT_SUFFIX, + Settings.PREF_COLOR_SUGGESTION_TEXT_SUFFIX, Settings.PREF_COLOR_SPACEBAR_TEXT_SUFFIX, Settings.PREF_COLOR_ACCENT_SUFFIX, Settings.PREF_COLOR_GESTURE_SUFFIX, ) private val colorPrefsToHideInitially by lazy { - listOf(Settings.PREF_COLOR_SPACEBAR_TEXT_SUFFIX, Settings.PREF_COLOR_GESTURE_SUFFIX) + - if (prefs.getBoolean(Settings.PREF_THEME_KEY_BORDERS, false)) - listOf(Settings.PREF_COLOR_SPACEBAR_SUFFIX) + listOf(Settings.PREF_COLOR_SUGGESTION_TEXT_SUFFIX,Settings.PREF_COLOR_SPACEBAR_TEXT_SUFFIX, Settings.PREF_COLOR_GESTURE_SUFFIX) + + if (prefs.getBoolean(Settings.PREF_THEME_KEY_BORDERS, false)) listOf(Settings.PREF_COLOR_SPACEBAR_SUFFIX) else listOf(Settings.PREF_COLOR_KEYS_SUFFIX, Settings.PREF_COLOR_FUNCTIONAL_KEYS_SUFFIX) } @@ -112,6 +112,7 @@ open class ColorsSettingsFragment : Fragment(R.layout.color_settings), MenuProvi R.string.select_color_spacebar_background, R.string.select_color_key, R.string.select_color_key_hint, + R.string.select_color_suggestion, R.string.select_color_spacebar_text, R.string.select_color_accent, R.string.select_color_gesture, diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java index 2f5e31457..85f1668cb 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java @@ -70,6 +70,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_COLOR_ACCENT_SUFFIX = "accent"; public static final String PREF_COLOR_GESTURE_SUFFIX = "gesture"; public static final String PREF_COLOR_TEXT_SUFFIX = "text"; + public static final String PREF_COLOR_SUGGESTION_TEXT_SUFFIX = "suggestion_text"; public static final String PREF_COLOR_HINT_TEXT_SUFFIX = "hint_text"; public static final String PREF_COLOR_BACKGROUND_SUFFIX = "background"; public static final String PREF_AUTO_USER_COLOR_SUFFIX = "_auto"; @@ -558,6 +559,8 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang return ContextCompat.getColor(getDayNightContext(context, isNight), R.color.accent); case PREF_COLOR_GESTURE_SUFFIX: return readUserColor(prefs, context, PREF_COLOR_ACCENT_SUFFIX, isNight); + case PREF_COLOR_SUGGESTION_TEXT_SUFFIX: + return readUserColor(prefs, context, PREF_COLOR_TEXT_SUFFIX, isNight); case PREF_COLOR_TEXT_SUFFIX: // base it on background color, and not key, because it's also used for suggestions final int background = readUserColor(prefs, context, PREF_COLOR_BACKGROUND_SUFFIX, isNight); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5ec25f94c..979fa2a85 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -680,6 +680,8 @@ New dictionary: Key text Key hint text + + Suggestion strip text Key background