add separate color for suggestion strip, fixes #285

This commit is contained in:
Helium314 2023-12-31 17:05:57 +01:00
parent 7941fd8ac4
commit c7ea083176
6 changed files with 30 additions and 22 deletions

View file

@ -165,6 +165,7 @@ public final class KeyboardTheme implements Comparable<KeyboardTheme> {
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<KeyboardTheme> {
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<KeyboardTheme> {
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<KeyboardTheme> {
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<KeyboardTheme> {
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<KeyboardTheme> {
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<KeyboardTheme> {
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)
);
}

View file

@ -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)
}

View file

@ -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,

View file

@ -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,

View file

@ -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);

View file

@ -680,6 +680,8 @@ New dictionary:
<string name="select_color_key">Key text</string>
<!-- Selection: key hint text color. -->
<string name="select_color_key_hint">Key hint text</string>
<!-- Selection: suggestion text color. -->
<string name="select_color_suggestion">Suggestion strip text</string>
<!-- Selection: key color. -->
<string name="select_color_key_background">Key background</string>
<!-- Selection: functional key color. -->