diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutNumpad.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutNumpad.java index c0460da3..b16f5d0e 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutNumpad.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutNumpad.java @@ -11,6 +11,7 @@ import java.util.ArrayList; import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.hacks.DeviceInfo; import io.github.sspanak.tt9.ime.TraditionalT9; +import io.github.sspanak.tt9.languages.LanguageKind; import io.github.sspanak.tt9.preferences.settings.SettingsStore; import io.github.sspanak.tt9.ui.main.keys.SoftKey; import io.github.sspanak.tt9.ui.main.keys.SoftKeySettings; @@ -53,6 +54,8 @@ class MainLayoutNumpad extends BaseMainLayout { || keyId == R.id.soft_key_lf4 || keyId == R.id.soft_key_0 || keyId == R.id.soft_key_100 + || keyId == R.id.soft_key_punctuation_201 + || keyId == R.id.soft_key_punctuation_202 ) { key.render(); } @@ -82,6 +85,8 @@ class MainLayoutNumpad extends BaseMainLayout { || keyId == R.id.soft_key_lf4 || keyId == R.id.soft_key_0 || keyId == R.id.soft_key_100 + || keyId == R.id.soft_key_punctuation_201 + || keyId == R.id.soft_key_punctuation_202 ) { key.render(); } @@ -124,8 +129,7 @@ class MainLayoutNumpad extends BaseMainLayout { } - private int getKeyColumnHeight() { - int keyHeight = calculateKeyHeight(); + private int getKeyColumnHeight(int keyHeight) { int lastKeyHeight = tt9.getSettings().isNumpadShapeV() ? Math.round(keyHeight * SettingsStore.SOFT_KEY_V_SHAPE_RATIO_OUTER) : keyHeight; return keyHeight * 3 + lastKeyHeight; } @@ -149,7 +153,6 @@ class MainLayoutNumpad extends BaseMainLayout { rightParams.weight = layoutWeight; leftColumn.setLayoutParams(leftParams); rightColumn.setLayoutParams(rightParams); - } @@ -161,7 +164,7 @@ class MainLayoutNumpad extends BaseMainLayout { Math.round(resources.getDimension(R.dimen.numpad_status_bar_spacing_top)) + resources.getDimensionPixelSize(R.dimen.numpad_status_bar_spacing_bottom) + resources.getDimensionPixelSize(R.dimen.numpad_suggestion_height) - + getKeyColumnHeight() + + getKeyColumnHeight(calculateKeyHeight()) + Math.round(resources.getDimension(R.dimen.numpad_keys_spacing_bottom)); } @@ -169,6 +172,17 @@ class MainLayoutNumpad extends BaseMainLayout { } + private void showLongSpace(boolean yes, int keyHeight) { + LinearLayout longSpacePanel = view != null ? view.findViewById(R.id.panel_long_spacebar) : null; + if (longSpacePanel != null) { + longSpacePanel.setVisibility(yes ? LinearLayout.VISIBLE : LinearLayout.GONE); + LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) longSpacePanel.getLayoutParams(); + params.height = keyHeight; + longSpacePanel.setLayoutParams(params); + } + } + + @Override protected void enableClickHandlers() { super.enableClickHandlers(); @@ -188,21 +202,28 @@ class MainLayoutNumpad extends BaseMainLayout { return keys; } + // status bar ViewGroup statusBar = view.findViewById(R.id.status_bar_container); keys.add(statusBar.findViewById(R.id.soft_key_left_arrow)); keys.add(statusBar.findViewById(R.id.soft_key_right_arrow)); + + // left Fn + ViewGroup left = view.findViewById(R.id.numpad_column_fn_left); + keys.add(left.findViewById(R.id.soft_key_settings)); + keys.add(left.findViewById(R.id.soft_key_add_word)); + keys.add(left.findViewById(R.id.soft_key_shift)); + keys.add(left.findViewById(R.id.soft_key_lf4)); + + // right Fn + ViewGroup right = view.findViewById(R.id.numpad_column_fn_right); + keys.add(right.findViewById(R.id.soft_key_numpad_backspace)); + keys.add(right.findViewById(R.id.soft_key_filter)); + keys.add(right.findViewById(R.id.soft_key_rf3)); + keys.add(right.findViewById(R.id.soft_key_numpad_ok)); + + // digits panel ViewGroup table = view.findViewById(R.id.main_soft_keys); - keys.add(table.findViewById(R.id.soft_key_settings)); - keys.add(table.findViewById(R.id.soft_key_add_word)); - keys.add(table.findViewById(R.id.soft_key_shift)); - keys.add(table.findViewById(R.id.soft_key_lf4)); - - keys.add(table.findViewById(R.id.soft_key_numpad_backspace)); - keys.add(table.findViewById(R.id.soft_key_filter)); - keys.add(table.findViewById(R.id.soft_key_rf3)); - keys.add(table.findViewById(R.id.soft_key_numpad_ok)); - keys.add(table.findViewById(R.id.soft_key_0)); keys.add(table.findViewById(R.id.soft_key_1)); keys.add(table.findViewById(R.id.soft_key_2)); @@ -216,6 +237,7 @@ class MainLayoutNumpad extends BaseMainLayout { keys.add(table.findViewById(R.id.soft_key_punctuation_1)); keys.add(table.findViewById(R.id.soft_key_punctuation_2)); + // text editing panel keys.add(table.findViewById(R.id.soft_key_100)); keys.add(table.findViewById(R.id.soft_key_101)); keys.add(table.findViewById(R.id.soft_key_102)); @@ -229,6 +251,11 @@ class MainLayoutNumpad extends BaseMainLayout { keys.add(table.findViewById(R.id.soft_key_punctuation_101)); keys.add(table.findViewById(R.id.soft_key_punctuation_102)); + // Long space panel + keys.add(table.findViewById(R.id.soft_key_200)); + keys.add(table.findViewById(R.id.soft_key_punctuation_201)); + keys.add(table.findViewById(R.id.soft_key_punctuation_202)); + keys.addAll(getKeysFromContainer(view.findViewById(R.id.status_bar_container))); return keys; @@ -237,11 +264,17 @@ class MainLayoutNumpad extends BaseMainLayout { @Override void render() { + int defaultKeyHeight = calculateKeyHeight(); + getView(); enableClickHandlers(); - setKeyHeight(calculateKeyHeight()); + setKeyHeight(defaultKeyHeight); setWidth(tt9.getSettings().getWidthPercent(), tt9.getSettings().getAlignment()); setKeyColumnWidth(tt9.getSettings().getNumpadFnKeyScale()); + showLongSpace( + tt9.getSettings().isNumpadShapeLongSpace() && !tt9.isInputModeNumeric() && !LanguageKind.isKorean(tt9.getLanguage()), + defaultKeyHeight + ); for (SoftKey key : getKeys()) { key.render(); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber0.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber0.java index 28ae34f5..2b57350c 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber0.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber0.java @@ -12,14 +12,29 @@ public class SoftKeyNumber0 extends SoftKeyNumber { public SoftKeyNumber0(Context context, AttributeSet attrs) { super(context, attrs); } public SoftKeyNumber0(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } + + private boolean isTransparentWhenTextEditing() { + return tt9 != null && LanguageKind.isKorean(tt9.getLanguage()) && tt9.isTextEditingActive(); + } + + + protected boolean isHiddenWhenLongSpace() { + return tt9 != null + && tt9.getSettings().isNumpadShapeLongSpace() + && !tt9.isInputModeNumeric() + && !LanguageKind.isKorean(tt9.getLanguage()); + } + + @Override protected int getNumber(int keyId) { return 0; } + @Override protected String getHoldText() { - if (tt9 == null) { + if (tt9 == null || isHiddenWhenLongSpace()) { return null; } @@ -36,6 +51,7 @@ public class SoftKeyNumber0 extends SoftKeyNumber { return super.getLocalizedNumber(getNumber(getId())); } + @Override protected String getTitle() { if (tt9 == null || tt9.isInputModeNumeric()) { @@ -45,6 +61,7 @@ public class SoftKeyNumber0 extends SoftKeyNumber { return (LanguageKind.isKorean(tt9.getLanguage())) ? getKoreanCharList() : "␣"; } + private String getKoreanCharList() { if (tt9 == null || tt9.getLanguage() == null) { return null; @@ -60,6 +77,7 @@ public class SoftKeyNumber0 extends SoftKeyNumber { return list.toString(); } + @Override protected float getTitleScale() { if (tt9 != null && !tt9.isInputModeNumeric() && !LanguageKind.isKorean(tt9.getLanguage())) { @@ -70,14 +88,19 @@ public class SoftKeyNumber0 extends SoftKeyNumber { } - @Override - public void render() { - if (tt9 != null && LanguageKind.isKorean(tt9.getLanguage()) && tt9.isTextEditingActive()) { - setVisibility(GONE); + private void setVisibility() { + getOverlayWrapper(); + if (isHiddenWhenLongSpace()) { + overlay.setVisibility(GONE); + } else if (isTransparentWhenTextEditing()) { + overlay.setVisibility(INVISIBLE); } else { - setVisibility(VISIBLE); + overlay.setVisibility(VISIBLE); } + } + + private void setEnabled() { setEnabled( tt9 != null && ( @@ -85,7 +108,13 @@ public class SoftKeyNumber0 extends SoftKeyNumber { || (!LanguageKind.isKorean(tt9.getLanguage()) && !tt9.isInputModeNumeric()) ) ); + } + + @Override + public void render() { + setVisibility(); + setEnabled(); super.render(); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber0Long.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber0Long.java new file mode 100644 index 00000000..464af98a --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber0Long.java @@ -0,0 +1,11 @@ +package io.github.sspanak.tt9.ui.main.keys; + +import android.content.Context; +import android.util.AttributeSet; + +public class SoftKeyNumber0Long extends SoftKeyNumber0 { + public SoftKeyNumber0Long(Context context) { super(context); } + public SoftKeyNumber0Long(Context context, AttributeSet attrs) { super(context, attrs); } + public SoftKeyNumber0Long(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } + @Override protected boolean isHiddenWhenLongSpace() { return false; } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuation.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuation.java index a573a80c..f5f14856 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuation.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuation.java @@ -13,6 +13,18 @@ public class SoftKeyPunctuation extends SoftKey { public SoftKeyPunctuation(Context context, AttributeSet attrs) { super(context, attrs); } public SoftKeyPunctuation(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } + protected boolean isHiddenWhenLongSpace() { + return + tt9 != null + && tt9.getSettings().isNumpadShapeLongSpace() + && !tt9.isInputModeNumeric() + && !LanguageKind.isKorean(tt9.getLanguage()); + } + + protected boolean isTransparentWhenTextEditing() { + return tt9 != null && tt9.isTextEditingActive(); + } + @Override protected boolean handleRelease() { return @@ -33,9 +45,9 @@ public class SoftKeyPunctuation extends SoftKey { } int keyId = getId(); - if (keyId == R.id.soft_key_punctuation_1) { + if (keyId == R.id.soft_key_punctuation_1 || keyId == R.id.soft_key_punctuation_201) { return getKey1Char(); - } else if (keyId == R.id.soft_key_punctuation_2) { + } else if (keyId == R.id.soft_key_punctuation_2 || keyId == R.id.soft_key_punctuation_202) { return getKey2Char(); } @@ -67,4 +79,18 @@ public class SoftKeyPunctuation extends SoftKey { super.setHeight(height); } + + + @Override + public void render() { + if (isHiddenWhenLongSpace()) { + setVisibility(GONE); + } else if (isTransparentWhenTextEditing()) { + setVisibility(INVISIBLE); + } else { + setVisibility(VISIBLE); + } + + super.render(); + } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationShort.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationShort.java new file mode 100644 index 00000000..33eb0c53 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationShort.java @@ -0,0 +1,11 @@ +package io.github.sspanak.tt9.ui.main.keys; + +import android.content.Context; +import android.util.AttributeSet; + +public class SoftKeyPunctuationShort extends SoftKeyPunctuation { + public SoftKeyPunctuationShort(Context context) { super(context); } + public SoftKeyPunctuationShort(Context context, AttributeSet attrs) { super(context, attrs); } + public SoftKeyPunctuationShort(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } + @Override protected boolean isHiddenWhenLongSpace() { return false; } +} diff --git a/app/src/main/res/layout/main_numpad.xml b/app/src/main/res/layout/main_numpad.xml index e6c40212..21f4fe2c 100644 --- a/app/src/main/res/layout/main_numpad.xml +++ b/app/src/main/res/layout/main_numpad.xml @@ -10,10 +10,20 @@ + - - + + + + + + + + + + + diff --git a/app/src/main/res/layout/panel_long_spacebar.xml b/app/src/main/res/layout/panel_long_spacebar.xml new file mode 100644 index 00000000..31208bf0 --- /dev/null +++ b/app/src/main/res/layout/panel_long_spacebar.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 8e13d836..83deaca0 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -27,6 +27,7 @@ Връщай списъка с предложения при натискане на Backspace на края на дума. (Не работи в някои приложения.) Езици Изтрий всички + Дълъг интервал Ширина Запомняне на двойки думи Запомняй често ползвани фрази, за по-точно подсказване на думи. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 500283e3..be7d6c6c 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -42,6 +42,7 @@ Wortnachbearbeitung Die Vorschlagsliste zurückbringen, indem Sie am Ende eines Wortes die Rücktaste drücken. (Nicht in allen Apps unterstützt) Sprachen + Lange Leertaste Breite Wortpaare lernen Häufig verwendete Phrasen merken, um die Genauigkeit der Vorschläge zu verbessern. diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index dfbba4b5..d3a40331 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -51,6 +51,7 @@ Borrar todos Borrar no seleccionados Diccionario eliminado con éxito. + Barra espaciadora larga Anchura Aprender pares de palabras Recordar frases de uso común para mejorar las sugerencias de palabras. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index f6f0f6b2..0106617e 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -28,6 +28,7 @@ Ramener la liste de suggestions en appuyant sur Retour arrière à la fin d\'un mot. (Non pris en charge dans certaines applications) Langues Supprimer tous + Grande barre d\'espace Largeur Mémoriser les paires de mots Apprendre des phrases couramment utilisées pour améliorer les suggestions. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index b2d6220e..fbdf3b6f 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -45,6 +45,7 @@ Riportare l\'elenco dei suggerimenti premendo Backspace alla fine di una parola. (Non supportato in alcune app) Lingue + Barra spaziatrice lunga Larghezza Memorizzare coppie di parole Ricordare frasi comunemente usate per migliorare i suggerimenti di parole. diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index e57b834d..6942c7c6 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -55,6 +55,7 @@ לרטוט בעת לחיצה על מקש וירטואלי. עזרה + מקש רווח ארוך רוחב ללמוד צמדי מילים לזכור ביטויים נפוצים כדי לשפר את דיוק ההצעות. diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index c3dc006e..df47839f 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -60,6 +60,7 @@ Atvirkštinė klavišų tvarka Įjunkite šį nustatymą jei pirmoje eilutėje turite 7–8–9, o ne 1–2–3. + Ilga tarpo juosta Plotis Išmokti žodžių poras Įsiminti dažnai naudojamas frazes, kad pagerintumėte žodžių pasiūlymus. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 91e3e34b..24f52c95 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -42,6 +42,7 @@ Woordherbewerking Breng de suggestielijst terug door Backspace te drukken aan het einde van een woord. (Niet ondersteund in sommige apps) Talen + Lange spatiebalk Breedte Woordenparen leren Veelgebruikte zinnen onthouden om de nauwkeurigheid van suggesties te verbeteren. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index a851fcc6..09f1f308 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -56,6 +56,7 @@ Vibrar ao pressionar uma tecla virtual. Ajuda + Barra de espaço longa Largura Aprender pares de palavras Lembrar de frases comumente usadas para melhorar as sugestões de palavras. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 0b0e78b1..7c45245c 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -28,6 +28,7 @@ Вернуть список предложений, нажав клавишу Backspace в конце слова. (Не поддерживается в некоторых приложениях) Языки Удалить все + Длинный пробел Ширина Запоминать пары слов Запоминать часто используемые фразы для улучшения предложений слов. diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 6a74ae50..a9680296 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -43,6 +43,7 @@ Kelimenin sonunda Geri tuşuna basarak öneri listesini geri getirmek. (Bazı uygulamalarda desteklenmez) Diller + Uzun boşluk tuşu Genişlik Kelime çiftlerini öğren Öneri doğruluğunu artırmak için sık kullanılan ifadeleri hatırla. diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index e26e2600..05449ab5 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -66,6 +66,7 @@ Зворотній порядок клавіш Використовуйте це налаштування, якщо у вас в першому ряді 7–8–9 замість 1–2–3. + Довгий пробіл Ширина Запам’ятовувати пари слів Запам\'ятовувати часто вживані фрази для покращення пропозицій слів. diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 9e665782..a9941b2e 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -200,9 +200,10 @@ + + + + + + + + +