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 @@
+
+
+
+
+
+
+
+
+