diff --git a/app/src/main/kotlin/com/simplemobiletools/keyboard/adapters/ClipsKeyboardAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/keyboard/adapters/ClipsKeyboardAdapter.kt index 81b006d..adc1b4b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/keyboard/adapters/ClipsKeyboardAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/keyboard/adapters/ClipsKeyboardAdapter.kt @@ -14,6 +14,7 @@ import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.keyboard.R import com.simplemobiletools.keyboard.extensions.config import com.simplemobiletools.keyboard.extensions.getCurrentClip +import com.simplemobiletools.keyboard.extensions.getStrokeColor import com.simplemobiletools.keyboard.helpers.ClipsHelper import com.simplemobiletools.keyboard.helpers.ITEM_CLIP import com.simplemobiletools.keyboard.helpers.ITEM_SECTION_LABEL @@ -30,7 +31,6 @@ class ClipsKeyboardAdapter( ) : RecyclerView.Adapter() { private val layoutInflater = LayoutInflater.from(context) - private val baseConfig = context.config private var textColor = context.getProperTextColor() private var backgroundColor = context.getProperBackgroundColor() @@ -67,6 +67,7 @@ class ClipsKeyboardAdapter( view.apply { val rippleBg = clip_holder.background as RippleDrawable val layerDrawable = rippleBg.findDrawableByLayerId(R.id.clipboard_background_holder) as LayerDrawable + layerDrawable.findDrawableByLayerId(R.id.clipboard_background_stroke).applyColorFilter(context.getStrokeColor()) layerDrawable.findDrawableByLayerId(R.id.clipboard_background_shape).applyColorFilter(backgroundColor) clip_value.apply { diff --git a/app/src/main/kotlin/com/simplemobiletools/keyboard/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/keyboard/extensions/Context.kt index d12749b..23451f9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/keyboard/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/keyboard/extensions/Context.kt @@ -2,6 +2,11 @@ package com.simplemobiletools.keyboard.extensions import android.content.ClipboardManager import android.content.Context +import android.graphics.Color +import com.simplemobiletools.commons.extensions.getProperBackgroundColor +import com.simplemobiletools.commons.extensions.isUsingSystemDarkTheme +import com.simplemobiletools.commons.extensions.lightenColor +import com.simplemobiletools.keyboard.R import com.simplemobiletools.keyboard.databases.ClipsDatabase import com.simplemobiletools.keyboard.helpers.Config import com.simplemobiletools.keyboard.interfaces.ClipsDao @@ -14,3 +19,20 @@ fun Context.getCurrentClip(): String? { val clipboardManager = (getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager) return clipboardManager.primaryClip?.getItemAt(0)?.text?.trim()?.toString() } + +fun Context.getStrokeColor(): Int { + return if (config.isUsingSystemTheme) { + if (isUsingSystemDarkTheme()) { + resources.getColor(R.color.md_grey_800, theme) + } else { + resources.getColor(R.color.md_grey_400, theme) + } + } else { + val lighterColor = getProperBackgroundColor().lightenColor() + if (lighterColor == Color.WHITE || lighterColor == Color.BLACK) { + resources.getColor(R.color.divider_grey, theme) + } else { + lighterColor + } + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/keyboard/views/MyKeyboardView.kt b/app/src/main/kotlin/com/simplemobiletools/keyboard/views/MyKeyboardView.kt index c43bc21..e632fa7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/keyboard/views/MyKeyboardView.kt +++ b/app/src/main/kotlin/com/simplemobiletools/keyboard/views/MyKeyboardView.kt @@ -36,6 +36,7 @@ import com.simplemobiletools.keyboard.adapters.ClipsKeyboardAdapter import com.simplemobiletools.keyboard.extensions.clipsDB import com.simplemobiletools.keyboard.extensions.config import com.simplemobiletools.keyboard.extensions.getCurrentClip +import com.simplemobiletools.keyboard.extensions.getStrokeColor import com.simplemobiletools.keyboard.helpers.* import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_DELETE import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_ENTER @@ -266,25 +267,46 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut mTextColor = context.getProperTextColor() mBackgroundColor = context.getProperBackgroundColor() mPrimaryColor = context.getProperPrimaryColor() + val strokeColor = context.getStrokeColor() + + val toolbarColor = if (context.config.isUsingSystemTheme) { + resources.getColor(R.color.you_keyboard_toolbar_color, context.theme) + } else { + mBackgroundColor.darkenColor() + } + + val darkerColor = if (context.config.isUsingSystemTheme) { + resources.getColor(R.color.you_keyboard_background_color, context.theme) + } else { + mBackgroundColor.darkenColor(2) + } + + val miniKeyboardBackgroundColor = if (context.config.isUsingSystemTheme) { + resources.getColor(R.color.you_keyboard_toolbar_color, context.theme) + } else { + mBackgroundColor.darkenColor(4) + } if (changedView == mini_keyboard_view) { val previewBackground = background as LayerDrawable - previewBackground.findDrawableByLayerId(R.id.button_background_shape).applyColorFilter(mBackgroundColor.darkenColor(4)) - previewBackground.findDrawableByLayerId(R.id.button_background_stroke).applyColorFilter(getPreviewStrokeColor()) + previewBackground.findDrawableByLayerId(R.id.button_background_shape).applyColorFilter(miniKeyboardBackgroundColor) + previewBackground.findDrawableByLayerId(R.id.button_background_stroke).applyColorFilter(strokeColor) background = previewBackground } else { - background.applyColorFilter(mBackgroundColor.darkenColor(2)) + background.applyColorFilter(darkerColor) } val rippleBg = resources.getDrawable(R.drawable.clipboard_background, context.theme) as RippleDrawable val layerDrawable = rippleBg.findDrawableByLayerId(R.id.clipboard_background_holder) as LayerDrawable + layerDrawable.findDrawableByLayerId(R.id.clipboard_background_stroke).applyColorFilter(strokeColor) layerDrawable.findDrawableByLayerId(R.id.clipboard_background_shape).applyColorFilter(mBackgroundColor) val wasDarkened = mBackgroundColor != mBackgroundColor.darkenColor() mToolbarHolder?.apply { top_keyboard_divider.beGoneIf(wasDarkened) + top_keyboard_divider.background = ColorDrawable(strokeColor) - background = ColorDrawable(mBackgroundColor.darkenColor()) + background = ColorDrawable(toolbarColor) clipboard_value.apply { background = rippleBg setTextColor(mTextColor) @@ -298,7 +320,8 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut mClipboardManagerHolder?.apply { top_clipboard_divider.beGoneIf(wasDarkened) - clipboard_manager_holder.background = ColorDrawable(mBackgroundColor.darkenColor()) + top_clipboard_divider.background = ColorDrawable(strokeColor) + clipboard_manager_holder.background = ColorDrawable(toolbarColor) clipboard_manager_close.applyColorFilter(mTextColor) clipboard_manager_manage.applyColorFilter(mTextColor) @@ -518,7 +541,11 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut val code = key.code var keyBackground = mKeyBackground if (code == KEYCODE_SPACE) { - keyBackground = resources.getDrawable(R.drawable.keyboard_space_background, context.theme) + keyBackground = if (context.config.isUsingSystemTheme) { + resources.getDrawable(R.drawable.keyboard_space_background_material, context.theme) + } else { + resources.getDrawable(R.drawable.keyboard_space_background, context.theme) + } } else if (code == KEYCODE_ENTER) { keyBackground = resources.getDrawable(R.drawable.keyboard_enter_background, context.theme) } @@ -768,9 +795,15 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut } } + val previewBackgroundColor = if (context.config.isUsingSystemTheme) { + resources.getColor(R.color.you_keyboard_toolbar_color, context.theme) + } else { + mBackgroundColor.darkenColor(4) + } + val previewBackground = mPreviewText!!.background as LayerDrawable - previewBackground.findDrawableByLayerId(R.id.button_background_shape).applyColorFilter(mBackgroundColor.darkenColor(4)) - previewBackground.findDrawableByLayerId(R.id.button_background_stroke).applyColorFilter(getPreviewStrokeColor()) + previewBackground.findDrawableByLayerId(R.id.button_background_shape).applyColorFilter(previewBackgroundColor) + previewBackground.findDrawableByLayerId(R.id.button_background_stroke).applyColorFilter(context.getStrokeColor()) mPreviewText!!.background = previewBackground mPreviewText!!.setTextColor(mTextColor) @@ -1339,15 +1372,6 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut mClipboardManagerHolder?.clips_list?.adapter = adapter } - // stroke is usually the lighter version of the background color, but if it becomes white or black, it might be invisible. So use light grey there. - private fun getPreviewStrokeColor(): Int { - var strokeColor = mBackgroundColor.lightenColor() - if (strokeColor == Color.WHITE || strokeColor == Color.BLACK) { - strokeColor = resources.getColor(R.color.divider_grey) - } - return strokeColor - } - private fun closing() { if (mPreviewPopup.isShowing) { mPreviewPopup.dismiss() diff --git a/app/src/main/res/drawable-v31/keyboard_space_background_material.xml b/app/src/main/res/drawable-v31/keyboard_space_background_material.xml new file mode 100644 index 0000000..64f29b9 --- /dev/null +++ b/app/src/main/res/drawable-v31/keyboard_space_background_material.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/clipboard_background.xml b/app/src/main/res/drawable/clipboard_background.xml index 55a2985..7d03375 100644 --- a/app/src/main/res/drawable/clipboard_background.xml +++ b/app/src/main/res/drawable/clipboard_background.xml @@ -11,6 +11,7 @@ + diff --git a/app/src/main/res/values-night-v31/colors.xml b/app/src/main/res/values-night-v31/colors.xml new file mode 100644 index 0000000..a20bc50 --- /dev/null +++ b/app/src/main/res/values-night-v31/colors.xml @@ -0,0 +1,5 @@ + + + @android:color/system_neutral1_900 + #111111 + diff --git a/app/src/main/res/values-v31/colors.xml b/app/src/main/res/values-v31/colors.xml new file mode 100644 index 0000000..25d6491 --- /dev/null +++ b/app/src/main/res/values-v31/colors.xml @@ -0,0 +1,5 @@ + + + @android:color/system_neutral1_10 + @android:color/system_neutral1_50 +