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