diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java
index bf041d3e..24033520 100644
--- a/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java
+++ b/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java
@@ -36,7 +36,7 @@ abstract class UiHandler extends AbstractHandler {
setInputView(mainView.getView());
createSuggestionBar();
getSuggestionOps().setDarkTheme();
- statusBar = new StatusBar(settings, mainView.getView());
+ statusBar = new StatusBar(this, settings, mainView.getView(), this::resetStatus);
}
diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/notifications/DictionaryLoadingBar.java b/app/src/main/java/io/github/sspanak/tt9/ui/notifications/DictionaryLoadingBar.java
index 96c1b599..2bdbe347 100644
--- a/app/src/main/java/io/github/sspanak/tt9/ui/notifications/DictionaryLoadingBar.java
+++ b/app/src/main/java/io/github/sspanak/tt9/ui/notifications/DictionaryLoadingBar.java
@@ -13,6 +13,7 @@ import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.db.exceptions.DictionaryImportException;
import io.github.sspanak.tt9.languages.Language;
import io.github.sspanak.tt9.languages.LanguageCollection;
+import io.github.sspanak.tt9.languages.NullLanguage;
import io.github.sspanak.tt9.languages.exceptions.InvalidLanguageCharactersException;
import io.github.sspanak.tt9.languages.exceptions.InvalidLanguageException;
@@ -22,7 +23,9 @@ public class DictionaryLoadingBar extends DictionaryProgressNotification {
private boolean isStopped = false;
private boolean hasFailed = false;
+ private String shortMessage = "";
private Runnable onStatusChange = null;
+ private Runnable onStatusChange2 = null;
public static DictionaryLoadingBar getInstance(Context context) {
@@ -44,6 +47,11 @@ public class DictionaryLoadingBar extends DictionaryProgressNotification {
}
+ public String getShortMessage() {
+ return shortMessage;
+ }
+
+
public String getTitle() {
return title;
}
@@ -59,6 +67,11 @@ public class DictionaryLoadingBar extends DictionaryProgressNotification {
}
+ public void setOnStatusChange2(Runnable onStatusChange2) {
+ this.onStatusChange2 = onStatusChange2;
+ }
+
+
public boolean isCancelled() {
return isStopped;
}
@@ -82,6 +95,7 @@ public class DictionaryLoadingBar extends DictionaryProgressNotification {
data.getLong("fileLine", -1)
);
if (onStatusChange != null) onStatusChange.run();
+ if (onStatusChange2 != null) onStatusChange2.run();
} else if (progress >= 0) {
hasFailed = false;
if (fileCount >= 0) {
@@ -96,6 +110,7 @@ public class DictionaryLoadingBar extends DictionaryProgressNotification {
);
if (onStatusChange != null) onStatusChange.run();
+ if (onStatusChange2 != null) onStatusChange2.run();
}
}
@@ -111,6 +126,13 @@ public class DictionaryLoadingBar extends DictionaryProgressNotification {
}
+ private String generateShortMessage(int languageId, int progress) {
+ Language lang = LanguageCollection.getLanguage(languageId);
+ lang = lang != null ? lang : new NullLanguage();
+ return resources.getString(R.string.dictionary_loading_short, lang.getCode().toUpperCase(lang.getLocale()), progress) + "%";
+ }
+
+
private void showProgress(long time, int currentFile, int currentFileProgress, int languageId) {
if (currentFileProgress <= 0) {
hide();
@@ -129,9 +151,11 @@ public class DictionaryLoadingBar extends DictionaryProgressNotification {
String timeFormat = time > 60000 ? " (%1.0fs)" : " (%1.1fs)";
message = resources.getString(R.string.completed) + String.format(Locale.ENGLISH, timeFormat, time / 1000.0);
+ shortMessage = resources.getString(R.string.completed);
} else {
title = generateTitle(languageId);
message = currentFileProgress + "%";
+ shortMessage = generateShortMessage(languageId, currentFileProgress);
}
renderMessage();
diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/tray/StatusBar.java b/app/src/main/java/io/github/sspanak/tt9/ui/tray/StatusBar.java
index 8095ea51..ab5c0827 100644
--- a/app/src/main/java/io/github/sspanak/tt9/ui/tray/StatusBar.java
+++ b/app/src/main/java/io/github/sspanak/tt9/ui/tray/StatusBar.java
@@ -1,5 +1,6 @@
package io.github.sspanak.tt9.ui.tray;
+import android.content.Context;
import android.text.SpannableString;
import android.text.style.RelativeSizeSpan;
import android.view.View;
@@ -12,6 +13,7 @@ import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.ime.modes.InputMode;
import io.github.sspanak.tt9.ime.voice.VoiceInputOps;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
+import io.github.sspanak.tt9.ui.notifications.DictionaryLoadingBar;
import io.github.sspanak.tt9.util.Logger;
public class StatusBar {
@@ -19,10 +21,17 @@ public class StatusBar {
@NonNull private final SettingsStore settings;
@Nullable private String statusText;
+ @NonNull private final DictionaryLoadingBar loadingBar;
+ @NonNull private final Runnable onLoadingFinished;
- public StatusBar(@NonNull SettingsStore settings, @Nullable View mainView) {
+
+ public StatusBar(@NonNull Context context, @NonNull SettingsStore settings, @Nullable View mainView, @NonNull Runnable onDictionaryLoadingFinished) {
this.settings = settings;
statusView = mainView != null ? mainView.findViewById(R.id.status_bar) : null;
+
+ loadingBar = DictionaryLoadingBar.getInstance(context);
+ loadingBar.setOnStatusChange2(this::onLoading);
+ onLoadingFinished = onDictionaryLoadingFinished;
}
@@ -59,6 +68,14 @@ public class StatusBar {
}
+ private void onLoading() {
+ setText("[ " + loadingBar.getShortMessage() + " ]");
+ if (loadingBar.isCancelled() || loadingBar.isFailed() || !loadingBar.inProgress()) {
+ onLoadingFinished.run();
+ }
+ }
+
+
private void render() {
if (statusView == null) {
return;
diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml
index ddc55aa0..e157db6f 100644
--- a/app/src/main/res/values-bg/strings.xml
+++ b/app/src/main/res/values-bg/strings.xml
@@ -40,6 +40,7 @@
Зареждането на речник приключи.
Зареждане на речник (%1$s)…
Моля, изчакайте да завърши зареждането на речник.
+ Зареждане / %1$s… %2$d
Зареди избраните
Неуспешно зареждане. Липсва речник за „%1$s“.
Речникът е изтрит успешно.
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index d70ff35b..cc0ad587 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -61,6 +61,7 @@
Wörterbuch laden abgeschlossen.
Lade Wörterbuch (%1$s)…
Bitte warten Sie, bis das Wörterbuch geladen ist.
+ Laden / %1$s… %2$d
Ausgewählte laden
Wird nicht geladen. Wörterbuch für \"%1$s\" nicht gefunden.
ABC-Modus
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index e7d6b854..981f8d5b 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -42,6 +42,7 @@
Selecciona teclado predeterminado
Nueva línea
Por favor, espera a que se cargue el diccionario.
+ Cargando / %1$s… %2$d
Cargar los seleccionados
Cargando diccionario
Cargando diccionario (%1$s)…
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 75706b9c..6d6090dd 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -39,6 +39,7 @@
Chargement du dictionnaire terminé.
Chargement du dictionnaire (%1$s)…
Veuillez patienter pendant le chargement du dictionnaire.
+ Chargement / %1$s… %2$d
Charger les sélectionnées
Echec du chargement. Dictionnaire «%1$s» introuvable.
Raccourcis clavier
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 773b3af3..d5a288d1 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -56,6 +56,7 @@
Caricamento del dizionario terminato.
Caricamento del dizionario (%1$s)…
Attendi che il dizionario si carichi, per favore.
+ Caricamento / %1$s… %2$d
Carica le selezionate
Impossibile caricare. Dizionario per “%1$s” non trovato.
Modalità ABC
diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml
index 52b03003..342d4b5a 100644
--- a/app/src/main/res/values-iw/strings.xml
+++ b/app/src/main/res/values-iw/strings.xml
@@ -80,6 +80,7 @@
אחרי הקבוצה (לא חובה)
מצב
בחר מקלדת ברירת מחדל
+ טוען / %1$s… %2$d
טען את הנבחרים
הטעינה נכשלה, לא נמצא מילון עבור \"%1$s\".
מחק הכל
diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml
index a556180d..4d021a67 100644
--- a/app/src/main/res/values-lt/strings.xml
+++ b/app/src/main/res/values-lt/strings.xml
@@ -79,6 +79,7 @@
Žodynas įkeltas.
Žodynas įkeliamas (%1$s)…
Žodynas įkeliamas
+ Įkeliama / %1$s… %2$d
Įkelti žodyną
Įkelti nepavyko. Žodynas \"%1$s\" nerastas.
Ištrinti visus
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 9553b029..7ed67b02 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -61,6 +61,7 @@
Woordenboek laden voltooid.
Woordenboek laden (%1$s)…
Wacht alsjeblieft tot het woordenboek geladen is.
+ Laden / %1$s… %2$d
Geselecteerde laden
Laden mislukt. Woordenboek voor %1$s niet gevonden.
Verwijder alle
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index cafbb7e9..1863347d 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -74,6 +74,7 @@
Carregando dicionário (%1$s)…
Carregando dicionário…
Aguarde o carregamento do dicionário, por favor
+ Carregando / %1$s… %2$d
Carregar os selecionados
Falha no carregamento. Não foi encontrado um dicionário para o idioma \"%1$s\".
Limpar Dicionário
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 57681603..f6db8d48 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -39,6 +39,7 @@
Загрузка словаря завершена.
Загрузка словаря (%1$s)…
Пожалуйста, подождите, пока словарь загружается.
+ Загрузка / %1$s… %2$d
Загрузить выбранные
Ошибка загрузки. Словарь «%1$s» не найден.
Словарь успешно удален.
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 04889a6c..3cf59a19 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -58,6 +58,7 @@
Sözlük başarıyla yüklendi.
(%1$s) sözlük yükleniyor…
Sözlük yüklenirken lütfen bekleyiniz.
+ Yükleniyor / %1$s… %2$d
Seçilenleri yükle
Yükleme başarısız oldu. \"%1$s\" sözlüğü bulunamadı.
ABC Modu
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 63afbe78..5f7c4d1f 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -86,6 +86,7 @@
Словник завантажується (%1$s)…
Словник завантажується
Будь ласка, дочекайтесь завантаження словника.
+ Завантаження / %1$s… %2$d
Завантажити вибрані
Помилка завантаження. Словник для мови \"%1$s\" не знайдений.
Видалити все
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3bf3ad69..c76f79ce 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -118,6 +118,7 @@
Loading dictionary (%1$s)…
Loading dictionary
Please wait for the dictionary to load.
+ Loading / %1$s… %2$d
Load Selected
Loading failed. Dictionary for \"%1$s\" not found.
Dictionary Notifications