From c468732ca2db1af2cf19150e8850f9b41aaee17d Mon Sep 17 00:00:00 2001 From: Helium314 Date: Thu, 29 Jun 2023 10:17:23 +0200 Subject: [PATCH] fix some theming issues --- README.md | 4 +-- .../inputmethod/keyboard/KeyboardView.java | 2 ++ .../keyboard/clipboard/ClipboardAdapter.kt | 3 ++ .../clipboard/ClipboardHistoryRecyclerView.kt | 4 +++ .../clipboard/ClipboardHistoryView.kt | 27 ++++++++------ .../keyboard/emoji/EmojiPalettesView.java | 35 +++++++++++++++---- .../latin/settings/SettingsValues.java | 2 +- .../main/res/layout/emoji_palettes_view.xml | 1 + 8 files changed, 59 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 7ee869bd0..1654ee756 100644 --- a/README.md +++ b/README.md @@ -43,8 +43,8 @@ Plan / to do: * ~improve auto-space insertion, https://github.com/openboard-team/openboard/pull/576~ * emoji prediction/search, either https://github.com/openboard-team/openboard/pull/749 (using emoji dictionaries already possible) * ~theming, https://github.com/openboard-team/openboard/issues/124~ - * fix emoji view not themed properly - * fix ABC buttons in emoji and clipboard view have wrong text color + * ~fix emoji view not themed properly~ + * ~fix ABC buttons in emoji and clipboard view have wrong text color~ * fix buttons on long-press action key not themed * allow adjusting colors without requiring manual reload of keyboard * ~delete suggestions, https://github.com/openboard-team/openboard/issues/106~ 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 4052ae32c..6e7cadce5 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 @@ -463,6 +463,8 @@ public class KeyboardView extends View { // set key color only if not in emoji keyboard range if (keyboard != null && (keyboard.mId.mElementId < 10 || keyboard.mId.mElementId > 26)) paint.setColorFilter(keyTextColorFilter); + else + paint.setColorFilter(null); } // Set a drop shadow for the text if the shadow radius is positive value. if (mKeyTextShadowRadius > 0.0f) { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardAdapter.kt b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardAdapter.kt index bb282744f..bb1354fd8 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardAdapter.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardAdapter.kt @@ -1,5 +1,6 @@ package org.dslul.openboard.inputmethod.keyboard.clipboard +import android.graphics.ColorFilter import android.graphics.Typeface import android.util.TypedValue import android.view.LayoutInflater @@ -22,6 +23,7 @@ class ClipboardAdapter( var pinnedIconResId = 0 var itemBackgroundId = 0 + var itemBackgroundColorFilter: ColorFilter? = null var itemTypeFace: Typeface? = null var itemTextColor = 0 var itemTextSize = 0f @@ -53,6 +55,7 @@ class ClipboardAdapter( setOnTouchListener(this@ViewHolder) setOnLongClickListener(this@ViewHolder) setBackgroundResource(itemBackgroundId) + background.colorFilter = itemBackgroundColorFilter } pinnedIconView = view.findViewById(R.id.clipboard_entry_pinned_icon).apply { visibility = View.GONE 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 507b22930..15f4ce302 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 @@ -6,6 +6,7 @@ import android.graphics.Paint import android.util.AttributeSet import android.view.View import androidx.recyclerview.widget.RecyclerView +import org.dslul.openboard.inputmethod.latin.settings.Settings class ClipboardHistoryRecyclerView @JvmOverloads constructor( context: Context, @@ -62,6 +63,9 @@ class ClipboardHistoryRecyclerView @JvmOverloads constructor( init { paint.color = dividerColor paint.strokeWidth = dividerHeight.toFloat() + val sv = Settings.getInstance().current + if (sv.mUserTheme) + paint.colorFilter = sv.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 b29f4576e..05a798f23 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 @@ -1,7 +1,6 @@ package org.dslul.openboard.inputmethod.keyboard.clipboard import android.content.Context -import android.graphics.Color import android.util.AttributeSet import android.util.TypedValue import android.view.MotionEvent @@ -10,8 +9,6 @@ import android.widget.FrameLayout import android.widget.ImageButton import android.widget.LinearLayout import android.widget.TextView -import androidx.core.graphics.BlendModeColorFilterCompat -import androidx.core.graphics.BlendModeCompat import androidx.recyclerview.widget.StaggeredGridLayoutManager import org.dslul.openboard.inputmethod.keyboard.KeyboardActionListener import org.dslul.openboard.inputmethod.keyboard.internal.KeyDrawParams @@ -93,29 +90,34 @@ class ClipboardHistoryView @JvmOverloads constructor( findViewById(R.id.clipboard_action_bar)?.apply { clipboardLayoutParams.setActionBarProperties(this) } - val cf = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(Color.CYAN, BlendModeCompat.MODULATE) val settingsValues = Settings.getInstance().current alphabetKey = findViewById(R.id.clipboard_keyboard_alphabet).apply { tag = Constants.CODE_ALPHA_FROM_CLIPBOARD setBackgroundResource(functionalKeyBackgroundId) setOnTouchListener(this@ClipboardHistoryView) setOnClickListener(this@ClipboardHistoryView) - background.colorFilter = settingsValues.mKeyBackgroundColorFilter - setTextColor(settingsValues.mKeyTextColor) } clearKey = findViewById(R.id.clipboard_clear).apply { setOnTouchListener(this@ClipboardHistoryView) setOnClickListener(this@ClipboardHistoryView) - colorFilter = settingsValues.mKeyTextColorFilter } - background.colorFilter = settingsValues.mBackgroundColorFilter + if (settingsValues.mUserTheme) { + alphabetKey.background.colorFilter = settingsValues.mKeyBackgroundColorFilter + alphabetKey.setTextColor(settingsValues.mKeyTextColor) + clearKey.colorFilter = settingsValues.mKeyTextColorFilter + background.colorFilter = settingsValues.mBackgroundColorFilter + } } private fun setupAlphabetKey(key: TextView?, label: String, params: KeyDrawParams) { key?.apply { text = label typeface = params.mTypeface - setTextColor(params.mFunctionalTextColor) + val settingsValues = Settings.getInstance().current + if (settingsValues.mUserTheme) + setTextColor(settingsValues.mKeyTextColor) + else + setTextColor(params.mFunctionalTextColor) setTextSize(TypedValue.COMPLEX_UNIT_PX, params.mLabelSize.toFloat()) } } @@ -124,7 +126,12 @@ class ClipboardHistoryView @JvmOverloads constructor( clipboardAdapter.apply { itemBackgroundId = keyBackgroundId itemTypeFace = params.mTypeface - itemTextColor = params.mTextColor + val sv = Settings.getInstance().current + if (sv.mUserTheme) { + itemTextColor = sv.mKeyTextColor + itemBackgroundColorFilter = sv.mKeyBackgroundColorFilter + } 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 37b1a6e89..31ecb4bc5 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 @@ -100,6 +100,8 @@ public final class EmojiPalettesView extends LinearLayout private final EmojiCategory mEmojiCategory; + private ImageView mCurrentTab = null; + public EmojiPalettesView(final Context context, final AttributeSet attrs) { this(context, attrs, R.attr.emojiPalettesViewStyle); } @@ -164,6 +166,11 @@ public final class EmojiPalettesView extends LinearLayout // TODO: Replace background color with its own setting rather than using the // category page indicator background as a workaround. iconView.setBackgroundColor(mCategoryPageIndicatorBackground); + final SettingsValues settingsValues = Settings.getInstance().getCurrent(); + if (settingsValues.mUserTheme) { + iconView.getBackground().setColorFilter(settingsValues.mBackgroundColorFilter); + iconView.setColorFilter(settingsValues.mKeyTextColorFilter); + } iconView.setImageResource(mEmojiCategory.getCategoryTabIcon(categoryId)); iconView.setContentDescription(mEmojiCategory.getAccessibilityDescription(categoryId)); tspec.setIndicator(iconView); @@ -265,11 +272,16 @@ public final class EmojiPalettesView extends LinearLayout mSpacebar.setTag(Constants.CODE_SPACE); mSpacebar.setOnTouchListener(this); mSpacebar.setOnClickListener(this); - final ColorFilter cf = Settings.getInstance().getCurrent().mKeyBackgroundColorFilter; - mAlphabetKeyLeft.getBackground().setColorFilter(cf); - mAlphabetKeyLeft.setTextColor(Settings.getInstance().getCurrent().mKeyTextColor); - mSpacebar.getBackground().setColorFilter(cf); - mDeleteKey.getBackground().setColorFilter(cf); + final SettingsValues settingsValues = Settings.getInstance().getCurrent(); + if (settingsValues.mUserTheme) { + final ColorFilter cf = settingsValues.mKeyBackgroundColorFilter; + mAlphabetKeyLeft.getBackground().setColorFilter(cf); + mSpacebar.getBackground().setColorFilter(cf); + mDeleteKey.getBackground().setColorFilter(cf); + getBackground().setColorFilter(cf); + mEmojiCategoryPageIndicatorView.setColors(settingsValues.mUserThemeColorAccent, settingsValues.mBackgroundColor); + findViewById(R.id.emoji_tab_strip).getBackground().setColorFilter(cf); + } mEmojiLayoutParams.setKeyProperties(mSpacebar); mSpacebarIcon = findViewById(R.id.emoji_keyboard_space_icon); } @@ -291,6 +303,13 @@ public final class EmojiPalettesView extends LinearLayout setCurrentCategoryAndPageId(categoryId, 0, false /* force */); updateEmojiCategoryPageIdView(); } + final SettingsValues settingsValues = Settings.getInstance().getCurrent(); + if (settingsValues.mUserTheme) { + if (mCurrentTab != null) + mCurrentTab.setColorFilter(settingsValues.mKeyTextColorFilter); + mCurrentTab = (ImageView) mTabHost.getCurrentTabView(); + mCurrentTab.setColorFilter(settingsValues.mUserThemeColorAccent); + } } /** @@ -374,7 +393,11 @@ public final class EmojiPalettesView extends LinearLayout private static void setupAlphabetKey(final TextView alphabetKey, final String label, final KeyDrawParams params) { alphabetKey.setText(label); - alphabetKey.setTextColor(params.mFunctionalTextColor); + final SettingsValues settingsValues = Settings.getInstance().getCurrent(); + if (settingsValues.mUserTheme) + alphabetKey.setTextColor(settingsValues.mKeyTextColor); + else + alphabetKey.setTextColor(params.mFunctionalTextColor); alphabetKey.setTextSize(TypedValue.COMPLEX_UNIT_PX, params.mLabelSize); alphabetKey.setTypeface(params.mTypeface); } 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 882589679..84ae7b53f 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 @@ -126,7 +126,7 @@ public class SettingsValues { private final AsyncResultHolder mAppWorkarounds; // User-defined colors - public boolean mUserTheme; + public final boolean mUserTheme; public final ColorFilter mKeyBackgroundColorFilter; public final int mBackgroundColor; public final ColorFilter mBackgroundColorFilter; diff --git a/app/src/main/res/layout/emoji_palettes_view.xml b/app/src/main/res/layout/emoji_palettes_view.xml index 0b65196a5..b18ebba25 100644 --- a/app/src/main/res/layout/emoji_palettes_view.xml +++ b/app/src/main/res/layout/emoji_palettes_view.xml @@ -27,6 +27,7 @@ style="?attr/emojiPalettesViewStyle" >