diff --git a/app/src/main/java/helium314/keyboard/keyboard/clipboard/ClipboardHistoryView.kt b/app/src/main/java/helium314/keyboard/keyboard/clipboard/ClipboardHistoryView.kt index acb7f76ba..3f178d206 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/clipboard/ClipboardHistoryView.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/clipboard/ClipboardHistoryView.kt @@ -268,6 +268,8 @@ class ClipboardHistoryView @JvmOverloads constructor( val clipContent = clipboardHistoryManager?.getHistoryEntryContent(clipId) keyboardActionListener?.onTextInput(clipContent?.content.toString()) keyboardActionListener?.onReleaseKey(KeyCode.NOT_SPECIFIED, false) + if (Settings.getInstance().current.mAlphaAfterClipHistoryEntry) + keyboardActionListener?.onCodeInput(KeyCode.ALPHA, Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, false) } override fun onClipboardHistoryEntryAdded(at: Int) { diff --git a/app/src/main/java/helium314/keyboard/keyboard/emoji/EmojiPalettesView.java b/app/src/main/java/helium314/keyboard/keyboard/emoji/EmojiPalettesView.java index a29412b9e..7fdcdb07a 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/emoji/EmojiPalettesView.java +++ b/app/src/main/java/helium314/keyboard/keyboard/emoji/EmojiPalettesView.java @@ -340,6 +340,8 @@ public final class EmojiPalettesView extends LinearLayout mKeyboardActionListener.onCodeInput(code, NOT_A_COORDINATE, NOT_A_COORDINATE, false); } mKeyboardActionListener.onReleaseKey(code, false); + if (Settings.getInstance().getCurrent().mAlphaAfterEmojiInEmojiView) + mKeyboardActionListener.onCodeInput(KeyCode.ALPHA, NOT_A_COORDINATE, NOT_A_COORDINATE, false); } public void setHardwareAcceleratedDrawingEnabled(final boolean enabled) { diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardState.java b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardState.java index dd13606bc..e6c1df61d 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardState.java +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardState.java @@ -782,17 +782,11 @@ public final class KeyboardState { || code == KeyCode.MULTIPLE_CODE_POINTS)) { mSwitchState = SWITCH_STATE_SYMBOL; } - // Switch back to alpha keyboard mode if user types one or more non-space/enter - // characters followed by a space/enter. - if (isSpaceOrEnter(code)) { - toggleAlphabetAndSymbols(autoCapsFlags, recapitalizeMode); - mPrevSymbolsKeyboardWasShifted = false; - } break; case SWITCH_STATE_SYMBOL: // Switch back to alpha keyboard mode if user types one or more non-space/enter // characters followed by a space/enter. - if (isSpaceOrEnter(code)) { + if (isSpaceOrEnter(code) && Settings.getInstance().getCurrent().mAlphaAfterSymbolAndSpace) { toggleAlphabetAndSymbols(autoCapsFlags, recapitalizeMode); mPrevSymbolsKeyboardWasShifted = false; } diff --git a/app/src/main/java/helium314/keyboard/latin/settings/AdvancedSettingsFragment.kt b/app/src/main/java/helium314/keyboard/latin/settings/AdvancedSettingsFragment.kt index a0b262f40..74a0137e1 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/AdvancedSettingsFragment.kt +++ b/app/src/main/java/helium314/keyboard/latin/settings/AdvancedSettingsFragment.kt @@ -149,6 +149,11 @@ class AdvancedSettingsFragment : SubScreenFragment() { customCurrencyDialog() true } + + findPreference("switch_after")?.setOnPreferenceClickListener { + switchToMainDialog() + true + } } override fun onStart() { @@ -485,6 +490,31 @@ class AdvancedSettingsFragment : SubScreenFragment() { d.show() } + private fun switchToMainDialog() { + val checked = booleanArrayOf( + sharedPreferences.getBoolean(Settings.PREF_ABC_AFTER_SYMBOL_SPACE, true), + sharedPreferences.getBoolean(Settings.PREF_ABC_AFTER_EMOJI, false), + sharedPreferences.getBoolean(Settings.PREF_ABC_AFTER_CLIP, false), + ) + val titles = arrayOf( + requireContext().getString(R.string.after_symbol_and_space), + requireContext().getString(R.string.after_emoji), + requireContext().getString(R.string.after_clip), + ) + AlertDialog.Builder(requireContext()) + .setTitle(R.string.switch_keyboard_after) + .setMultiChoiceItems(titles, checked) { _, i, b -> checked[i] = b } + .setNegativeButton(android.R.string.cancel, null) + .setPositiveButton(android.R.string.ok) { _, _ -> + sharedPreferences.edit { + putBoolean(Settings.PREF_ABC_AFTER_SYMBOL_SPACE, checked[0]) + putBoolean(Settings.PREF_ABC_AFTER_EMOJI, checked[1]) + putBoolean(Settings.PREF_ABC_AFTER_CLIP, checked[2]) + } + } + .show() + } + private fun setupKeyLongpressTimeoutSettings() { val prefs = sharedPreferences findPreference(Settings.PREF_KEY_LONGPRESS_TIMEOUT)?.setInterface(object : ValueProxy { diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java index 8059055c9..38a60abf0 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java @@ -156,6 +156,9 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_AUTO_SHOW_TOOLBAR = "auto_show_toolbar"; public static final String PREF_AUTO_HIDE_TOOLBAR = "auto_hide_toolbar"; public static final String PREF_CLIPBOARD_TOOLBAR_KEYS = "clipboard_toolbar_keys"; + public static final String PREF_ABC_AFTER_EMOJI = "abc_after_emoji"; + public static final String PREF_ABC_AFTER_CLIP = "abc_after_clip"; + public static final String PREF_ABC_AFTER_SYMBOL_SPACE = "abc_after_symbol_space"; // Emoji public static final String PREF_EMOJI_RECENT_KEYS = "emoji_recent_keys"; diff --git a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java index cde3e2a9a..b3c6330c7 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java @@ -111,6 +111,9 @@ public class SettingsValues { public final float mBottomPaddingScale; public final boolean mAutoShowToolbar; public final boolean mAutoHideToolbar; + public final boolean mAlphaAfterEmojiInEmojiView; + public final boolean mAlphaAfterClipHistoryEntry; + public final boolean mAlphaAfterSymbolAndSpace; // From the input box @NonNull @@ -252,6 +255,9 @@ public class SettingsValues { mAutoShowToolbar = prefs.getBoolean(Settings.PREF_AUTO_SHOW_TOOLBAR, false); mAutoHideToolbar = readSuggestionsEnabled(prefs) && prefs.getBoolean(Settings.PREF_AUTO_HIDE_TOOLBAR, false); mHasCustomFunctionalLayout = CustomLayoutUtilsKt.hasCustomFunctionalLayout(selectedSubtype, context); + mAlphaAfterEmojiInEmojiView = prefs.getBoolean(Settings.PREF_ABC_AFTER_EMOJI, false); + mAlphaAfterClipHistoryEntry = prefs.getBoolean(Settings.PREF_ABC_AFTER_CLIP, false); + mAlphaAfterSymbolAndSpace = prefs.getBoolean(Settings.PREF_ABC_AFTER_SYMBOL_SPACE, true); } public boolean isApplicationSpecifiedCompletionsOn() { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9cff4bdf7..0f5360834 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -523,6 +523,14 @@ disposition rather than other common dispositions for Latin languages. [CHAR LIM Customize currencies Set main and up to 6 secondary currency symbols, separated with space + + Switch to main keyboard after… + + Selecting emoji in emoji view + + Selecting clipboard history entry + + Pressing enter or space after other keys in symbols view Set image for day or night mode? diff --git a/app/src/main/res/xml/prefs_screen_advanced.xml b/app/src/main/res/xml/prefs_screen_advanced.xml index d615c755c..d262c0c88 100644 --- a/app/src/main/res/xml/prefs_screen_advanced.xml +++ b/app/src/main/res/xml/prefs_screen_advanced.xml @@ -76,6 +76,11 @@ android:defaultValue="true" android:persistent="true" /> + +