* dictionary loading errors are now displayed in the progress notification
* proper icons for dictionary loading status * a toast message appears when dictionary loads successfully or when it fails
15
res/drawable-anydpi-v24/ic_done.xml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="#FFFFFF">
|
||||
<group android:scaleX="1.2266667"
|
||||
android:scaleY="1.2266667"
|
||||
android:translateX="-2.72"
|
||||
android:translateY="-2.72">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="#FFFFFF">
|
||||
<group android:scaleX="0.12126316"
|
||||
android:scaleY="0.12126316"
|
||||
android:translateX="0.96"
|
||||
android:translateY="1.5217317">
|
||||
<group android:translateY="135.80667">
|
||||
<path android:pathData="M82.375,-85.03125Q76.609375,-90.359375,70.140625,-90.359375L50.546875,-90.359375L50.546875,-13.84375Q50.546875,-9.953125,51.40625,-6.421875Q52.28125,-2.890625,54.296875,-0L30.8125,-0Q34.28125,-6.046875,34.28125,-13.84375L34.28125,-90.359375L12.96875,-90.359375Q8.5,-90.359375,3.171875,-85.03125L3.171875,-103L82.375,-103L82.375,-85.03125Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M109.1875,-71.90625Q109.1875,-66.21875,109.90625,-62.5625Q110.625,-58.90625,112.28125,-56.78125Q113.9375,-54.671875,116.453125,-53.9375Q118.984375,-53.203125,122.578125,-53.203125L166.35938,-53.203125L166.35938,-75.421875Q166.35938,-80.09375,165.48438,-83.234375Q164.625,-86.390625,162.46875,-88.28125Q160.3125,-90.1875,156.78125,-90.984375Q153.25,-91.796875,147.92188,-91.796875L124.015625,-91.796875Q119.984375,-91.796875,117.171875,-90.84375Q114.375,-89.890625,112.5625,-87.625Q110.765625,-85.359375,109.96875,-81.5625Q109.1875,-77.765625,109.1875,-71.90625ZM114.515625,-22.84375Q113.796875,-21.71875,113.578125,-20.71875Q113.359375,-19.71875,113.359375,-17.3125Q113.359375,-14.1875,116.09375,-12.6875Q118.828125,-11.203125,126.609375,-11.203125L149.35938,-11.203125Q159.15625,-11.203125,162.75,-15.03125Q166.35938,-18.875,166.35938,-27.09375L166.35938,-42L113.65625,-42Q107.3125,-42,103.421875,-42.859375Q99.53125,-43.734375,97.21875,-46.046875Q94.921875,-48.375,94.125,-52.4375Q93.34375,-56.515625,93.34375,-62.90625L93.34375,-81.078125Q93.34375,-87.90625,94.203125,-92.1875Q95.078125,-96.46875,97.65625,-98.859375Q100.25,-101.265625,105.140625,-102.125Q110.046875,-103,118.109375,-103L157.57812,-103Q165.92188,-103,170.8125,-102.28125Q175.71875,-101.5625,178.3125,-99.390625Q180.90625,-97.234375,181.625,-93.484375Q182.34375,-89.75,182.34375,-83.703125L182.34375,-19.296875Q182.34375,-13.25,181.54688,-9.5Q180.76562,-5.765625,178.09375,-3.671875Q175.4375,-1.578125,170.3125,-0.78125Q165.20312,0,156.5625,0L114.65625,0Q109.046875,0,105.375,-0.84375Q101.703125,-1.703125,99.609375,-3.34375Q97.515625,-5,96.71875,-7.5625Q95.9375,-10.140625,95.9375,-13.578125Q95.9375,-17.28125,95.5,-19.203125Q95.078125,-21.140625,93.921875,-22.84375L114.515625,-22.84375Z"
|
||||
android:fillColor="#000000"/>
|
||||
</group>
|
||||
</group>
|
||||
</vector>
|
||||
BIN
res/drawable-hdpi/ic_done.png
Normal file
|
After Width: | Height: | Size: 261 B |
|
Before Width: | Height: | Size: 412 B |
BIN
res/drawable-mdpi/ic_done.png
Normal file
|
After Width: | Height: | Size: 187 B |
|
Before Width: | Height: | Size: 283 B |
BIN
res/drawable-xhdpi/ic_done.png
Normal file
|
After Width: | Height: | Size: 370 B |
|
Before Width: | Height: | Size: 470 B |
BIN
res/drawable-xxhdpi/ic_done.png
Normal file
|
After Width: | Height: | Size: 520 B |
|
Before Width: | Height: | Size: 693 B |
|
|
@ -48,7 +48,7 @@
|
|||
android:longClickable="true"
|
||||
android:paddingLeft="2dp"
|
||||
android:paddingRight="2dp"
|
||||
android:text="@string/soft_key_mid"
|
||||
android:text="@android:string/ok"
|
||||
android:textColor="@color/button_text" />
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="app_settings">Настройки на Traditional T9</string>
|
||||
<string name="close">Затвори</string>
|
||||
<string name="completed">Завършено</string>
|
||||
<string name="error_unexpected">Възникна неочаквана грешка.</string>
|
||||
|
||||
<string name="add_word_add">Добави</string>
|
||||
|
|
@ -17,10 +18,11 @@
|
|||
<string name="pref_loaduserdict">Зареди свой речник</string>
|
||||
<string name="pref_truncatedict">Изтрий речник</string>
|
||||
|
||||
<string name="dictionary_import_bad_char">Неуспешно зареждане. Невалидна дума \"%1$s\" на ред %2$d за език \"%3$s\".</string>
|
||||
<string name="dictionary_import_cancelled">Зареждането на речник е отменено.</string>
|
||||
<string name="dictionary_import_error">Несупешно зареждане на речник за език \"%1$s\" (%2$s).</string>
|
||||
<string name="dictionary_loaded">Готово</string>
|
||||
<string name="dictionary_load_bad_char">Неуспешно зареждане. Невалидна дума \"%1$s\" на ред %2$d за език \"%3$s\".</string>
|
||||
<string name="dictionary_load_cancelled">Зареждането на речник е отменено.</string>
|
||||
<string name="dictionary_load_error">Несупешно зареждане на речник за език \"%1$s\" (%2$s).</string>
|
||||
<string name="dictionary_load_failed">Неуспешно зареждане на речник.</string>
|
||||
<string name="dictionary_loaded">Зареждането на речник приключи.</string>
|
||||
<string name="dictionary_loading">Зареждане на речник (%1$s)…</string>
|
||||
<string name="dictionary_loading_user_dict">Зареждане на вашия речник…</string>
|
||||
<string name="dictionary_load_title">Зареждане на речник</string>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<resources>
|
||||
<string name="app_settings">Configuration Traditional T9 </string>
|
||||
<string name="close">Fermer</string>
|
||||
<string name="completed">Fini</string>
|
||||
<string name="error_unexpected">Une erreur inattendue s\'est produite.</string>
|
||||
|
||||
<string name="add_word_add">Ajouter</string>
|
||||
|
|
@ -16,9 +17,10 @@
|
|||
<string name="pref_loaduserdict">Charger le dictionnaire utilisateur</string>
|
||||
<string name="pref_truncatedict">Supprimer le dictionaire</string>
|
||||
|
||||
<string name="dictionary_import_error">Echec du chargement de dictionnaire pour langue «%1$s» (%2$s).</string>
|
||||
<string name="dictionary_import_cancelled">Chargement du dictionnaire annulée.</string>
|
||||
<string name="dictionary_loaded">Terminé</string>
|
||||
<string name="dictionary_load_error">Echec du chargement de dictionnaire pour langue «%1$s» (%2$s).</string>
|
||||
<string name="dictionary_load_cancelled">Chargement du dictionnaire annulée.</string>
|
||||
<string name="dictionary_load_failed">Echec du chargement de dictionnaire.</string>
|
||||
<string name="dictionary_loaded">Chargement du dictionnaire terminé.</string>
|
||||
<string name="dictionary_loading">Chargement du dictionnaire (%1$s)…</string>
|
||||
<string name="dictionary_loading_user_dict">Chargement du dictionnaire utilisateur…</string>
|
||||
<string name="dictionary_load_title">Charger le dictionnaire</string>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<resources>
|
||||
<string name="app_settings">Traditional T9 Impostazioni</string>
|
||||
<string name="close">Chiudi</string>
|
||||
<string name="completed">Completato</string>
|
||||
<string name="error_unexpected">Si è verificato un errore imprevisto.</string>
|
||||
|
||||
<string name="add_word_add">Aggiungere</string>
|
||||
|
|
@ -16,11 +17,12 @@
|
|||
<string name="pref_loaduserdict">Carica dizionario utente</string>
|
||||
<string name="pref_truncatedict">Eliminare il dizionario</string>
|
||||
|
||||
<string name="dictionary_import_cancelled">Caricamento dizionario annullato.</string>
|
||||
<string name="dictionary_loaded">Terminato</string>
|
||||
<string name="dictionary_loading">Caricamento dizionario (%1$s)…</string>
|
||||
<string name="dictionary_load_cancelled">Caricamento del dizionario annullato.</string>
|
||||
<string name="dictionary_load_failed">Caricamento del dizionario non riuscito.</string>
|
||||
<string name="dictionary_loaded">Caricamento del dizionario terminato.</string>
|
||||
<string name="dictionary_loading">Caricamento del dizionario (%1$s)…</string>
|
||||
<string name="dictionary_loading_user_dict">Caricamento dizionario utente…</string>
|
||||
<string name="dictionary_load_title">Caricamento dizionario</string>
|
||||
<string name="dictionary_load_title">Caricamento del dizionario</string>
|
||||
<string name="dictionary_not_found">Impossibile caricare. Dizionario per “%1$s” non trovato.</string>
|
||||
</resources>
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<resources>
|
||||
<string name="app_settings">Traditional T9 настройки</string>
|
||||
<string name="close">Закрыть</string>
|
||||
<string name="completed">Выполнено</string>
|
||||
<string name="error_unexpected">Произошла непредвиденная ошибка.</string>
|
||||
|
||||
<string name="add_word_add">Добавить</string>
|
||||
|
|
@ -17,9 +18,10 @@
|
|||
<string name="pref_loaduserdict">Загрузить свой словарь</string>
|
||||
<string name="pref_truncatedict">Очистить словарь</string>
|
||||
|
||||
<string name="dictionary_import_cancelled">Загрузка словаря отменена.</string>
|
||||
<string name="dictionary_import_error">Ошибка загрузки словаря для языка «%1$s» (%2$s).</string>
|
||||
<string name="dictionary_loaded">Завершена</string>
|
||||
<string name="dictionary_load_cancelled">Загрузка словаря отменена.</string>
|
||||
<string name="dictionary_load_error">Ошибка загрузки словаря для языка «%1$s» (%2$s).</string>
|
||||
<string name="dictionary_load_failed">Ошибка загрузки словаря.</string>
|
||||
<string name="dictionary_loaded">Загрузка словаря завершена.</string>
|
||||
<string name="dictionary_loading">Загрузка словаря (%1$s)…</string>
|
||||
<string name="dictionary_loading_user_dict">Загрузка пользовательского словаря…</string>
|
||||
<string name="dictionary_load_title">Загрузить словарь</string>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<resources>
|
||||
<string name="app_settings">Налаштування Traditional T9</string>
|
||||
<string name="close">Закрити</string>
|
||||
<string name="completed">Зроблено</string>
|
||||
<string name="error_unexpected">Сталася неочікувана помилка.</string>
|
||||
|
||||
<string name="add_word_add">Додати</string>
|
||||
|
|
@ -16,9 +17,10 @@
|
|||
<string name="pref_loaduserdict">Завантажити свій словник</string>
|
||||
<string name="pref_truncatedict">Очистити словник</string>
|
||||
|
||||
<string name="dictionary_import_cancelled">Завантаження словника скасовано.</string>
|
||||
<string name="dictionary_import_error">Помилка завантаження словника для мови «%1$s» (%2$s).</string>
|
||||
<string name="dictionary_loaded">Завершено</string>
|
||||
<string name="dictionary_load_cancelled">Завантаження словника скасовано.</string>
|
||||
<string name="dictionary_load_error">Помилка завантаження словника для мови «%1$s» (%2$s).</string>
|
||||
<string name="dictionary_load_failed">Помилка завантаження словника.</string>
|
||||
<string name="dictionary_loaded">Завантаження словника завершено.</string>
|
||||
<string name="dictionary_loading">Завантаження словника (%1$s)…</string>
|
||||
<string name="dictionary_loading_user_dict">Завантаження словника користувача…</string>
|
||||
<string name="dictionary_load_title">Завантажити словник</string>
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
<string name="app_name" translatable="false">Traditional T9</string>
|
||||
<string name="app_settings">Traditional T9 Settings</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="completed">Completed</string>
|
||||
<string name="error_unexpected">Unexpected error occurred.</string>
|
||||
<string name="soft_key_mid" translatable="false">OK</string>
|
||||
|
||||
<string name="add_word_add">Add</string>
|
||||
<string name="add_word_blank">Blank word not added.</string>
|
||||
|
|
@ -21,10 +21,11 @@
|
|||
<string translatable="false" name="pref_loaduserdictdesc">SDcard/traditionalt9/user.lang.dict (lang: en/ru/de/fr)</string>
|
||||
<string name="pref_truncatedict">Clear dictionary</string>
|
||||
|
||||
<string name="dictionary_import_bad_char">Loading failed. Invalid word \"%1$s\" on line %2$d of language \"%3$s\".</string>
|
||||
<string name="dictionary_import_cancelled">Dictionary import cancelled.</string>
|
||||
<string name="dictionary_import_error">Failed importing dictionary for language \"%1$s\" (%2$s).</string>
|
||||
<string name="dictionary_loaded">Done</string>
|
||||
<string name="dictionary_load_bad_char">Loading failed. Invalid word \"%1$s\" on line %2$d of language \"%3$s\".</string>
|
||||
<string name="dictionary_load_cancelled">Dictionary load cancelled.</string>
|
||||
<string name="dictionary_load_error">Failed loading the dictionary for language \"%1$s\" (%2$s).</string>
|
||||
<string name="dictionary_load_failed">Dictionary load failed.</string>
|
||||
<string name="dictionary_loaded">Dictionary load completed.</string>
|
||||
<string name="dictionary_loading">Loading dictionary (%1$s)…</string>
|
||||
<string name="dictionary_loading_user_dict">Loading user dictionary…</string>
|
||||
<string name="dictionary_load_title">Load dictionary</string>
|
||||
|
|
|
|||
|
|
@ -5,13 +5,21 @@ import android.app.NotificationManager;
|
|||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.core.app.NotificationCompat;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
|
||||
import io.github.sspanak.tt9.R;
|
||||
import io.github.sspanak.tt9.db.DictionaryImportException;
|
||||
import io.github.sspanak.tt9.languages.InvalidLanguageCharactersException;
|
||||
import io.github.sspanak.tt9.languages.InvalidLanguageException;
|
||||
import io.github.sspanak.tt9.languages.Language;
|
||||
import io.github.sspanak.tt9.languages.LanguageCollection;
|
||||
|
||||
|
||||
public class DictionaryLoadingBar {
|
||||
private static final int NOTIFICATION_ID = 1;
|
||||
private static final String NOTIFICATION_CHANNEL_ID = "loading-notifications";
|
||||
|
|
@ -21,6 +29,8 @@ public class DictionaryLoadingBar {
|
|||
private final Resources resources;
|
||||
|
||||
private int maxProgress = 0;
|
||||
private int progress = 0;
|
||||
private boolean hasFailed = false;
|
||||
|
||||
|
||||
DictionaryLoadingBar(Context context) {
|
||||
|
|
@ -40,12 +50,49 @@ public class DictionaryLoadingBar {
|
|||
}
|
||||
|
||||
notificationBuilder
|
||||
.setSmallIcon(R.drawable.ic_notification)
|
||||
.setSmallIcon(android.R.drawable.stat_notify_sync)
|
||||
.setCategory(NotificationCompat.CATEGORY_PROGRESS)
|
||||
.setOnlyAlertOnce(true);
|
||||
}
|
||||
|
||||
|
||||
public void setFileCount(int count) {
|
||||
maxProgress = count * 100;
|
||||
}
|
||||
|
||||
|
||||
public boolean isCompleted() {
|
||||
return progress >= maxProgress;
|
||||
}
|
||||
|
||||
|
||||
public boolean isFailed() {
|
||||
return hasFailed;
|
||||
}
|
||||
|
||||
|
||||
public void show(Bundle data) {
|
||||
String error = data.getString("error", null);
|
||||
|
||||
if (error != null) {
|
||||
hasFailed = true;
|
||||
showError(
|
||||
error,
|
||||
data.getInt("languageId", -1),
|
||||
data.getLong("fileLine", -1),
|
||||
data.getString("word", "")
|
||||
);
|
||||
} else {
|
||||
hasFailed = false;
|
||||
showProgress(
|
||||
data.getInt("currentFile", 0),
|
||||
data.getInt("progress", 0),
|
||||
data.getInt("languageId", -1)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private String generateTitle(int languageId) {
|
||||
Language lang = LanguageCollection.getLanguage(languageId);
|
||||
|
||||
|
|
@ -57,36 +104,78 @@ public class DictionaryLoadingBar {
|
|||
}
|
||||
|
||||
|
||||
public void show(int currentFile, int currentFileProgress, int languageId) {
|
||||
int totalProgress = 100 * currentFile + currentFileProgress;
|
||||
private void showProgress(int currentFile, int currentFileProgress, int languageId) {
|
||||
progress = 100 * currentFile + currentFileProgress;
|
||||
|
||||
if (currentFileProgress < 0) {
|
||||
hide();
|
||||
return;
|
||||
} else if (totalProgress >= maxProgress) {
|
||||
notificationBuilder
|
||||
.setContentTitle(generateTitle(-1))
|
||||
.setContentText(resources.getString(R.string.dictionary_loaded))
|
||||
.setOngoing(false)
|
||||
.setProgress(0, 0, false);
|
||||
} else if (progress >= maxProgress) {
|
||||
renderProgress(
|
||||
generateTitle(-1),
|
||||
resources.getString(R.string.completed),
|
||||
0,
|
||||
0
|
||||
);
|
||||
} else {
|
||||
notificationBuilder
|
||||
.setContentTitle(generateTitle(languageId))
|
||||
.setContentText(currentFileProgress + "%")
|
||||
.setOngoing(true)
|
||||
.setProgress(maxProgress, totalProgress, false);
|
||||
renderProgress(
|
||||
generateTitle(languageId),
|
||||
currentFileProgress + "%",
|
||||
progress,
|
||||
maxProgress
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void showError(String errorType, int langId, long line, String word) {
|
||||
Language lang = LanguageCollection.getLanguage(langId);
|
||||
String message;
|
||||
|
||||
if (lang == null || errorType.equals(InvalidLanguageException.class.getSimpleName())) {
|
||||
message = resources.getString(R.string.add_word_invalid_language);
|
||||
} else if (errorType.equals(DictionaryImportException.class.getSimpleName()) || errorType.equals(InvalidLanguageCharactersException.class.getSimpleName())) {
|
||||
String languageName = lang.getName();
|
||||
message = resources.getString(R.string.dictionary_load_bad_char, word, line, languageName);
|
||||
} else if (errorType.equals(IOException.class.getSimpleName()) || errorType.equals(FileNotFoundException.class.getSimpleName())) {
|
||||
String languageName = lang.getName();
|
||||
message = resources.getString(R.string.dictionary_not_found, languageName);
|
||||
} else {
|
||||
String languageName = lang.getName();
|
||||
message = resources.getString(R.string.dictionary_load_error, languageName, errorType);
|
||||
}
|
||||
|
||||
renderError(generateTitle(-1), message);
|
||||
}
|
||||
|
||||
|
||||
private void hide() {
|
||||
manager.cancel(NOTIFICATION_ID);
|
||||
}
|
||||
|
||||
|
||||
private void renderError(String title, String message) {
|
||||
NotificationCompat.BigTextStyle bigMessage = new NotificationCompat.BigTextStyle();
|
||||
bigMessage.setBigContentTitle(title);
|
||||
bigMessage.bigText(message);
|
||||
|
||||
notificationBuilder
|
||||
.setSmallIcon(android.R.drawable.stat_notify_error)
|
||||
.setStyle(bigMessage)
|
||||
.setOngoing(false)
|
||||
.setProgress(0, 0, false);
|
||||
|
||||
manager.notify(NOTIFICATION_ID, notificationBuilder.build());
|
||||
}
|
||||
|
||||
|
||||
public void hide() {
|
||||
manager.cancel(NOTIFICATION_ID);
|
||||
}
|
||||
private void renderProgress(String title, String message, int progress, int maxProgress) {
|
||||
notificationBuilder
|
||||
.setSmallIcon(progress < maxProgress ? android.R.drawable.stat_notify_sync : R.drawable.ic_done)
|
||||
.setOngoing(progress < maxProgress)
|
||||
.setProgress(maxProgress, progress, false)
|
||||
.setContentTitle(title)
|
||||
.setContentText(message);
|
||||
|
||||
|
||||
public void setFileCount(int count) {
|
||||
maxProgress = count * 100;
|
||||
manager.notify(NOTIFICATION_ID, notificationBuilder.build());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package io.github.sspanak.tt9.ui;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.ListActivity;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
|
|
@ -14,17 +13,12 @@ import android.view.View;
|
|||
import android.widget.ListAdapter;
|
||||
import android.widget.ListView;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import io.github.sspanak.tt9.R;
|
||||
import io.github.sspanak.tt9.db.DictionaryDb;
|
||||
import io.github.sspanak.tt9.db.DictionaryImportAlreadyRunningException;
|
||||
import io.github.sspanak.tt9.db.DictionaryImportException;
|
||||
import io.github.sspanak.tt9.db.DictionaryLoader;
|
||||
import io.github.sspanak.tt9.languages.InvalidLanguageCharactersException;
|
||||
import io.github.sspanak.tt9.languages.InvalidLanguageException;
|
||||
import io.github.sspanak.tt9.languages.Language;
|
||||
import io.github.sspanak.tt9.languages.LanguageCollection;
|
||||
import io.github.sspanak.tt9.preferences.T9Preferences;
|
||||
|
|
@ -117,22 +111,11 @@ public class TraditionalT9Settings extends ListActivity implements DialogInterfa
|
|||
Handler loadHandler = new Handler(Looper.getMainLooper()) {
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
String error = msg.getData().getString("error", null);
|
||||
|
||||
if (error != null) {
|
||||
progressBar.hide();
|
||||
handleError(
|
||||
error,
|
||||
msg.getData().getInt("languageId", -1),
|
||||
msg.getData().getLong("fileLine", -1),
|
||||
msg.getData().getString("word", "")
|
||||
);
|
||||
} else {
|
||||
progressBar.show(
|
||||
msg.getData().getInt("currentFile", 0),
|
||||
msg.getData().getInt("progress", 0),
|
||||
msg.getData().getInt("languageId", -1)
|
||||
);
|
||||
progressBar.show(msg.getData());
|
||||
if (progressBar.isCompleted()) {
|
||||
UI.toast(mContext, R.string.dictionary_loaded);
|
||||
} else if (progressBar.isFailed()) {
|
||||
UI.toast(mContext, R.string.dictionary_load_failed);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -145,37 +128,7 @@ public class TraditionalT9Settings extends ListActivity implements DialogInterfa
|
|||
loader.load(loadHandler, languages);
|
||||
} catch (DictionaryImportAlreadyRunningException e) {
|
||||
loader.stop();
|
||||
UI.toast(this, getString(R.string.dictionary_import_cancelled));
|
||||
UI.toast(this, getString(R.string.dictionary_load_cancelled));
|
||||
}
|
||||
}
|
||||
|
||||
private void handleError(String errorType, int langId, long line, String word) {
|
||||
Language lang = LanguageCollection.getLanguage(langId);
|
||||
String message;
|
||||
|
||||
if (lang == null || errorType.equals(InvalidLanguageException.class.getSimpleName())) {
|
||||
message = getString(R.string.add_word_invalid_language);
|
||||
} else if (errorType.equals(DictionaryImportException.class.getSimpleName()) || errorType.equals(InvalidLanguageCharactersException.class.getSimpleName())) {
|
||||
String languageName = lang.getName();
|
||||
message = getString(R.string.dictionary_import_bad_char, word, line, languageName);
|
||||
} else if (errorType.equals(IOException.class.getSimpleName()) || errorType.equals(FileNotFoundException.class.getSimpleName())) {
|
||||
String languageName = lang.getName();
|
||||
message = getString(R.string.dictionary_not_found, languageName);
|
||||
} else {
|
||||
String languageName = lang.getName();
|
||||
message = getString(R.string.dictionary_import_error, languageName, errorType);
|
||||
}
|
||||
|
||||
showErrorDialog(getString(R.string.dictionary_load_title), message);
|
||||
}
|
||||
|
||||
private void showErrorDialog(CharSequence title, CharSequence msg) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder
|
||||
.setMessage(msg)
|
||||
.setTitle(title)
|
||||
.setNeutralButton(android.R.string.ok, (dialog, id) -> dialog.dismiss());
|
||||
AlertDialog dialog = builder.create();
|
||||
dialog.show();
|
||||
}
|
||||
}
|
||||
|
|
|
|||