From d8dead14eaf94382487870ea0f70112579c7c895 Mon Sep 17 00:00:00 2001 From: merkost Date: Sat, 17 Jun 2023 10:01:09 +1000 Subject: [PATCH 1/3] Added isDeviceLocked extension function to track when user is on a LockScreen --- .../com/simplemobiletools/keyboard/extensions/Context.kt | 7 +++++++ .../com/simplemobiletools/keyboard/helpers/Config.kt | 8 ++++---- .../simplemobiletools/keyboard/views/MyKeyboardView.kt | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) 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 e57df65e..439f4281 100644 --- a/app/src/main/kotlin/com/simplemobiletools/keyboard/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/keyboard/extensions/Context.kt @@ -1,5 +1,6 @@ package com.simplemobiletools.keyboard.extensions +import android.app.KeyguardManager import android.content.ClipboardManager import android.content.Context import android.graphics.Color @@ -34,6 +35,12 @@ val Context.isDeviceInDirectBootMode: Boolean return isNougatPlus() && !userManager.isUserUnlocked } +val Context.isDeviceLocked: Boolean + get() { + val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager + return keyguardManager.isDeviceLocked || isDeviceInDirectBootMode + } + val Context.clipsDB: ClipsDao get() = ClipsDatabase.getInstance(applicationContext.safeStorageContext).ClipsDao() diff --git a/app/src/main/kotlin/com/simplemobiletools/keyboard/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/keyboard/helpers/Config.kt index 11344c57..debc97ac 100644 --- a/app/src/main/kotlin/com/simplemobiletools/keyboard/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/keyboard/helpers/Config.kt @@ -2,7 +2,7 @@ package com.simplemobiletools.keyboard.helpers import android.content.Context import com.simplemobiletools.commons.helpers.BaseConfig -import com.simplemobiletools.keyboard.extensions.isDeviceInDirectBootMode +import com.simplemobiletools.keyboard.extensions.isDeviceLocked import com.simplemobiletools.keyboard.extensions.safeStorageContext import java.util.Locale @@ -44,10 +44,10 @@ class Config(context: Context) : BaseConfig(context) { set(showClipboardContent) = prefs.edit().putBoolean(SHOW_CLIPBOARD_CONTENT, showClipboardContent).apply() var showNumbersRow: Boolean - get() = if (!context.isDeviceInDirectBootMode) { - prefs.getBoolean(SHOW_NUMBERS_ROW, false) - } else { + get() = if (context.isDeviceLocked) { true + } else { + prefs.getBoolean(SHOW_NUMBERS_ROW, false) } set(showNumbersRow) = prefs.edit().putBoolean(SHOW_NUMBERS_ROW, showNumbersRow).apply() 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 51f1c53f..6ce5c7f6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/keyboard/views/MyKeyboardView.kt +++ b/app/src/main/kotlin/com/simplemobiletools/keyboard/views/MyKeyboardView.kt @@ -400,7 +400,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut pinned_clipboard_items.applyColorFilter(mTextColor) clipboard_clear.applyColorFilter(mTextColor) - toolbar_holder.beInvisibleIf(context.isDeviceInDirectBootMode) + beInvisibleIf(context.isDeviceLocked) } mClipboardManagerHolder?.apply { From 409e3f4c3510ce047e4d8cedc8a7c698f7180ed4 Mon Sep 17 00:00:00 2001 From: merkost Date: Sat, 17 Jun 2023 10:02:02 +1000 Subject: [PATCH 2/3] Moved setKeyboardHolder before setKeyboard in order to properly manage toolbar visibility --- .../simplemobiletools/keyboard/services/SimpleKeyboardIME.kt | 2 +- .../com/simplemobiletools/keyboard/views/MyKeyboardView.kt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/keyboard/services/SimpleKeyboardIME.kt b/app/src/main/kotlin/com/simplemobiletools/keyboard/services/SimpleKeyboardIME.kt index 8306a859..f0c2c966 100644 --- a/app/src/main/kotlin/com/simplemobiletools/keyboard/services/SimpleKeyboardIME.kt +++ b/app/src/main/kotlin/com/simplemobiletools/keyboard/services/SimpleKeyboardIME.kt @@ -46,8 +46,8 @@ class SimpleKeyboardIME : InputMethodService(), OnKeyboardActionListener, Shared override fun onCreateInputView(): View { val keyboardHolder = layoutInflater.inflate(R.layout.keyboard_view_keyboard, null) keyboardView = keyboardHolder.keyboard_view as MyKeyboardView - keyboardView!!.setKeyboard(keyboard!!) keyboardView!!.setKeyboardHolder(keyboardHolder.keyboard_holder) + keyboardView!!.setKeyboard(keyboard!!) keyboardView!!.setEditorInfo(currentInputEditorInfo) keyboardView!!.mOnKeyboardActionListener = this return keyboardHolder!! 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 6ce5c7f6..d25a1693 100644 --- a/app/src/main/kotlin/com/simplemobiletools/keyboard/views/MyKeyboardView.kt +++ b/app/src/main/kotlin/com/simplemobiletools/keyboard/views/MyKeyboardView.kt @@ -269,6 +269,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut invalidateAllKeys() computeProximityThreshold(keyboard) mMiniKeyboardCache.clear() + mToolbarHolder?.beInvisibleIf(context.isDeviceLocked) accessHelper = AccessHelper(this, mKeyboard?.mKeys.orEmpty()) ViewCompat.setAccessibilityDelegate(this, accessHelper) From 8f2d851c08c2b311b2c2a4ca9ba4f28b9db851d1 Mon Sep 17 00:00:00 2001 From: merkost Date: Sun, 18 Jun 2023 13:21:51 +1000 Subject: [PATCH 3/3] Added additional lockScreen check --- .../kotlin/com/simplemobiletools/keyboard/extensions/Context.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 439f4281..34b4c081 100644 --- a/app/src/main/kotlin/com/simplemobiletools/keyboard/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/keyboard/extensions/Context.kt @@ -38,7 +38,7 @@ val Context.isDeviceInDirectBootMode: Boolean val Context.isDeviceLocked: Boolean get() { val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager - return keyguardManager.isDeviceLocked || isDeviceInDirectBootMode + return keyguardManager.isDeviceLocked || keyguardManager.isKeyguardLocked || isDeviceInDirectBootMode } val Context.clipsDB: ClipsDao