From 15b9f1616f721c20d75b973bbfcdaf5f626d3605 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Thu, 7 Apr 2022 14:28:45 +0200 Subject: [PATCH] Fix keyboard search and selection --- .../kunzisoft/keepass/activities/GroupActivity.kt | 1 + .../keepass/magikeyboard/MagikeyboardService.kt | 15 ++++++++++++--- .../settings/MagikeyboardSettingsFragment.kt | 1 - .../kunzisoft/keepass/settings/PreferencesUtil.kt | 2 ++ .../kunzisoft/keepass/view/SearchFiltersView.kt | 3 +-- app/src/main/res/values/donottranslate.xml | 4 ++-- app/src/main/res/values/strings.xml | 6 +++--- 7 files changed, 21 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt index 99f3f0fd4..b29aa51cc 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt @@ -1132,6 +1132,7 @@ class GroupActivity : DatabaseLockActivity(), finishNodeAction() searchView?.setOnQueryTextListener(null) + searchFiltersView?.saveSearchParameters() } private fun addSearchQueryInSearchView(searchQuery: String) { diff --git a/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikeyboardService.kt b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikeyboardService.kt index dfe347cb6..7f77866b6 100644 --- a/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikeyboardService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikeyboardService.kt @@ -32,6 +32,7 @@ import android.view.inputmethod.InputMethodManager import android.widget.FrameLayout import android.widget.PopupWindow import android.widget.TextView +import androidx.core.content.ContextCompat import com.kunzisoft.keepass.R import com.kunzisoft.keepass.activities.EntrySelectionLauncherActivity import com.kunzisoft.keepass.adapters.FieldsAdapter @@ -241,9 +242,6 @@ class MagikeyboardService : InputMethodService(), KeyboardView.OnKeyboardActionL ?.showInputMethodPicker() } KEY_ENTRY -> { - actionKeyEntry() - } - KEY_ENTRY_ALT -> { var searchInfo: SearchInfo? = null if (mFormPackageName != null) { searchInfo = SearchInfo().apply { @@ -252,6 +250,9 @@ class MagikeyboardService : InputMethodService(), KeyboardView.OnKeyboardActionL } actionKeyEntry(searchInfo) } + KEY_ENTRY_ALT -> { + actionKeyEntry() + } KEY_LOCK -> { removeEntryInfo() sendBroadcast(Intent(LOCK_ACTION)) @@ -409,5 +410,13 @@ class MagikeyboardService : InputMethodService(), KeyboardView.OnKeyboardActionL // Launch notification if allowed KeyboardEntryNotificationService.launchNotificationIfAllowed(context, entry, toast) } + + fun activatedInSettings(context: Context): Boolean { + return ContextCompat.getSystemService(context, InputMethodManager::class.java) + ?.enabledInputMethodList + ?.any { + it.packageName == context.packageName + } ?: false + } } } \ No newline at end of file diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/MagikeyboardSettingsFragment.kt b/app/src/main/java/com/kunzisoft/keepass/settings/MagikeyboardSettingsFragment.kt index 9616fd7a7..92695db7c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/MagikeyboardSettingsFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/MagikeyboardSettingsFragment.kt @@ -23,7 +23,6 @@ import android.os.Bundle import androidx.fragment.app.DialogFragment import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat - import com.kunzisoft.keepass.R import com.kunzisoft.keepass.settings.preferencedialogfragment.DurationDialogFragmentCompat diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt index a0816ec7c..43cc00740 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt @@ -33,6 +33,7 @@ import com.kunzisoft.keepass.biometric.AdvancedUnlockManager import com.kunzisoft.keepass.database.element.SortNodeEnum import com.kunzisoft.keepass.database.search.SearchParameters import com.kunzisoft.keepass.education.Education +import com.kunzisoft.keepass.magikeyboard.MagikeyboardService import com.kunzisoft.keepass.password.PassphraseGenerator import com.kunzisoft.keepass.timeout.TimeoutHelper import com.kunzisoft.keepass.utils.UriUtil @@ -623,6 +624,7 @@ object PreferencesUtil { val prefs = PreferenceManager.getDefaultSharedPreferences(context) return prefs.getBoolean(context.getString(R.string.keyboard_search_share_key), context.resources.getBoolean(R.bool.keyboard_search_share_default)) + && MagikeyboardService.activatedInSettings(context) } fun isKeyboardSaveSearchInfoEnable(context: Context): Boolean { diff --git a/app/src/main/java/com/kunzisoft/keepass/view/SearchFiltersView.kt b/app/src/main/java/com/kunzisoft/keepass/view/SearchFiltersView.kt index 9a552ab44..6cceef3c2 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/SearchFiltersView.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/SearchFiltersView.kt @@ -254,8 +254,7 @@ class SearchFiltersView @JvmOverloads constructor(context: Context, } } - override fun onDetachedFromWindow() { + fun saveSearchParameters() { PreferencesUtil.setDefaultSearchParameters(context, searchParameters) - super.onDetachedFromWindow() } } \ No newline at end of file diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 094a83604..1a2604640 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -135,9 +135,9 @@ keyboard_selection_entry_key false keyboard_search_share_key - false + true keyboard_save_search_info_key - true + false keyboard_auto_go_action_key true keyboard_key_vibrate_key diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 29e24d6e3..acf932fe1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -483,10 +483,10 @@ When viewing an entry in KeePassDX, populate Magikeyboard with that entry Notification info Show a notification when an entry is available - Search shared info - When sharing a URL to KeePassDX, filter the entries using that URL domain + Select shared info + When sharing info to KeePassDX, filter the entries using this info to feed the Magikeyboard Save shared info - After sharing a URL to KeePassDX, when an entry is selected, try to remember that entry for further uses + After sharing info to KeePassDX, when an entry is selected, try saving the info in the entry for easier future uses Clear at closing Close the database when closing the notification Timeout