mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-06-03 13:20:31 +00:00
Add toolbar modes (#1606)
This commit is contained in:
parent
38bbcd9a83
commit
ec2bbb461d
15 changed files with 191 additions and 61 deletions
|
@ -20,6 +20,7 @@ import android.view.View;
|
|||
import android.view.animation.AnimationUtils;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.InputMethodSubtype;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.HorizontalScrollView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
@ -49,8 +50,8 @@ import helium314.keyboard.latin.utils.Log;
|
|||
import helium314.keyboard.latin.utils.RecapitalizeStatus;
|
||||
import helium314.keyboard.latin.utils.ResourceUtils;
|
||||
import helium314.keyboard.latin.utils.ScriptUtils;
|
||||
import helium314.keyboard.latin.utils.SubtypeLocaleUtils;
|
||||
import helium314.keyboard.latin.utils.SubtypeUtilsAdditional;
|
||||
import helium314.keyboard.latin.utils.ToolbarMode;
|
||||
|
||||
public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
||||
private static final String TAG = KeyboardSwitcher.class.getSimpleName();
|
||||
|
@ -64,6 +65,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
private LinearLayout mClipboardStripView;
|
||||
private HorizontalScrollView mClipboardStripScrollView;
|
||||
private SuggestionStripView mSuggestionStripView;
|
||||
private FrameLayout mStripContainer;
|
||||
private ClipboardHistoryView mClipboardHistoryView;
|
||||
private TextView mFakeToastView;
|
||||
private LatinIME mLatinIME;
|
||||
|
@ -307,6 +309,8 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
@NonNull final SettingsValues settingsValues,
|
||||
@NonNull final KeyboardSwitchState toggleState) {
|
||||
final int visibility = isImeSuppressedByHardwareKeyboard(settingsValues, toggleState) ? View.GONE : View.VISIBLE;
|
||||
final int stripVisibility = settingsValues.mToolbarMode == ToolbarMode.HIDDEN ? View.GONE : View.VISIBLE;
|
||||
mStripContainer.setVisibility(stripVisibility);
|
||||
PointerTracker.switchTo(mKeyboardView);
|
||||
mKeyboardView.setVisibility(visibility);
|
||||
// The visibility of {@link #mKeyboardView} must be aligned with {@link #MainKeyboardFrame}.
|
||||
|
@ -317,7 +321,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
mEmojiPalettesView.stopEmojiPalettes();
|
||||
mEmojiTabStripView.setVisibility(View.GONE);
|
||||
mClipboardStripScrollView.setVisibility(View.GONE);
|
||||
mSuggestionStripView.setVisibility(View.VISIBLE);
|
||||
mSuggestionStripView.setVisibility(stripVisibility);
|
||||
mClipboardHistoryView.setVisibility(View.GONE);
|
||||
mClipboardHistoryView.stopClipboardHistory();
|
||||
}
|
||||
|
@ -334,6 +338,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
// @see LatinIME#onComputeInset(android.inputmethodservice.InputMethodService.Insets)
|
||||
mKeyboardView.setVisibility(View.GONE);
|
||||
mSuggestionStripView.setVisibility(View.GONE);
|
||||
mStripContainer.setVisibility(getSecondaryStripVisibility());
|
||||
mClipboardStripScrollView.setVisibility(View.GONE);
|
||||
mEmojiTabStripView.setVisibility(View.VISIBLE);
|
||||
mClipboardHistoryView.setVisibility(View.GONE);
|
||||
|
@ -355,6 +360,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
mKeyboardView.setVisibility(View.GONE);
|
||||
mEmojiTabStripView.setVisibility(View.GONE);
|
||||
mSuggestionStripView.setVisibility(View.GONE);
|
||||
mStripContainer.setVisibility(getSecondaryStripVisibility());
|
||||
mClipboardStripScrollView.post(() -> mClipboardStripScrollView.fullScroll(HorizontalScrollView.FOCUS_RIGHT));
|
||||
mClipboardStripScrollView.setVisibility(View.VISIBLE);
|
||||
mEmojiPalettesView.setVisibility(View.GONE);
|
||||
|
@ -539,6 +545,10 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
}
|
||||
}
|
||||
|
||||
private static int getSecondaryStripVisibility() {
|
||||
return Settings.getValues().mSecondaryStripVisible? View.VISIBLE : View.GONE;
|
||||
}
|
||||
|
||||
// Displays a toast-like message with the provided text for a specified duration.
|
||||
private void showFakeToast(final String text, final int timeMillis) {
|
||||
if (mFakeToastView.getVisibility() == View.VISIBLE) return;
|
||||
|
@ -606,6 +616,10 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
return mKeyboardView.isShowingPopupKeysPanel();
|
||||
}
|
||||
|
||||
public boolean isShowingStripContainer() {
|
||||
return mStripContainer.isShown();
|
||||
}
|
||||
|
||||
public View getVisibleKeyboardView() {
|
||||
if (isShowingEmojiPalettes()) {
|
||||
return mEmojiPalettesView;
|
||||
|
@ -631,6 +645,8 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
return mKeyboardView;
|
||||
}
|
||||
|
||||
public FrameLayout getStripContainer() { return mStripContainer; }
|
||||
|
||||
public void deallocateMemory() {
|
||||
if (mKeyboardView != null) {
|
||||
mKeyboardView.cancelAllOngoingEvents();
|
||||
|
@ -684,6 +700,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
mClipboardStripView = mCurrentInputView.findViewById(R.id.clipboard_strip);
|
||||
mClipboardStripScrollView = mCurrentInputView.findViewById(R.id.clipboard_strip_scroll_view);
|
||||
mSuggestionStripView = mCurrentInputView.findViewById(R.id.suggestion_strip_view);
|
||||
mStripContainer = mCurrentInputView.findViewById(R.id.strip_container);
|
||||
|
||||
prefs.registerOnSharedPreferenceChangeListener(mSuggestionStripView);
|
||||
prefs.registerOnSharedPreferenceChangeListener(mClipboardHistoryView);
|
||||
|
|
|
@ -30,6 +30,7 @@ import helium314.keyboard.latin.common.Constants
|
|||
import helium314.keyboard.latin.settings.Settings
|
||||
import helium314.keyboard.latin.utils.ResourceUtils
|
||||
import helium314.keyboard.latin.utils.ToolbarKey
|
||||
import helium314.keyboard.latin.utils.ToolbarMode
|
||||
import helium314.keyboard.latin.utils.createToolbarKey
|
||||
import helium314.keyboard.latin.utils.getCodeForToolbarKey
|
||||
import helium314.keyboard.latin.utils.getCodeForToolbarKeyLongClick
|
||||
|
@ -68,8 +69,10 @@ class ClipboardHistoryView @JvmOverloads constructor(
|
|||
keyBackgroundId = keyboardViewAttr.getResourceId(R.styleable.KeyboardView_keyBackground, 0)
|
||||
keyboardViewAttr.recycle()
|
||||
val keyboardAttr = context.obtainStyledAttributes(attrs, R.styleable.Keyboard, defStyle, R.style.SuggestionStripView)
|
||||
getEnabledClipboardToolbarKeys(context.prefs())
|
||||
.forEach { toolbarKeys.add(createToolbarKey(context, KeyboardIconsSet.instance, it)) }
|
||||
if (Settings.getValues().mSecondaryStripVisible) {
|
||||
getEnabledClipboardToolbarKeys(context.prefs())
|
||||
.forEach { toolbarKeys.add(createToolbarKey(context, KeyboardIconsSet.instance, it)) }
|
||||
}
|
||||
keyboardAttr.recycle()
|
||||
fitsSystemWindows = true
|
||||
}
|
||||
|
@ -79,7 +82,7 @@ class ClipboardHistoryView @JvmOverloads constructor(
|
|||
val res = context.resources
|
||||
// The main keyboard expands to the entire this {@link KeyboardView}.
|
||||
val width = ResourceUtils.getKeyboardWidth(context, Settings.getValues()) + paddingLeft + paddingRight
|
||||
val height = ResourceUtils.getKeyboardHeight(res, Settings.getValues()) + paddingTop + paddingBottom
|
||||
val height = ResourceUtils.getSecondaryKeyboardHeight(res, Settings.getValues()) + paddingTop + paddingBottom
|
||||
setMeasuredDimension(width, height)
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
package helium314.keyboard.keyboard.clipboard
|
||||
|
||||
import android.content.Context
|
||||
import android.content.res.Resources
|
||||
import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
|
@ -22,7 +21,7 @@ class ClipboardLayoutParams(ctx: Context) {
|
|||
init {
|
||||
val res = ctx.resources
|
||||
val sv = Settings.getValues()
|
||||
val defaultKeyboardHeight = ResourceUtils.getKeyboardHeight(res, sv)
|
||||
val defaultKeyboardHeight = ResourceUtils.getSecondaryKeyboardHeight(res, sv)
|
||||
val defaultKeyboardWidth = ResourceUtils.getKeyboardWidth(ctx, sv)
|
||||
|
||||
if (sv.mNarrowKeyGaps) {
|
||||
|
|
|
@ -22,7 +22,7 @@ internal class EmojiLayoutParams(res: Resources) {
|
|||
|
||||
init {
|
||||
val sv = Settings.getValues()
|
||||
val defaultKeyboardHeight = ResourceUtils.getKeyboardHeight(res, sv)
|
||||
val defaultKeyboardHeight = ResourceUtils.getSecondaryKeyboardHeight(res, sv)
|
||||
|
||||
val keyVerticalGap = if (sv.mNarrowKeyGaps) {
|
||||
res.getFraction(R.fraction.config_key_vertical_gap_holo_narrow,
|
||||
|
|
|
@ -219,7 +219,7 @@ public final class EmojiPalettesView extends LinearLayout
|
|||
// The main keyboard expands to the entire this {@link KeyboardView}.
|
||||
final int width = ResourceUtils.getKeyboardWidth(getContext(), Settings.getValues())
|
||||
+ getPaddingLeft() + getPaddingRight();
|
||||
final int height = ResourceUtils.getKeyboardHeight(res, Settings.getValues())
|
||||
final int height = ResourceUtils.getSecondaryKeyboardHeight(res, Settings.getValues())
|
||||
+ getPaddingTop() + getPaddingBottom();
|
||||
mEmojiCategoryPageIndicatorView.mWidth = width;
|
||||
setMeasuredDimension(width, height);
|
||||
|
@ -243,8 +243,10 @@ public final class EmojiPalettesView extends LinearLayout
|
|||
if (initialized) return;
|
||||
mEmojiCategory.initialize();
|
||||
mTabStrip = (LinearLayout) KeyboardSwitcher.getInstance().getEmojiTabStrip();
|
||||
for (final EmojiCategory.CategoryProperties properties : mEmojiCategory.getShownCategories()) {
|
||||
addTab(mTabStrip, properties.mCategoryId);
|
||||
if (Settings.getValues().mSecondaryStripVisible) {
|
||||
for (final EmojiCategory.CategoryProperties properties : mEmojiCategory.getShownCategories()) {
|
||||
addTab(mTabStrip, properties.mCategoryId);
|
||||
}
|
||||
}
|
||||
|
||||
mPager = findViewById(R.id.emoji_pager);
|
||||
|
@ -404,13 +406,15 @@ public final class EmojiPalettesView extends LinearLayout
|
|||
mEmojiCategory.getCurrentCategoryId()), ! initial);
|
||||
}
|
||||
|
||||
final View old = mTabStrip.findViewWithTag((long) oldCategoryId);
|
||||
final View current = mTabStrip.findViewWithTag((long) categoryId);
|
||||
if (Settings.getValues().mSecondaryStripVisible) {
|
||||
final View old = mTabStrip.findViewWithTag((long) oldCategoryId);
|
||||
final View current = mTabStrip.findViewWithTag((long) categoryId);
|
||||
|
||||
if (old instanceof ImageView)
|
||||
Settings.getValues().mColors.setColor((ImageView) old, ColorType.EMOJI_CATEGORY);
|
||||
if (current instanceof ImageView)
|
||||
Settings.getValues().mColors.setColor((ImageView) current, ColorType.EMOJI_CATEGORY_SELECTED);
|
||||
if (old instanceof ImageView)
|
||||
Settings.getValues().mColors.setColor((ImageView) old, ColorType.EMOJI_CATEGORY);
|
||||
if (current instanceof ImageView)
|
||||
Settings.getValues().mColors.setColor((ImageView) current, ColorType.EMOJI_CATEGORY_SELECTED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ class EmojiParser(private val params: KeyboardParams, private val context: Conte
|
|||
var keyWidth = defaultKeyWidth * sqrt(Settings.getValues().mKeyboardHeightScale)
|
||||
val defaultKeyboardHeight = ResourceUtils.getDefaultKeyboardHeight(context.resources, false)
|
||||
val defaultBottomPadding = context.resources.getFraction(R.fraction.config_keyboard_bottom_padding_holo, defaultKeyboardHeight, defaultKeyboardHeight)
|
||||
val emojiKeyboardHeight = ResourceUtils.getDefaultKeyboardHeight(context.resources, false) * 0.75f + params.mVerticalGap - defaultBottomPadding - context.resources.getDimensionPixelSize(R.dimen.config_emoji_category_page_id_height)
|
||||
val emojiKeyboardHeight = defaultKeyboardHeight * 0.75f + params.mVerticalGap - defaultBottomPadding - context.resources.getDimensionPixelSize(R.dimen.config_emoji_category_page_id_height)
|
||||
var keyHeight = emojiKeyboardHeight * params.mDefaultRowHeight * Settings.getValues().mKeyboardHeightScale // still apply height scale to key
|
||||
|
||||
if (Settings.getValues().mEmojiKeyFit) {
|
||||
|
|
|
@ -87,6 +87,7 @@ import helium314.keyboard.latin.utils.StatsUtils;
|
|||
import helium314.keyboard.latin.utils.StatsUtilsManager;
|
||||
import helium314.keyboard.latin.utils.SubtypeLocaleUtils;
|
||||
import helium314.keyboard.latin.utils.SubtypeSettings;
|
||||
import helium314.keyboard.latin.utils.ToolbarMode;
|
||||
import helium314.keyboard.latin.utils.ViewLayoutUtils;
|
||||
import helium314.keyboard.settings.SettingsActivity;
|
||||
import kotlin.collections.CollectionsKt;
|
||||
|
@ -879,7 +880,8 @@ public class LatinIME extends InputMethodService implements
|
|||
mInputView = view;
|
||||
mInsetsUpdater = ViewOutlineProviderUtilsKt.setInsetsOutlineProvider(view);
|
||||
updateSoftInputWindowLayoutParameters();
|
||||
mSuggestionStripView = view.findViewById(R.id.suggestion_strip_view);
|
||||
mSuggestionStripView = mSettings.getCurrent().mToolbarMode == ToolbarMode.HIDDEN?
|
||||
null : view.findViewById(R.id.suggestion_strip_view);
|
||||
if (hasSuggestionStripView()) {
|
||||
mSuggestionStripView.setListener(this, view);
|
||||
}
|
||||
|
@ -931,8 +933,9 @@ public class LatinIME extends InputMethodService implements
|
|||
mInputLogic.onSubtypeChanged(SubtypeLocaleUtils.getCombiningRulesExtraValue(subtype),
|
||||
mSettings.getCurrent());
|
||||
loadKeyboard();
|
||||
if (mSuggestionStripView != null)
|
||||
if (hasSuggestionStripView()) {
|
||||
mSuggestionStripView.setRtl(mRichImm.getCurrentSubtype().isRtlSubtype());
|
||||
}
|
||||
}
|
||||
|
||||
/** alias to onCurrentInputMethodSubtypeChanged with a better name, as it's also used for internal switching */
|
||||
|
@ -1215,7 +1218,7 @@ public class LatinIME extends InputMethodService implements
|
|||
|
||||
@Override
|
||||
public void hideWindow() {
|
||||
if (mSuggestionStripView != null)
|
||||
if (hasSuggestionStripView() && mSettings.getCurrent().mToolbarMode == ToolbarMode.EXPANDABLE)
|
||||
mSuggestionStripView.setToolbarVisibility(false);
|
||||
mKeyboardSwitcher.onHideWindow();
|
||||
|
||||
|
@ -1271,7 +1274,7 @@ public class LatinIME extends InputMethodService implements
|
|||
return;
|
||||
}
|
||||
final View visibleKeyboardView = mKeyboardSwitcher.getWrapperView();
|
||||
if (visibleKeyboardView == null || !hasSuggestionStripView()) {
|
||||
if (visibleKeyboardView == null) {
|
||||
return;
|
||||
}
|
||||
final int inputHeight = mInputView.getHeight();
|
||||
|
@ -1283,8 +1286,13 @@ public class LatinIME extends InputMethodService implements
|
|||
mInsetsUpdater.setInsets(outInsets);
|
||||
return;
|
||||
}
|
||||
final int visibleTopY = inputHeight - visibleKeyboardView.getHeight() - mSuggestionStripView.getHeight();
|
||||
mSuggestionStripView.setMoreSuggestionsHeight(visibleTopY);
|
||||
final int stripHeight = mKeyboardSwitcher.isShowingStripContainer() ? mKeyboardSwitcher.getStripContainer().getHeight() : 0;
|
||||
final int visibleTopY = inputHeight - visibleKeyboardView.getHeight() - stripHeight;
|
||||
|
||||
if (hasSuggestionStripView()) {
|
||||
mSuggestionStripView.setMoreSuggestionsHeight(visibleTopY);
|
||||
}
|
||||
|
||||
// Need to set expanded touchable region only if a keyboard view is being shown.
|
||||
if (visibleKeyboardView.isShown()) {
|
||||
final int touchLeft = 0;
|
||||
|
@ -1368,6 +1376,10 @@ public class LatinIME extends InputMethodService implements
|
|||
@RequiresApi(api = Build.VERSION_CODES.R)
|
||||
public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull Bundle uiExtras) {
|
||||
Log.d(TAG,"onCreateInlineSuggestionsRequest called");
|
||||
if (Settings.getValues().mSuggestionStripHiddenPerUserSettings) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return InlineAutofillUtils.createInlineSuggestionRequest(mDisplayContext);
|
||||
}
|
||||
|
||||
|
@ -1629,7 +1641,7 @@ public class LatinIME extends InputMethodService implements
|
|||
dismissGestureFloatingPreviewText /* dismissDelayed */);
|
||||
}
|
||||
|
||||
public boolean hasSuggestionStripView() {
|
||||
private boolean hasSuggestionStripView() {
|
||||
return null != mSuggestionStripView;
|
||||
}
|
||||
|
||||
|
|
|
@ -145,6 +145,8 @@ object Defaults {
|
|||
const val PREF_SELECTED_SUBTYPE = ""
|
||||
const val PREF_URL_DETECTION = false
|
||||
const val PREF_DONT_SHOW_MISSING_DICTIONARY_DIALOG = false
|
||||
const val PREF_TOOLBAR_MODE = "EXPANDABLE"
|
||||
const val PREF_TOOLBAR_HIDING_GLOBAL = true
|
||||
const val PREF_QUICK_PIN_TOOLBAR_KEYS = false
|
||||
val PREF_PINNED_TOOLBAR_KEYS = defaultPinnedToolbarPref
|
||||
val PREF_TOOLBAR_KEYS = defaultToolbarPref
|
||||
|
|
|
@ -37,6 +37,7 @@ import helium314.keyboard.latin.utils.StatsUtils;
|
|||
import helium314.keyboard.latin.utils.SubtypeSettings;
|
||||
import helium314.keyboard.latin.utils.ToolbarKey;
|
||||
import helium314.keyboard.latin.utils.ToolbarUtilsKt;
|
||||
import helium314.keyboard.latin.utils.ToolbarMode;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
|
@ -168,6 +169,8 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
|
|||
public static final String PREF_REMOVE_REDUNDANT_POPUPS = "remove_redundant_popups";
|
||||
public static final String PREF_SPACE_BAR_TEXT = "space_bar_text";
|
||||
public static final String PREF_TIMESTAMP_FORMAT = "timestamp_format";
|
||||
public static final String PREF_TOOLBAR_MODE = "toolbar_mode";
|
||||
public static final String PREF_TOOLBAR_HIDING_GLOBAL = "toolbar_hiding_global";
|
||||
|
||||
// Emoji
|
||||
public static final String PREF_EMOJI_MAX_SDK = "emoji_max_sdk";
|
||||
|
@ -324,6 +327,10 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
|
|||
mPrefs.edit().putBoolean(Settings.PREF_ALWAYS_INCOGNITO_MODE, !oldValue).apply();
|
||||
}
|
||||
|
||||
public static ToolbarMode readToolbarMode(final SharedPreferences prefs) {
|
||||
return ToolbarMode.valueOf(prefs.getString(PREF_TOOLBAR_MODE, Defaults.PREF_TOOLBAR_MODE));
|
||||
}
|
||||
|
||||
public static int readHorizontalSpaceSwipe(final SharedPreferences prefs) {
|
||||
return switch (prefs.getString(PREF_SPACE_HORIZONTAL_SWIPE, Defaults.PREF_SPACE_HORIZONTAL_SWIPE)) {
|
||||
case "move_cursor" -> KeyboardActionListener.SWIPE_MOVE_CURSOR;
|
||||
|
|
|
@ -31,6 +31,7 @@ import helium314.keyboard.latin.utils.JniUtils;
|
|||
import helium314.keyboard.latin.utils.ScriptUtils;
|
||||
import helium314.keyboard.latin.utils.SubtypeSettings;
|
||||
import helium314.keyboard.latin.utils.SubtypeUtilsKt;
|
||||
import helium314.keyboard.latin.utils.ToolbarMode;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
@ -114,6 +115,8 @@ public class SettingsValues {
|
|||
public final boolean mUrlDetectionEnabled;
|
||||
public final float mBottomPaddingScale;
|
||||
public final float mSidePaddingScale;
|
||||
public final ToolbarMode mToolbarMode;
|
||||
public final boolean mToolbarHidingGlobal;
|
||||
public final boolean mAutoShowToolbar;
|
||||
public final boolean mAutoHideToolbar;
|
||||
public final boolean mAlphaAfterEmojiInEmojiView;
|
||||
|
@ -131,6 +134,8 @@ public class SettingsValues {
|
|||
public final InputAttributes mInputAttributes;
|
||||
|
||||
// Deduced settings
|
||||
public final boolean mSuggestionStripHiddenPerUserSettings;
|
||||
public final boolean mSecondaryStripVisible;
|
||||
public final int mKeypressVibrationDuration;
|
||||
public final float mKeypressSoundVolume;
|
||||
public final boolean mAutoCorrectionEnabledPerUserSettings;
|
||||
|
@ -160,6 +165,8 @@ public class SettingsValues {
|
|||
mInputAttributes = inputAttributes;
|
||||
|
||||
// Get the settings preferences
|
||||
mToolbarMode = Settings.readToolbarMode(prefs);
|
||||
mToolbarHidingGlobal = prefs.getBoolean(Settings.PREF_TOOLBAR_HIDING_GLOBAL, Defaults.PREF_TOOLBAR_HIDING_GLOBAL);
|
||||
mAutoCap = prefs.getBoolean(Settings.PREF_AUTO_CAP, Defaults.PREF_AUTO_CAP) && ScriptUtils.scriptSupportsUppercase(mLocale);
|
||||
mVibrateOn = Settings.readVibrationEnabled(prefs);
|
||||
mVibrateInDndMode = prefs.getBoolean(Settings.PREF_VIBRATE_IN_DND_MODE, Defaults.PREF_VIBRATE_IN_DND_MODE);
|
||||
|
@ -180,7 +187,7 @@ public class SettingsValues {
|
|||
mShowTldPopupKeys = prefs.getBoolean(Settings.PREF_SHOW_TLD_POPUP_KEYS, Defaults.PREF_SHOW_TLD_POPUP_KEYS);
|
||||
mSpaceForLangChange = prefs.getBoolean(Settings.PREF_SPACE_TO_CHANGE_LANG, Defaults.PREF_SPACE_TO_CHANGE_LANG);
|
||||
mShowsEmojiKey = prefs.getBoolean(Settings.PREF_SHOW_EMOJI_KEY, Defaults.PREF_SHOW_EMOJI_KEY);
|
||||
mVarToolbarDirection = prefs.getBoolean(Settings.PREF_VARIABLE_TOOLBAR_DIRECTION, Defaults.PREF_VARIABLE_TOOLBAR_DIRECTION);
|
||||
mVarToolbarDirection = mToolbarMode != ToolbarMode.HIDDEN && prefs.getBoolean(Settings.PREF_VARIABLE_TOOLBAR_DIRECTION, Defaults.PREF_VARIABLE_TOOLBAR_DIRECTION);
|
||||
mUsePersonalizedDicts = prefs.getBoolean(Settings.PREF_KEY_USE_PERSONALIZED_DICTS, Defaults.PREF_KEY_USE_PERSONALIZED_DICTS);
|
||||
mUseDoubleSpacePeriod = prefs.getBoolean(Settings.PREF_KEY_USE_DOUBLE_SPACE_PERIOD, Defaults.PREF_KEY_USE_DOUBLE_SPACE_PERIOD)
|
||||
&& inputAttributes.mIsGeneralTextInput;
|
||||
|
@ -209,7 +216,7 @@ public class SettingsValues {
|
|||
mSplitKeyboardSpacerRelativeWidth = mIsSplitKeyboardEnabled
|
||||
? Math.min(Math.max((displayWidthDp - 600) / 600f + 0.15f, 0.15f), 0.35f) * Settings.readSplitSpacerScale(prefs, isLandscape)
|
||||
: 0f;
|
||||
mQuickPinToolbarKeys = prefs.getBoolean(Settings.PREF_QUICK_PIN_TOOLBAR_KEYS, Defaults.PREF_QUICK_PIN_TOOLBAR_KEYS);
|
||||
mQuickPinToolbarKeys = mToolbarMode == ToolbarMode.EXPANDABLE && prefs.getBoolean(Settings.PREF_QUICK_PIN_TOOLBAR_KEYS, Defaults.PREF_QUICK_PIN_TOOLBAR_KEYS);
|
||||
mScreenMetrics = Settings.readScreenMetrics(res);
|
||||
|
||||
// Compute other readable settings
|
||||
|
@ -224,13 +231,15 @@ public class SettingsValues {
|
|||
mGestureFloatingPreviewDynamicEnabled = Settings.readGestureDynamicPreviewEnabled(prefs);
|
||||
mGestureFastTypingCooldown = prefs.getInt(Settings.PREF_GESTURE_FAST_TYPING_COOLDOWN, Defaults.PREF_GESTURE_FAST_TYPING_COOLDOWN);
|
||||
mGestureTrailFadeoutDuration = prefs.getInt(Settings.PREF_GESTURE_TRAIL_FADEOUT_DURATION, Defaults.PREF_GESTURE_TRAIL_FADEOUT_DURATION);
|
||||
mSuggestionStripHiddenPerUserSettings = mToolbarMode == ToolbarMode.HIDDEN || mToolbarMode == ToolbarMode.TOOLBAR_KEYS;
|
||||
mOverrideShowingSuggestions = mInputAttributes.mMayOverrideShowingSuggestions
|
||||
&& prefs.getBoolean(Settings.PREF_ALWAYS_SHOW_SUGGESTIONS, Defaults.PREF_ALWAYS_SHOW_SUGGESTIONS)
|
||||
&& ((inputAttributes.mInputType & InputType.TYPE_MASK_VARIATION) != InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT
|
||||
|| !prefs.getBoolean(Settings.PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT, Defaults.PREF_ALWAYS_SHOW_SUGGESTIONS_EXCEPT_WEB_TEXT));
|
||||
final boolean suggestionsEnabled = prefs.getBoolean(Settings.PREF_SHOW_SUGGESTIONS, Defaults.PREF_SHOW_SUGGESTIONS);
|
||||
mSuggestionsEnabledPerUserSettings = (mInputAttributes.mShouldShowSuggestions && suggestionsEnabled)
|
||||
|| mOverrideShowingSuggestions;
|
||||
mSuggestionsEnabledPerUserSettings = ((mInputAttributes.mShouldShowSuggestions && suggestionsEnabled)
|
||||
|| mOverrideShowingSuggestions) && !mSuggestionStripHiddenPerUserSettings;
|
||||
mSecondaryStripVisible = mToolbarMode != ToolbarMode.HIDDEN || ! mToolbarHidingGlobal;
|
||||
mIncognitoModeEnabled = prefs.getBoolean(Settings.PREF_ALWAYS_INCOGNITO_MODE, Defaults.PREF_ALWAYS_INCOGNITO_MODE) || mInputAttributes.mNoLearning
|
||||
|| mInputAttributes.mIsPasswordField;
|
||||
mKeyboardHeightScale = prefs.getFloat(Settings.PREF_KEYBOARD_HEIGHT_SCALE, Defaults.PREF_KEYBOARD_HEIGHT_SCALE);
|
||||
|
@ -275,8 +284,8 @@ public class SettingsValues {
|
|||
mBottomPaddingScale = Settings.readBottomPaddingScale(prefs, isLandscape);
|
||||
mSidePaddingScale = Settings.readSidePaddingScale(prefs, isLandscape);
|
||||
mLongPressSymbolsForNumpad = prefs.getBoolean(Settings.PREFS_LONG_PRESS_SYMBOLS_FOR_NUMPAD, Defaults.PREFS_LONG_PRESS_SYMBOLS_FOR_NUMPAD);
|
||||
mAutoShowToolbar = prefs.getBoolean(Settings.PREF_AUTO_SHOW_TOOLBAR, Defaults.PREF_AUTO_SHOW_TOOLBAR);
|
||||
mAutoHideToolbar = suggestionsEnabled && prefs.getBoolean(Settings.PREF_AUTO_HIDE_TOOLBAR, Defaults.PREF_AUTO_HIDE_TOOLBAR);
|
||||
mAutoShowToolbar = mToolbarMode == ToolbarMode.EXPANDABLE && prefs.getBoolean(Settings.PREF_AUTO_SHOW_TOOLBAR, Defaults.PREF_AUTO_SHOW_TOOLBAR);
|
||||
mAutoHideToolbar = mSuggestionsEnabledPerUserSettings && prefs.getBoolean(Settings.PREF_AUTO_HIDE_TOOLBAR, Defaults.PREF_AUTO_HIDE_TOOLBAR);
|
||||
mAlphaAfterEmojiInEmojiView = prefs.getBoolean(Settings.PREF_ABC_AFTER_EMOJI, Defaults.PREF_ABC_AFTER_EMOJI);
|
||||
mAlphaAfterClipHistoryEntry = prefs.getBoolean(Settings.PREF_ABC_AFTER_CLIP, Defaults.PREF_ABC_AFTER_CLIP);
|
||||
mAlphaAfterSymbolAndSpace = prefs.getBoolean(Settings.PREF_ABC_AFTER_SYMBOL_SPACE, Defaults.PREF_ABC_AFTER_SYMBOL_SPACE);
|
||||
|
|
|
@ -59,6 +59,7 @@ import helium314.keyboard.latin.suggestions.PopupSuggestionsView.MoreSuggestions
|
|||
import helium314.keyboard.latin.utils.KtxKt;
|
||||
import helium314.keyboard.latin.utils.Log;
|
||||
import helium314.keyboard.latin.utils.ToolbarKey;
|
||||
import helium314.keyboard.latin.utils.ToolbarMode;
|
||||
import helium314.keyboard.latin.utils.ToolbarUtilsKt;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -107,6 +108,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
|
|||
private final SuggestionStripLayoutHelper mLayoutHelper;
|
||||
private final StripVisibilityGroup mStripVisibilityGroup;
|
||||
private boolean isExternalSuggestionVisible = false; // Required to disable the more suggestions if other suggestions are visible
|
||||
private final ToolbarMode mToolbarMode;
|
||||
|
||||
private static class StripVisibilityGroup {
|
||||
private final View mSuggestionStripView;
|
||||
|
@ -153,6 +155,11 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
|
|||
mPinnedKeys = findViewById(R.id.pinned_keys);
|
||||
mToolbar = findViewById(R.id.toolbar);
|
||||
mToolbarContainer = findViewById(R.id.toolbar_container);
|
||||
mToolbarMode = Settings.getValues().mToolbarMode;
|
||||
|
||||
if (mToolbarMode == ToolbarMode.TOOLBAR_KEYS) {
|
||||
setToolbarVisibility(true);
|
||||
}
|
||||
|
||||
final Typeface customTypeface = Settings.getInstance().getCustomTypeface();
|
||||
for (int pos = 0; pos < SuggestedWords.MAX_SUGGESTIONS; pos++) {
|
||||
|
@ -192,11 +199,13 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
|
|||
getResources().getDimensionPixelSize(R.dimen.config_suggestions_strip_edge_key_width),
|
||||
LinearLayout.LayoutParams.MATCH_PARENT
|
||||
);
|
||||
for (final ToolbarKey key : ToolbarUtilsKt.getEnabledToolbarKeys(prefs)) {
|
||||
final ImageButton button = createToolbarKey(context, iconsSet, key);
|
||||
button.setLayoutParams(toolbarKeyLayoutParams);
|
||||
setupKey(button, colors);
|
||||
mToolbar.addView(button);
|
||||
if (mToolbarMode == ToolbarMode.TOOLBAR_KEYS || mToolbarMode == ToolbarMode.EXPANDABLE) {
|
||||
for (final ToolbarKey key : ToolbarUtilsKt.getEnabledToolbarKeys(prefs)) {
|
||||
final ImageButton button = createToolbarKey(context, iconsSet, key);
|
||||
button.setLayoutParams(toolbarKeyLayoutParams);
|
||||
setupKey(button, colors);
|
||||
mToolbar.addView(button);
|
||||
}
|
||||
}
|
||||
|
||||
final int toolbarHeight = Math.min(mToolbarExpandKey.getLayoutParams().height, (int) getResources().getDimension(R.dimen.config_suggestions_strip_height));
|
||||
|
@ -208,22 +217,23 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
|
|||
mEnabledToolKeyBackground.setGradientType(GradientDrawable.RADIAL_GRADIENT);
|
||||
mEnabledToolKeyBackground.setGradientRadius(mToolbarExpandKey.getLayoutParams().height / 2f); // nothing else has a usable height at this state
|
||||
|
||||
mToolbarExpandKey.setOnClickListener(this);
|
||||
mToolbarExpandKey.setImageDrawable(Settings.getValues().mIncognitoModeEnabled ? mIncognitoIcon : mToolbarArrowIcon);
|
||||
colors.setColor(mToolbarExpandKey, ColorType.TOOL_BAR_EXPAND_KEY);
|
||||
colors.setColor(mToolbarExpandKey.getBackground(), ColorType.TOOL_BAR_EXPAND_KEY_BACKGROUND);
|
||||
|
||||
for (final ToolbarKey pinnedKey : ToolbarUtilsKt.getPinnedToolbarKeys(prefs)) {
|
||||
final ImageButton button = createToolbarKey(context, iconsSet, pinnedKey);
|
||||
button.setLayoutParams(toolbarKeyLayoutParams);
|
||||
setupKey(button, colors);
|
||||
mPinnedKeys.addView(button);
|
||||
final View pinnedKeyInToolbar = mToolbar.findViewWithTag(pinnedKey);
|
||||
if (pinnedKeyInToolbar != null && Settings.getValues().mQuickPinToolbarKeys)
|
||||
pinnedKeyInToolbar.setBackground(mEnabledToolKeyBackground);
|
||||
if (!Settings.getValues().mSuggestionStripHiddenPerUserSettings) {
|
||||
for (final ToolbarKey pinnedKey : ToolbarUtilsKt.getPinnedToolbarKeys(prefs)) {
|
||||
final ImageButton button = createToolbarKey(context, iconsSet, pinnedKey);
|
||||
button.setLayoutParams(toolbarKeyLayoutParams);
|
||||
setupKey(button, colors);
|
||||
mPinnedKeys.addView(button);
|
||||
final View pinnedKeyInToolbar = mToolbar.findViewWithTag(pinnedKey);
|
||||
if (pinnedKeyInToolbar != null && Settings.getValues().mQuickPinToolbarKeys)
|
||||
pinnedKeyInToolbar.setBackground(mEnabledToolKeyBackground);
|
||||
}
|
||||
}
|
||||
|
||||
colors.setBackground(this, ColorType.STRIP_BACKGROUND);
|
||||
updateKeys();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -248,7 +258,14 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
|
|||
final View pinnedVoiceKey = mPinnedKeys.findViewWithTag(ToolbarKey.VOICE);
|
||||
if (pinnedVoiceKey != null)
|
||||
pinnedVoiceKey.setVisibility(currentSettingsValues.mShowsVoiceInputKey ? VISIBLE : GONE);
|
||||
mToolbarExpandKey.setImageDrawable(currentSettingsValues.mIncognitoModeEnabled ? mIncognitoIcon : mToolbarArrowIcon);
|
||||
final boolean toolbarIsExpandable = mToolbarMode == ToolbarMode.EXPANDABLE;
|
||||
if (currentSettingsValues.mIncognitoModeEnabled) {
|
||||
mToolbarExpandKey.setImageDrawable(mIncognitoIcon);
|
||||
mToolbarExpandKey.setVisibility(VISIBLE);
|
||||
} else {
|
||||
mToolbarExpandKey.setImageDrawable(mToolbarArrowIcon);
|
||||
mToolbarExpandKey.setVisibility(toolbarIsExpandable ? VISIBLE : GONE);
|
||||
}
|
||||
mToolbarExpandKey.setScaleX((mToolbarContainer.getVisibility() != VISIBLE ? 1f : -1f) * mRtl);
|
||||
|
||||
// hide pinned keys if device is locked, and avoid expanding toolbar
|
||||
|
@ -256,7 +273,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
|
|||
final boolean hideToolbarKeys = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1
|
||||
? km.isDeviceLocked()
|
||||
: km.isKeyguardLocked();
|
||||
mToolbarExpandKey.setOnClickListener(hideToolbarKeys ? null : this);
|
||||
mToolbarExpandKey.setOnClickListener(hideToolbarKeys || !toolbarIsExpandable ? null : this);
|
||||
mPinnedKeys.setVisibility(hideToolbarKeys ? GONE : mSuggestionsStrip.getVisibility());
|
||||
isExternalSuggestionVisible = false;
|
||||
}
|
||||
|
@ -275,7 +292,6 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
|
|||
public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) {
|
||||
clear();
|
||||
setRtl(isRtlLanguage);
|
||||
updateKeys();
|
||||
mSuggestedWords = suggestedWords;
|
||||
mStartIndexOfMoreSuggestions = mLayoutHelper.layoutAndReturnStartIndexOfMoreSuggestions(
|
||||
getContext(), mSuggestedWords, mSuggestionsStrip, this);
|
||||
|
|
|
@ -55,6 +55,15 @@ public final class ResourceUtils {
|
|||
return windowBounds.width() - insets.left - insets.right;
|
||||
}
|
||||
|
||||
public static int getSecondaryKeyboardHeight(final Resources res, final SettingsValues settingsValues) {
|
||||
final int keyboardHeight = getKeyboardHeight(res, settingsValues);
|
||||
if (settingsValues.mToolbarMode == ToolbarMode.HIDDEN && ! settingsValues.mToolbarHidingGlobal) {
|
||||
// Small adjustment to match the height of the main keyboard which has a hidden strip container.
|
||||
return keyboardHeight - (int) res.getDimension(R.dimen.config_suggestions_strip_height);
|
||||
}
|
||||
return keyboardHeight;
|
||||
}
|
||||
|
||||
public static int getKeyboardHeight(final Resources res, final SettingsValues settingsValues) {
|
||||
final int defaultKeyboardHeight = getDefaultKeyboardHeight(res, settingsValues.mShowsNumberRow);
|
||||
// mKeyboardHeightScale Ranges from [.5,1.5], from xml/prefs_screen_appearance.xml
|
||||
|
|
|
@ -115,6 +115,10 @@ enum class ToolbarKey {
|
|||
PAGE_UP, PAGE_DOWN, FULL_LEFT, FULL_RIGHT, PAGE_START, PAGE_END
|
||||
}
|
||||
|
||||
enum class ToolbarMode {
|
||||
EXPANDABLE, TOOLBAR_KEYS, SUGGESTION_STRIP, HIDDEN,
|
||||
}
|
||||
|
||||
val toolbarKeyStrings = entries.associateWithTo(EnumMap(ToolbarKey::class.java)) { it.toString().lowercase(Locale.US) }
|
||||
|
||||
val defaultToolbarPref by lazy {
|
||||
|
|
|
@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.size
|
|||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
|
@ -28,29 +29,47 @@ import helium314.keyboard.keyboard.internal.KeyboardIconsSet
|
|||
import helium314.keyboard.latin.R
|
||||
import helium314.keyboard.latin.settings.Defaults
|
||||
import helium314.keyboard.latin.settings.Settings
|
||||
import helium314.keyboard.settings.Setting
|
||||
import helium314.keyboard.settings.preferences.Preference
|
||||
import helium314.keyboard.settings.preferences.ReorderSwitchPreference
|
||||
import helium314.keyboard.latin.utils.Log
|
||||
import helium314.keyboard.latin.utils.ToolbarMode
|
||||
import helium314.keyboard.latin.utils.getActivity
|
||||
import helium314.keyboard.latin.utils.getStringResourceOrName
|
||||
import helium314.keyboard.latin.utils.prefs
|
||||
import helium314.keyboard.settings.SearchSettingsScreen
|
||||
import helium314.keyboard.settings.preferences.SwitchPreference
|
||||
import helium314.keyboard.settings.Setting
|
||||
import helium314.keyboard.settings.SettingsActivity
|
||||
import helium314.keyboard.settings.Theme
|
||||
import helium314.keyboard.settings.dialogs.ToolbarKeysCustomizer
|
||||
import helium314.keyboard.settings.initPreview
|
||||
import helium314.keyboard.settings.preferences.ListPreference
|
||||
import helium314.keyboard.settings.preferences.Preference
|
||||
import helium314.keyboard.settings.preferences.ReorderSwitchPreference
|
||||
import helium314.keyboard.settings.preferences.SwitchPreference
|
||||
import helium314.keyboard.settings.previewDark
|
||||
|
||||
@Composable
|
||||
fun ToolbarScreen(
|
||||
onClickBack: () -> Unit,
|
||||
) {
|
||||
val prefs = LocalContext.current.prefs()
|
||||
val b = (LocalContext.current.getActivity() as? SettingsActivity)?.prefChanged?.collectAsState()
|
||||
if ((b?.value ?: 0) < 0)
|
||||
Log.v("irrelevant", "stupid way to trigger recomposition on preference change")
|
||||
val toolbarMode = Settings.readToolbarMode(prefs)
|
||||
val items = listOf(
|
||||
Settings.PREF_TOOLBAR_KEYS,
|
||||
Settings.PREF_PINNED_TOOLBAR_KEYS,
|
||||
Settings.PREF_CLIPBOARD_TOOLBAR_KEYS,
|
||||
Settings.PREF_TOOLBAR_CUSTOM_KEY_CODES,
|
||||
Settings.PREF_QUICK_PIN_TOOLBAR_KEYS,
|
||||
Settings.PREF_AUTO_SHOW_TOOLBAR,
|
||||
Settings.PREF_AUTO_HIDE_TOOLBAR,
|
||||
Settings.PREF_VARIABLE_TOOLBAR_DIRECTION
|
||||
Settings.PREF_TOOLBAR_MODE,
|
||||
if (toolbarMode == ToolbarMode.HIDDEN) Settings.PREF_TOOLBAR_HIDING_GLOBAL else null,
|
||||
if (toolbarMode in listOf(ToolbarMode.EXPANDABLE, ToolbarMode.TOOLBAR_KEYS))
|
||||
Settings.PREF_TOOLBAR_KEYS else null,
|
||||
if (toolbarMode in listOf(ToolbarMode.EXPANDABLE, ToolbarMode.SUGGESTION_STRIP))
|
||||
Settings.PREF_PINNED_TOOLBAR_KEYS else null,
|
||||
if (toolbarMode in listOf(ToolbarMode.EXPANDABLE, ToolbarMode.TOOLBAR_KEYS))
|
||||
Settings.PREF_CLIPBOARD_TOOLBAR_KEYS else null,
|
||||
if (toolbarMode in listOf(ToolbarMode.EXPANDABLE, ToolbarMode.TOOLBAR_KEYS))
|
||||
Settings.PREF_TOOLBAR_CUSTOM_KEY_CODES else null,
|
||||
if (toolbarMode == ToolbarMode.EXPANDABLE) Settings.PREF_QUICK_PIN_TOOLBAR_KEYS else null,
|
||||
if (toolbarMode == ToolbarMode.EXPANDABLE) Settings.PREF_AUTO_SHOW_TOOLBAR else null,
|
||||
if (toolbarMode == ToolbarMode.EXPANDABLE) Settings.PREF_AUTO_HIDE_TOOLBAR else null,
|
||||
if (toolbarMode != ToolbarMode.HIDDEN) Settings.PREF_VARIABLE_TOOLBAR_DIRECTION else null,
|
||||
)
|
||||
SearchSettingsScreen(
|
||||
onClickBack = onClickBack,
|
||||
|
@ -60,6 +79,23 @@ fun ToolbarScreen(
|
|||
}
|
||||
|
||||
fun createToolbarSettings(context: Context) = listOf(
|
||||
Setting(context, Settings.PREF_TOOLBAR_MODE, R.string.toolbar_mode) { setting ->
|
||||
val ctx = LocalContext.current
|
||||
val items =
|
||||
ToolbarMode.entries.map { it.name.lowercase().getStringResourceOrName("toolbar_mode_", ctx) to it.name }
|
||||
ListPreference(
|
||||
setting,
|
||||
items,
|
||||
Defaults.PREF_TOOLBAR_MODE
|
||||
) {
|
||||
KeyboardSwitcher.getInstance().setThemeNeedsReload()
|
||||
}
|
||||
},
|
||||
Setting(context, Settings.PREF_TOOLBAR_HIDING_GLOBAL, R.string.toolbar_hiding_global) {
|
||||
SwitchPreference(it, Defaults.PREF_TOOLBAR_HIDING_GLOBAL) {
|
||||
KeyboardSwitcher.getInstance().setThemeNeedsReload()
|
||||
}
|
||||
},
|
||||
Setting(context, Settings.PREF_TOOLBAR_KEYS, R.string.toolbar_keys) {
|
||||
ReorderSwitchPreference(it, Defaults.PREF_TOOLBAR_KEYS)
|
||||
},
|
||||
|
|
|
@ -284,6 +284,18 @@
|
|||
<string name="popup_keys_language_priority" tools:keep="@string/popup_keys_language_priority">Language (priority)</string>
|
||||
<string name="popup_keys_layout" tools:keep="@string/popup_keys_layout">Layout</string>
|
||||
<string name="popup_keys_symbols" tools:keep="@string/popup_keys_symbols">Symbols</string>
|
||||
<!-- Title of the setting to set the toolbar mode -->
|
||||
<string name="toolbar_mode">Toolbar mode</string>
|
||||
<!-- Option to set the toolbar mode to show an expandable toolbar -->
|
||||
<string name="toolbar_mode_expandable">Toolbar keys and suggestions</string>
|
||||
<!-- Option to set the toolbar mode to show the toolbar keys only -->
|
||||
<string name="toolbar_mode_toolbar_keys">Toolbar keys only</string>
|
||||
<!-- Option to set the toolbar mode to show the suggestions strip only -->
|
||||
<string name="toolbar_mode_suggestion_strip">Suggestions only</string>
|
||||
<!-- Option to set the toolbar mode to hidden -->
|
||||
<string name="toolbar_mode_hidden">Hidden</string>
|
||||
<!-- Option to hide clipboard and emoji toolbars when main toolbar is hidden -->
|
||||
<string name="toolbar_hiding_global">Hide clipboard and emoji toolbars too</string>
|
||||
<!-- Title of the setting to set toolbar keys -->
|
||||
<string name="toolbar_keys">Select toolbar keys</string>
|
||||
<!-- Names of the toolbar keys-->
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue