diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d111955c..4104b1bd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/MainViewHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/MainViewHandler.java index 65db41f4..0fa99fd9 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/MainViewHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/MainViewHandler.java @@ -19,6 +19,7 @@ import io.github.sspanak.tt9.ui.main.ResizableMainView; abstract public class MainViewHandler extends HotkeyHandler { OrientationListener orientationListener; + private boolean dragResize = true; private float normalizedWidth = -1; private float normalizedHeight = -1; private int width = 0; @@ -38,6 +39,7 @@ abstract public class MainViewHandler extends HotkeyHandler { @Override protected boolean onStart(InputConnection connection, EditorInfo field) { resetNormalizedDimensions(); + dragResize = settings.getDragResize(); return super.onStart(connection, field); } @@ -62,6 +64,11 @@ abstract public class MainViewHandler extends HotkeyHandler { } + public boolean isDragResizeOn() { + return dragResize; + } + + public boolean isInputLimited() { return inputType.isLimited(); } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java index 2eb4ef13..e583a4b9 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java @@ -24,6 +24,7 @@ public class AppearanceScreen extends BaseScreenFragment { private void createMainSection() { (new ItemStatusIcon(findPreference(ItemStatusIcon.NAME), activity.getSettings())).populate(); + (new ItemDragResize(findPreference(ItemDragResize.NAME), activity.getSettings())).populate(); ItemAlignment alignment = new ItemAlignment(findPreference(ItemAlignment.NAME), activity.getSettings()); ItemNumpadKeyHeight numpadKeyHeight = new ItemNumpadKeyHeight(findPreference(ItemNumpadKeyHeight.NAME), activity.getSettings()); diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemDragResize.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemDragResize.java new file mode 100644 index 00000000..8918abe1 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemDragResize.java @@ -0,0 +1,29 @@ +package io.github.sspanak.tt9.preferences.screens.appearance; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.preference.SwitchPreferenceCompat; + +import io.github.sspanak.tt9.hacks.DeviceInfo; +import io.github.sspanak.tt9.preferences.settings.SettingsStore; + +public class ItemDragResize { + public final static String NAME = "pref_drag_resize"; + + private final SwitchPreferenceCompat item; + private final SettingsStore settings; + + public ItemDragResize(@Nullable SwitchPreferenceCompat item, @NonNull SettingsStore settings) { + this.item = item; + this.settings = settings; + } + + public ItemDragResize populate() { + if (item != null) { + item.setVisible(!DeviceInfo.noTouchScreen(item.getContext())); + item.setChecked(settings.getDragResize()); + } + + return this; + } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java index b12d0902..4019ca9b 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java @@ -63,6 +63,10 @@ public class SettingsUI extends SettingsTyping { } } + public boolean getDragResize() { + return prefs.getBoolean("pref_drag_resize", true); + } + public boolean getHapticFeedback() { return prefs.getBoolean("pref_haptic_feedback", true); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/BaseSwipeableKey.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/BaseSwipeableKey.java index 0b89465e..a4f6e9f4 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/BaseSwipeableKey.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/BaseSwipeableKey.java @@ -60,6 +60,12 @@ abstract public class BaseSwipeableKey extends BaseSoftKeyWithSideText { } } + protected void resetSwipeThresholds() { + SWIPE_X_THRESHOLD = 0; + SWIPE_Y_THRESHOLD = 0; + initSwipeThresholds(); + } + protected float getHoldDurationThreshold() { return SettingsStore.SOFT_KEY_REPEAT_DELAY * 9; } protected float getSwipeYThreshold() { return getResources().getDimensionPixelSize(R.dimen.numpad_key_height) * SettingsStore.SOFT_KEY_AMOUNT_OF_KEY_SIZE_FOR_SWIPE; } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeySettings.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeySettings.java index 46feaffb..cc312f6d 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeySettings.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeySettings.java @@ -19,14 +19,18 @@ public class SoftKeySettings extends BaseSwipeableKey { super(context, attrs, defStyleAttr); } + private boolean isDragResizeOn() { + return tt9 != null && tt9.isDragResizeOn(); + } + public void setMainView(ResizableMainView mainView) { this.mainView = mainView; } // this key does not support holding at the moment, so just prevent it @Override protected float getHoldDurationThreshold() { return 1000; } - @Override protected float getSwipeXThreshold() { return getResources().getDimensionPixelSize(R.dimen.numpad_key_height) * 0.75f; } - @Override protected float getSwipeYThreshold() { return getResources().getDimensionPixelSize(R.dimen.numpad_key_height) / 4.0f; } + @Override protected float getSwipeXThreshold() { return isDragResizeOn() ? getResources().getDimensionPixelSize(R.dimen.numpad_key_height) * 0.75f : Integer.MAX_VALUE; } + @Override protected float getSwipeYThreshold() { return isDragResizeOn() ? getResources().getDimensionPixelSize(R.dimen.numpad_key_height) / 4.0f : Integer.MAX_VALUE; } @Override protected boolean handleRelease() { @@ -64,26 +68,32 @@ public class SoftKeySettings extends BaseSwipeableKey { @Override protected String getTopText() { - return getContext().getString(R.string.key_dpad_up); + return isDragResizeOn() ? getContext().getString(R.string.key_dpad_up) : ""; } @Override protected String getRightText() { - return getContext().getString(R.string.key_dpad_right); + return isDragResizeOn() ? getContext().getString(R.string.key_dpad_right) : ""; } @Override protected String getBottomText() { - return getContext().getString(R.string.key_dpad_down); + return isDragResizeOn() ? getContext().getString(R.string.key_dpad_down) : ""; } @Override protected String getLeftText() { - return getContext().getString(R.string.key_dpad_left); + return isDragResizeOn() ? getContext().getString(R.string.key_dpad_left) : ""; } @Override protected float getCentralIconScale() { - return super.getCentralIconScale() * 0.9f; + return isDragResizeOn() ? super.getCentralIconScale() * 0.9f : super.getCentralIconScale(); + } + + @Override + public void render() { + resetSwipeThresholds(); + super.render(); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java index 35c5cdba..a172db76 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java @@ -400,7 +400,7 @@ public class SuggestionsBar { private boolean onTouch(View v, MotionEvent event) { - if (!isEmpty()) { + if (!isEmpty() || !settings.getDragResize()) { return false; } diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index b52682be..46bfbb57 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -122,6 +122,7 @@ Автоматично започвайте изречения с главна буква. (Не е възможно на всички езици) Подсказващ режим Клавиатура + Позволява преоразмеряване и местене на клавиатурата чрез влачене на лентата на състоянието или клавиша за настройки. Символ при двойно натисната „0“ Нов ред Интервал @@ -206,4 +207,5 @@ Бутон „%1$s“ е зададен за функция „%2$s“. Искате ли да го зададете за „%3$s“? * Натиснете или задръжте клавиш, за да го присвоите на функцията „%1$s“.\n\n* Натиснете 0, за да отмените.\n\n* Натиснете 2, за да деактивирате функцията. Показвай текст при съставяне + Оразмеряване чрез влачене diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 42dc8ef5..db0f1923 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -121,6 +121,7 @@ Laden Spenden Wenn Ihnen %1$s gefällt, könnten Sie mir ein Bier spendieren. + Größenänderung und Verschieben der Tastatur durch Ziehen der Statusleiste oder der Einstellungs-Taste aktivieren. Zeichen bei doppeltem Drücken der Taste „0“ Immer im Vordergrund Andere Anwendungen nicht erlauben, %1$s zu überdecken oder vom Bildschirm zu schieben. @@ -208,4 +209,5 @@ Filter löschen Einstellungsbildschirm anzeigen Zusammengesetzten Text anzeigen + Größe durch Ziehen ändern diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index c5f1903a..186a7a77 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -72,6 +72,7 @@ Mostrar teclas de desplazamiento en ambos lados de la lista de sugerencias de palabras. Espacio automático Insertar un espacio automático después de palabras y signos de puntuación. + \tHabilitar el redimensionamiento y movimiento del teclado arrastrando la barra de estado o la tecla de Configuración. Carácter cuando se presiona \"0\" dos veces Error al cargar. Palabra inválida en la línea %1$d del idioma \"%2$s\". Error al cargar el diccionario para el idioma \"%1$s\" (%2$s). @@ -206,4 +207,5 @@ La tecla \"%1$s\" ya está asignada a la función \"%2$s\". ¿Desea asignarla a \"%3$s\"? * Presione o mantenga pulsada una tecla para asignarla a la función \"%1$s\".\n\n* Presione 0 para cancelar.\n\n* Presione 2 para desactivar la función. Mostrar texto en composición + Redimensionar arrastrando diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index a5d08035..a67e26f6 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -105,6 +105,7 @@ Baisser le volume Augmenter le volume Nouvelle ligne + Activer le redimensionnement et le déplacement du clavier en faisant glisser la barre d’état ou la touche Paramètres. Caractère lorsque «0» est appuyé deux fois Inverser l\'ordre des clés Activez le paramètre s\'il y a 7–8–9 sur le premier rang, au lieu de 1–2–3. @@ -206,4 +207,5 @@ * Appuyez ou maintenez une touche pour l’attribuer à la fonction \"%1$s\".\n\n* Appuyez sur 0 pour annuler.\n\n* Appuyez sur 2 pour désactiver la fonction. (maintenir) Afficher texte en cours + Redimensionner en faisant glisser diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 03a95c73..3775f69f 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -122,6 +122,7 @@ Carica Donare Se ti piace %1$s, puoi offrirmi una birra. + Abilitare il ridimensionamento e lo spostamento della tastiera trascinando la barra di stato o il tasto Impostazioni. Simbolo quando si preme due volte il tasto \"0\" Sempre in primo piano Non consentire ad altre applicazioni di coprire %1$s o di spingerlo fuori dallo schermo. @@ -209,5 +210,6 @@ Selezionare tastiera Mostrare impostazioni Mostra testo in composizione + Ridimensionare trascinando diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index fd5a94c7..ec8fe68f 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -47,6 +47,7 @@ להחזיר את רשימת ההצעות על ידי לחיצה על מקש Backspace בסוף מילה. (לא נתמך בחלק מהאפליקציות) שפות ערכת נושא שחורה + לאפשר שינוי גודל והזזת המקלדת על ידי גרירת שורת המצב או מקש ההגדרות. תו ללחיצה מרובה על מקש 0 לוח מספרים מקשי פונקציה @@ -213,4 +214,5 @@ ערוך טקסט הצעה קודמת הצגת טקסט בהרכבה + שינוי גודל על ידי גרירה diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 14b35647..5e77ccc0 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -50,6 +50,7 @@ Taip Ne Automatiškai + Įgalinti klaviatūros dydžio keitimą ir perkėlimą tempiant būsenos juostą arba nustatymų klavišą. Įterpiamas simbolis, kai du kartus paspaudžiamas \"0\" mygtukas Skaičių klaviatūra Funkcijos klavišai @@ -215,4 +216,5 @@ Klavišas „%1$s“ jau priskirtas funkcijai „%2$s“. Ar norite jį priskirti „%3$s“? * Paspauskite arba palaikykite klavišą, kad priskirtumėte jį funkcijai „%1$s“.\n\n* Paspauskite 0, kad atšauktumėte.\n\n* Paspauskite 2, kad išjungtumėte funkciją. Rodyti rašomą tekstą + Keisti dydį tempiant diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index dbd03cef..2114ca0d 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -121,6 +121,8 @@ Laden Doneer Als je %1$s leuk vindt, kun je me trakteren op een biertje. + Grootte wijzigen door te slepen + Grootte wijzigen en toetsenbord verplaatsen door de statusbalk of de instellingenknop te slepen. Teken bij dubbelklikken op toets \"0\" Altijd bovenaan Andere applicaties niet toestaan om %1$s te bedekken of van het scherm te duwen. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 622fd783..6aff8419 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -48,6 +48,7 @@ Trazer de volta a lista de sugestões pressionando Backspace no final de uma palavra. (Não suportado em alguns aplicativos) Idiomas Modo Escuro + Permitir redimensionar e mover o teclado arrastando a Barra de Status ou a tecla de Configurações. Caractere para toque duplo na tecla 0 Teclado numérico Teclas de função @@ -213,4 +214,5 @@ Editar Texto Sugestão Anterior Mostrar texto em composição + Redimensionar arrastando diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 4313b0fb..ae426985 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -69,6 +69,7 @@ Автоматически добавлять пробел после слов и знаков препинания. Авто заглавные буквы Автоматически начинать предложения с заглавной буквы. (Не во всех языках возможно) + Включить изменение размера и перемещение клавиатуры путем перетаскивания строки состояния или клавиши настроек. Символ при двойном нажатии клавиши 0 Не удалось загрузить словарь. Проблема в слове в строке %1$d для языка «%2$s». Добавление слов невозможно на этом языке. @@ -206,4 +207,5 @@ Клавиша «%1$s» уже назначена на функцию «%2$s». Назначить её на «%3$s»? * Нажмите или удерживайте клавишу, чтобы назначить её на функцию «%1$s».\n\n* Нажмите 0, чтобы отменить.\n\n* Нажмите 2, чтобы отключить функцию. Показывать текст при вводе + Изменять размер перетаскиванием diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index e80af707..bea758f1 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -118,6 +118,7 @@ " „%1$s“ sözlüğü için bir güncelleme mevcut." Yükle Destekte bulun + Durum Çubuğunu veya Ayarlar tuşunu sürükleyerek klavyeyi yeniden boyutlandırmayı ve taşımayı etkinleştir. "0" tuşuna iki kere basıldığında yazılacak karakter Her zaman en üstte tut Diğer uygulamaların %1$s ekranını kaplamasına veya ekranın dışına itmesine izin vermeyin. @@ -211,4 +212,5 @@ * \"%1$s\" işlevine atamak için bir tuşa basın veya basılı tutun.\n\n* İptal etmek için 0\'a basın.\n\n* İşlevi devre dışı bırakmak için 2\'ye basın. (basılı tut) Yazılan metni göster + Sürükleyerek yeniden boyutlandır diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 7b0c8887..8599a002 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -52,6 +52,7 @@ Так Ні Автоматично + Увімкнути зміну розміру та переміщення клавіатури перетягуванням рядка стану або клавіші налаштувань. Символ при подвійному натискання клавіші 0 Поверх інших програм Не дозволяти іншим програмам перекривати %1$s або змушувати його зникати з екрану. @@ -217,4 +218,5 @@ \"%1$s\" tuşu zaten \"%2$s\" işlevine atanmış. Onu \"%3$s\" işlevine atamak ister misiniz? * Натисніть або утримуйте клавішу, щоб призначити її функції «%1$s».\n\n* Натисніть 0, щоб скасувати.\n\n* Натисніть 2, щоб вимкнути функцію. Показувати текст під час введення + Змінювати розмір перетягуванням diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 74857524..8c4d722c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -68,6 +68,8 @@ Yes No Auto + Drag to Resize + Allow resizing and moving the keyboard by dragging the Status Bar or the Settings key. Character for Double 0-key Press Letter Keys Width Settings Font Size diff --git a/app/src/main/res/xml/prefs_screen_appearance.xml b/app/src/main/res/xml/prefs_screen_appearance.xml index 4008257c..2e09c647 100644 --- a/app/src/main/res/xml/prefs_screen_appearance.xml +++ b/app/src/main/res/xml/prefs_screen_appearance.xml @@ -6,6 +6,11 @@ app:key="pref_theme" app:title="@string/pref_dark_theme" /> + +