From c6411777abd3e6ad088328cce0c6586b999cb30e Mon Sep 17 00:00:00 2001 From: Helium314 Date: Thu, 20 Jul 2023 10:55:22 +0200 Subject: [PATCH] allow setting functional and space key colors separately not exposed to user also fixes minor inconsistencies --- .../org/dslul/openboard/inputmethod/keyboard/Key.java | 2 +- .../openboard/inputmethod/keyboard/KeyboardView.java | 9 ++++----- .../clipboard/ClipboardHistoryRecyclerView.kt | 6 +++--- .../keyboard/clipboard/ClipboardHistoryView.kt | 10 +++++----- .../inputmethod/keyboard/emoji/EmojiPalettesView.java | 11 +++++------ .../inputmethod/latin/settings/SettingsValues.java | 4 ++++ .../latin/suggestions/SuggestionStripView.java | 4 +++- 7 files changed, 25 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java index 414072594..aa4004c9c 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java @@ -1108,7 +1108,7 @@ public class Key implements Comparable { @Nonnull final Drawable functionalKeyBackground, @Nonnull final Drawable spacebarBackground) { final Drawable background; - if (mBackgroundType == BACKGROUND_TYPE_FUNCTIONAL) { + if (mBackgroundType == BACKGROUND_TYPE_FUNCTIONAL || mBackgroundType == BACKGROUND_TYPE_STICKY_OFF || mBackgroundType == BACKGROUND_TYPE_STICKY_ON) { background = functionalKeyBackground; } else if (mBackgroundType == BACKGROUND_TYPE_SPACEBAR) { background = spacebarBackground; diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java index 294edb3a4..7ddc7ab09 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java @@ -188,6 +188,8 @@ public class KeyboardView extends View { keyHintTextColorFilter = settingsValues.mCustomHintTextColorFilter; keyTextColorFilter = settingsValues.mCustomKeyTextColorFilter; accentColorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(settingsValues.mCustomThemeColorAccent, BlendModeCompat.SRC_ATOP); + mSpacebarBackground.setColorFilter(settingsValues.mCustomSpaceBarBackgroundColorFilter); + mFunctionalKeyBackground.setColorFilter(settingsValues.mCustomFunctionalKeyBackgroundColorFilter); } else { keyHintTextColorFilter = null; keyTextColorFilter = null; @@ -400,13 +402,10 @@ public class KeyboardView extends View { } if (mCustomTheme) { // color filter is applied to background, which is re-used - // but we don't want it applied to "blue" keys - // so we always need to select the color filter dependent on the current key + // action key and normal key share the same background drawable, so we need to select the correct color filter if (key.isActionKey()) background.setColorFilter(accentColorFilter); - else if (key.getBackgroundType() == Key.BACKGROUND_TYPE_NORMAL && key.getCode() < 0 && key.getCode() != Constants.CODE_SWITCH_ALPHA_SYMBOL && key.getCode() != Constants.CODE_OUTPUT_TEXT) - background.clearColorFilter(); - else + else if (key.getBackgroundType() == Key.BACKGROUND_TYPE_NORMAL) background.setColorFilter(keyBgFilter); } background.setBounds(0, 0, bgWidth, bgHeight); diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryRecyclerView.kt b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryRecyclerView.kt index 006cf244c..a8a37c8e1 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryRecyclerView.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryRecyclerView.kt @@ -63,9 +63,9 @@ class ClipboardHistoryRecyclerView @JvmOverloads constructor( init { paint.color = dividerColor paint.strokeWidth = dividerHeight.toFloat() - val sv = Settings.getInstance().current - if (sv.mCustomTheme) - paint.colorFilter = sv.mBackgroundColorFilter + val settingsValues = Settings.getInstance().current + if (settingsValues.mCustomTheme) + paint.colorFilter = settingsValues.mBackgroundColorFilter } override fun onDrawOver(canvas: Canvas, parent: RecyclerView, state: State) { 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 9f6cd5ab4..82725bdfd 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 @@ -102,7 +102,7 @@ class ClipboardHistoryView @JvmOverloads constructor( setOnClickListener(this@ClipboardHistoryView) } if (settingsValues.mCustomTheme) { - alphabetKey.background.colorFilter = settingsValues.mCustomKeyBackgroundColorFilter + alphabetKey.background.colorFilter = settingsValues.mCustomFunctionalKeyBackgroundColorFilter alphabetKey.setTextColor(settingsValues.mCustomKeyTextColor) clearKey.colorFilter = settingsValues.mCustomKeyTextColorFilter background.colorFilter = settingsValues.mBackgroundColorFilter @@ -126,10 +126,10 @@ class ClipboardHistoryView @JvmOverloads constructor( clipboardAdapter.apply { itemBackgroundId = keyBackgroundId itemTypeFace = params.mTypeface - val sv = Settings.getInstance().current - if (sv.mCustomTheme) { - itemTextColor = sv.mCustomKeyTextColor - itemBackgroundColorFilter = sv.mCustomKeyBackgroundColorFilter + val settingsValues = Settings.getInstance().current + if (settingsValues.mCustomTheme) { + itemTextColor = settingsValues.mCustomKeyTextColor + itemBackgroundColorFilter = settingsValues.mCustomKeyBackgroundColorFilter } else itemTextColor = params.mTextColor itemTextSize = params.mLabelSize.toFloat() diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/emoji/EmojiPalettesView.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/emoji/EmojiPalettesView.java index ab465528c..59923e8b0 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/emoji/EmojiPalettesView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/emoji/EmojiPalettesView.java @@ -272,13 +272,12 @@ public final class EmojiPalettesView extends LinearLayout mSpacebar.setOnClickListener(this); final SettingsValues settingsValues = Settings.getInstance().getCurrent(); if (settingsValues.mCustomTheme) { - final ColorFilter cf = settingsValues.mCustomKeyBackgroundColorFilter; - mAlphabetKeyLeft.getBackground().setColorFilter(cf); - mSpacebar.getBackground().setColorFilter(cf); - mDeleteKey.getBackground().setColorFilter(cf); - getBackground().setColorFilter(cf); + mAlphabetKeyLeft.getBackground().setColorFilter(settingsValues.mCustomFunctionalKeyBackgroundColorFilter); + mSpacebar.getBackground().setColorFilter(settingsValues.mCustomSpaceBarBackgroundColorFilter); + mDeleteKey.getBackground().setColorFilter(settingsValues.mCustomFunctionalKeyBackgroundColorFilter); + getBackground().setColorFilter(settingsValues.mBackgroundColorFilter); mEmojiCategoryPageIndicatorView.setColors(settingsValues.mCustomThemeColorAccent, settingsValues.mBackgroundColor); - findViewById(R.id.emoji_tab_strip).getBackground().setColorFilter(cf); + findViewById(R.id.emoji_tab_strip).getBackground().setColorFilter(settingsValues.mBackgroundColorFilter); } mEmojiLayoutParams.setKeyProperties(mSpacebar); mSpacebarIcon = findViewById(R.id.emoji_keyboard_space_icon); diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java index 2aede229a..ed78de852 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java @@ -131,6 +131,8 @@ public class SettingsValues { // User-defined colors public final boolean mCustomTheme; public final ColorFilter mCustomKeyBackgroundColorFilter; + public final ColorFilter mCustomFunctionalKeyBackgroundColorFilter; + public final ColorFilter mCustomSpaceBarBackgroundColorFilter; public final int mBackgroundColor; public final ColorFilter mBackgroundColorFilter; public final ColorFilter mCustomKeyTextColorFilter; @@ -280,6 +282,8 @@ public class SettingsValues { keyBgColor = prefs.getInt(Settings.PREF_THEME_USER_COLOR_BACKGROUND, Color.DKGRAY); mCustomKeyBackgroundColorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(keyBgColor, BlendModeCompat.MODULATE); mCustomHintTextColorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(prefs.getInt(Settings.PREF_THEME_USER_COLOR_HINT_TEXT, Color.WHITE), BlendModeCompat.SRC_ATOP); + mCustomFunctionalKeyBackgroundColorFilter = mCustomKeyBackgroundColorFilter; + mCustomSpaceBarBackgroundColorFilter = mCustomKeyBackgroundColorFilter; mCustomKeyTextColor = prefs.getInt(Settings.PREF_THEME_USER_COLOR_TEXT, Color.WHITE); mCustomKeyTextColorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(mCustomKeyTextColor, BlendModeCompat.SRC_ATOP); if (mCustomTheme) { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java index 0fb4e2439..76e8b31ed 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java @@ -182,8 +182,10 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick mOtherKey.setImageDrawable(iconIncognito); final SettingsValues settingsValues = Settings.getInstance().getCurrent(); - if (settingsValues.mCustomTheme) + if (settingsValues.mCustomTheme) { mStripVisibilityGroup.mSuggestionStripView.getBackground().setColorFilter(settingsValues.mBackgroundColorFilter); + mClipboardKey.setColorFilter(settingsValues.mCustomKeyTextColor); + } } /**