From fb9008e9fea6abdd1ff838f3b952d8c86c92f98e Mon Sep 17 00:00:00 2001 From: codokie <151087174+codokie@users.noreply.github.com> Date: Wed, 27 Mar 2024 07:04:59 +0200 Subject: [PATCH] Make toolbar direction for RTL layouts adjustable (#574) --- .../keyboard/latin/settings/Settings.java | 1 + .../keyboard/latin/settings/SettingsValues.java | 2 ++ .../latin/suggestions/SuggestionStripView.java | 14 +++++++++----- app/src/main/res/values/strings.xml | 4 ++++ app/src/main/res/xml/prefs_screen_preferences.xml | 7 +++++++ 5 files changed, 23 insertions(+), 5 deletions(-) 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 f9ab3631..29dc5fa9 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java @@ -94,6 +94,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_BLOCK_POTENTIALLY_OFFENSIVE = "block_potentially_offensive"; public static final String PREF_LANGUAGE_SWITCH_KEY = "language_switch_key"; public static final String PREF_SHOW_EMOJI_KEY = "show_emoji_key"; + public static final String PREF_VARIABLE_TOOLBAR_DIRECTION = "var_toolbar_direction"; public static final String PREF_ADDITIONAL_SUBTYPES = "additional_subtypes"; public static final String PREF_ENABLE_SPLIT_KEYBOARD = "split_keyboard"; public static final String PREF_SPLIT_SPACER_SCALE = "split_spacer_scale"; 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 52170b9b..2549748f 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java @@ -68,6 +68,7 @@ public class SettingsValues { public final boolean mShowsPopupHints; public final boolean mSpaceForLangChange; public final boolean mShowsEmojiKey; + public final boolean mVarToolbarDirection; public final boolean mUsePersonalizedDicts; public final boolean mUseDoubleSpacePeriod; public final boolean mBlockPotentiallyOffensive; @@ -150,6 +151,7 @@ public class SettingsValues { mShowsPopupHints = prefs.getBoolean(Settings.PREF_SHOW_POPUP_HINTS, false); mSpaceForLangChange = prefs.getBoolean(Settings.PREF_SPACE_TO_CHANGE_LANG, true); mShowsEmojiKey = prefs.getBoolean(Settings.PREF_SHOW_EMOJI_KEY, false); + mVarToolbarDirection = prefs.getBoolean(Settings.PREF_VARIABLE_TOOLBAR_DIRECTION, true); mUsePersonalizedDicts = prefs.getBoolean(Settings.PREF_KEY_USE_PERSONALIZED_DICTS, true); mUseDoubleSpacePeriod = prefs.getBoolean(Settings.PREF_KEY_USE_DOUBLE_SPACE_PERIOD, true) && inputAttributes.mIsGeneralTextInput; diff --git a/app/src/main/java/helium314/keyboard/latin/suggestions/SuggestionStripView.java b/app/src/main/java/helium314/keyboard/latin/suggestions/SuggestionStripView.java index 33ba1d8a..84e1a39c 100644 --- a/app/src/main/java/helium314/keyboard/latin/suggestions/SuggestionStripView.java +++ b/app/src/main/java/helium314/keyboard/latin/suggestions/SuggestionStripView.java @@ -126,9 +126,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick showSuggestionsStrip(); } - public void setLayoutDirection(final boolean isRtlLanguage) { - final int layoutDirection = isRtlLanguage ? ViewCompat.LAYOUT_DIRECTION_RTL - : ViewCompat.LAYOUT_DIRECTION_LTR; + public void setLayoutDirection(final int layoutDirection) { ViewCompat.setLayoutDirection(mSuggestionStripView, layoutDirection); ViewCompat.setLayoutDirection(mSuggestionsStrip, layoutDirection); } @@ -265,8 +263,14 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick } public void setRtl(final boolean isRtlLanguage) { - mStripVisibilityGroup.setLayoutDirection(isRtlLanguage); - mRtl = isRtlLanguage ? -1 : 1; + final int layoutDirection; + if (!Settings.getInstance().getCurrent().mVarToolbarDirection) + layoutDirection = ViewCompat.LAYOUT_DIRECTION_LOCALE; + else{ + layoutDirection = isRtlLanguage ? ViewCompat.LAYOUT_DIRECTION_RTL : ViewCompat.LAYOUT_DIRECTION_LTR; + mRtl = isRtlLanguage ? -1 : 1; + } + mStripVisibilityGroup.setLayoutDirection(layoutDirection); } public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eb5acd0e..c7eedde0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -776,4 +776,8 @@ New dictionary: None Move Cursor + + Variable toolbar direction + + Reverse direction when a right-to-left keyboard subtype is selected diff --git a/app/src/main/res/xml/prefs_screen_preferences.xml b/app/src/main/res/xml/prefs_screen_preferences.xml index bab93e66..e473f589 100644 --- a/app/src/main/res/xml/prefs_screen_preferences.xml +++ b/app/src/main/res/xml/prefs_screen_preferences.xml @@ -98,6 +98,13 @@ android:key="toolbar_keys" android:title="@string/toolbar_keys" /> + +