significantly simplified Add Word dialog (no Activity hack)
This commit is contained in:
parent
18c2ab8440
commit
b88957ff5f
17 changed files with 50 additions and 83 deletions
|
|
@ -3,7 +3,6 @@ package io.github.sspanak.tt9.ime;
|
|||
import android.view.KeyEvent;
|
||||
|
||||
import io.github.sspanak.tt9.R;
|
||||
import io.github.sspanak.tt9.db.DataStore;
|
||||
import io.github.sspanak.tt9.db.words.DictionaryLoader;
|
||||
import io.github.sspanak.tt9.ime.modes.InputMode;
|
||||
import io.github.sspanak.tt9.ime.modes.InputModeKind;
|
||||
|
|
@ -112,14 +111,7 @@ abstract public class CommandHandler extends TextEditingHandler {
|
|||
mainView.hideCommandPalette();
|
||||
resetStatus();
|
||||
|
||||
String word = textField.getSurroundingWord(mLanguage);
|
||||
if (word.isEmpty()) {
|
||||
UI.toastLong(this, R.string.add_word_no_selection);
|
||||
} else if (settings.getAddWordsNoConfirmation()) {
|
||||
DataStore.put((res) -> UI.toastLongFromAsync(this, res.toHumanFriendlyString(this)), mLanguage, word);
|
||||
} else {
|
||||
AddWordDialog.show(this, mLanguage.getId(), word);
|
||||
}
|
||||
new AddWordDialog(getFinalContext(), mLanguage, textField.getSurroundingWord(mLanguage)).show();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,80 +1,81 @@
|
|||
package io.github.sspanak.tt9.ui.dialogs;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.inputmethodservice.InputMethodService;
|
||||
import android.app.Dialog;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import io.github.sspanak.tt9.R;
|
||||
import io.github.sspanak.tt9.db.DataStore;
|
||||
import io.github.sspanak.tt9.db.entities.AddWordResult;
|
||||
import io.github.sspanak.tt9.ime.TraditionalT9;
|
||||
import io.github.sspanak.tt9.languages.Language;
|
||||
import io.github.sspanak.tt9.languages.LanguageCollection;
|
||||
import io.github.sspanak.tt9.util.ConsumerCompat;
|
||||
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
|
||||
import io.github.sspanak.tt9.ui.PopupBuilder;
|
||||
import io.github.sspanak.tt9.ui.UI;
|
||||
import io.github.sspanak.tt9.ui.main.MainView;
|
||||
|
||||
public class AddWordDialog extends ThemedPopupDialog {
|
||||
public static final String TYPE = "tt9.popup_dialog.add_word";
|
||||
public static final String PARAMETER_LANGUAGE = "lang";
|
||||
public static final String PARAMETER_WORD = "word";
|
||||
@Nullable private final MainView mainView;
|
||||
@NonNull private final Language language;
|
||||
@NonNull private final SettingsStore settings;
|
||||
@Nullable private final String word;
|
||||
|
||||
private Language language;
|
||||
private String word;
|
||||
private Dialog popup;
|
||||
|
||||
|
||||
AddWordDialog(@NonNull Context context, @NonNull Intent intent, ConsumerCompat<String> activityFinisher) {
|
||||
super(context, activityFinisher, R.style.TTheme_AddWord);
|
||||
title = context.getResources().getString(R.string.add_word_title);
|
||||
OKLabel = context.getResources().getString(R.string.add_word_add);
|
||||
parseIntent(context, intent);
|
||||
public AddWordDialog(@NonNull TraditionalT9 tt9, @NonNull Language language, @Nullable String word) {
|
||||
super(tt9, null, R.style.TTheme_AddWord);
|
||||
mainView = tt9.getMainView();
|
||||
|
||||
title = tt9.getResources().getString(R.string.add_word_title);
|
||||
OKLabel = tt9.getResources().getString(R.string.add_word_add);
|
||||
message = tt9.getString(R.string.add_word_confirm, word, language.getName());
|
||||
settings = tt9.getSettings();
|
||||
|
||||
this.language = language;
|
||||
this.word = word;
|
||||
}
|
||||
|
||||
|
||||
private void parseIntent(@NonNull Context context, @NonNull Intent intent) {
|
||||
word = intent.getStringExtra(PARAMETER_WORD);
|
||||
|
||||
int languageId = intent.getIntExtra(PARAMETER_LANGUAGE, -1);
|
||||
language = LanguageCollection.getLanguage(languageId);
|
||||
|
||||
if (language == null) {
|
||||
message = context.getString(R.string.add_word_invalid_language_x, languageId);
|
||||
} else {
|
||||
message = context.getString(R.string.add_word_confirm, word, language.getName());
|
||||
@Override
|
||||
protected void close() {
|
||||
if (popup != null) {
|
||||
popup.dismiss();
|
||||
popup = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void onOK() {
|
||||
if (language != null) {
|
||||
DataStore.put(this::onAddingFinished, language, word);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void onAddingFinished(AddWordResult addingResult) {
|
||||
activityFinisher.accept(addingResult.toHumanFriendlyString(context));
|
||||
close();
|
||||
DataStore.put(
|
||||
(result) -> UI.toastLongFromAsync(context, result.toHumanFriendlyString(context)),
|
||||
language,
|
||||
word
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
void show() {
|
||||
if (message == null || word == null || word.isEmpty()) {
|
||||
public void show() {
|
||||
if (word == null || word.isEmpty()) {
|
||||
UI.toastLong(context, R.string.add_word_no_selection);
|
||||
close();
|
||||
return;
|
||||
}
|
||||
|
||||
super.show(this::onOK);
|
||||
if (settings.getAddWordsNoConfirmation()) {
|
||||
onOK();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
public static void show(InputMethodService ims, int language, String currentWord) {
|
||||
Intent intent = new Intent(ims, PopupDialogActivity.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
|
||||
intent.putExtra(PARAMETER_DIALOG_TYPE, TYPE);
|
||||
intent.putExtra(PARAMETER_LANGUAGE, language);
|
||||
intent.putExtra(PARAMETER_WORD, currentWord);
|
||||
ims.startActivity(intent);
|
||||
popup = new PopupBuilder(context)
|
||||
.setCancelable(true)
|
||||
.setTitle(title)
|
||||
.setMessage(message)
|
||||
.setPositiveButton(OKLabel, this::onOK)
|
||||
.setNegativeButton(true, null)
|
||||
.setOnKeyListener(this)
|
||||
.showFromIme(mainView);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import android.view.KeyEvent;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import io.github.sspanak.tt9.ui.PopupBuilder;
|
||||
import io.github.sspanak.tt9.util.ConsumerCompat;
|
||||
|
||||
abstract public class PopupDialog implements DialogInterface.OnKeyListener {
|
||||
|
|
@ -36,16 +35,5 @@ abstract public class PopupDialog implements DialogInterface.OnKeyListener {
|
|||
return false;
|
||||
}
|
||||
|
||||
protected void show(Runnable OKAction) {
|
||||
new PopupBuilder(context)
|
||||
.setCancelable(false)
|
||||
.setTitle(title)
|
||||
.setMessage(message)
|
||||
.setPositiveButton(OKLabel, OKAction)
|
||||
.setNegativeButton(true, () -> activityFinisher.accept(""))
|
||||
.setOnKeyListener(this)
|
||||
.show();
|
||||
}
|
||||
|
||||
abstract void show();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@ public class PopupDialogActivity extends AppCompatActivity {
|
|||
popupType = popupType != null ? popupType : "";
|
||||
|
||||
return switch (popupType) {
|
||||
case AddWordDialog.TYPE -> new AddWordDialog(this, i, this::onDialogClose);
|
||||
case AutoUpdateMonolog.TYPE -> new AutoUpdateMonolog(this, i, this::onDialogClose);
|
||||
default -> {
|
||||
Logger.w(LOG_TAG, "Unknown popup type: '" + popupType + "'. Not displaying anything.");
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
<string name="add_word_no_selection">Преместете показалеца върху дума, за да я добавите към речника.</string>
|
||||
<string name="add_word_blank">Не може да се въведе празна дума.</string>
|
||||
<string name="add_word_exist">Думата „%1$s“ вече съществува в речника.</string>
|
||||
<string name="add_word_invalid_language_x">Не може да се добави дума. Неразпознат език: „%1$d“.</string>
|
||||
<string name="add_word_success">„%1$s“ е добавена.</string>
|
||||
<string name="add_word_title">Добавяне на дума</string>
|
||||
<string name="commands_select_command">Изберете команда</string>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
<string name="add_word_no_selection">Bewegen Sie den Cursor innerhalb eines Wortes, um es hinzuzufügen.</string>
|
||||
<string name="add_word_blank">Leeres Wort nicht hinzugefügt.</string>
|
||||
<string name="add_word_exist">Das Wort \"%1$s\" ist bereits in Wörterbuch.</string>
|
||||
<string name="add_word_invalid_language_x">Wort kann nicht hinzugefügt werden. Unbekannte Sprache: \"%1$d\".</string>
|
||||
<string name="add_word_success">\"%1$s\" hinzugefügt.</string>
|
||||
<string name="add_word_title">Wort hinzufügen</string>
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
<string name="loading">Cargando…</string>
|
||||
<string name="error_unexpected">Ocurrió un error inesperado.</string>
|
||||
<string name="add_word_exist">La palabra \"%1$s\" ya esta en el diccionario.</string>
|
||||
<string name="add_word_invalid_language_x">No se puede agregar una palabra. Idioma desconocido: \"%1$d\".</string>
|
||||
<string name="add_word_success">\"%1$s\" añadida.</string>
|
||||
<string name="add_word_title">Agregar palabra</string>
|
||||
<string name="pref_category_abc_mode">Modo ABC</string>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
<string name="add_word_no_selection">Déplacez le curseur dans un mot pour l\'ajouter.</string>
|
||||
<string name="add_word_blank">Mot vide non ajouté.</string>
|
||||
<string name="add_word_exist">Le mot «%1$s» est déjà dans le dictionnaire.</string>
|
||||
<string name="add_word_invalid_language_x">Impossible d\'ajouter un mot. Langue inconnue : « %1$d ».</string>
|
||||
<string name="add_word_success">« %1$s » est ajouté</string>
|
||||
<string name="add_word_title">Ajouter un mot</string>
|
||||
<string name="commands_select_command">Sélectionner une commande</string>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
<string name="add_word_no_selection">Sposta il cursore dentro un parola per aggiungerla.</string>
|
||||
<string name="add_word_blank">Nessuna parola da aggiungere.</string>
|
||||
<string name="add_word_exist">Parola “%1$s” già nel dizionario.</string>
|
||||
<string name="add_word_invalid_language_x">Impossibile aggiungere una parola. Lingua sconosciuta: \"%1$d\".</string>
|
||||
<string name="add_word_success">\"%1$s\" aggiunta.</string>
|
||||
<string name="add_word_title">Aggiungi parola</string>
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
<string name="add_word_no_selection">הזיזו את הסמן בתוך מילה כדי להוסיף אותה.</string>
|
||||
<string name="add_word_blank">מילה ריקה לא נוספה</string>
|
||||
<string name="add_word_exist">המילה \"%1$s\" כבר קיימת במילון.</string>
|
||||
<string name="add_word_invalid_language_x">לא ניתן להוסיף מילה. שפה לא ידועה: \"%1$d\".</string>
|
||||
<string name="add_word_success">%1$s נוסף.</string>
|
||||
<string name="add_word_title">הוסף מילה</string>
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@
|
|||
<string name="add_word_no_selection">Perkelkite žymeklį prie žodžio kurį norite pridėti.</string>
|
||||
<string name="add_word_blank">Negalima pridėti tuščio žodžio.</string>
|
||||
<string name="add_word_exist">Žodis \"%1$s\" jau yra žodyne.</string>
|
||||
<string name="add_word_invalid_language_x">Negalima pridėti žodžio. Nežinoma kalba: \"%1$d\".</string>
|
||||
<string name="add_word_success">Žodis \"%1$s\" pridėtas.</string>
|
||||
<string name="add_word_title">Pridėti žodį</string>
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
<string name="add_word_no_selection">Verplaats de cursor binnen een woord om het toe te voegen.</string>
|
||||
<string name="add_word_blank">Leeg woord niet toegevoegd.</string>
|
||||
<string name="add_word_exist">Woord \"%1$s\" staat al in het woordenboek.</string>
|
||||
<string name="add_word_invalid_language_x">Kan geen woord toevoegen. Onbekende taal: \"%1$d\".</string>
|
||||
<string name="add_word_success">\"%1$s\" toegevoegd.</string>
|
||||
<string name="add_word_title">Woord toevoegen</string>
|
||||
<string name="commands_select_command">Een commando selecteren</string>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
<string name="add_word_no_selection">Mova o cursor dentro de uma palavra para adicioná-la.</string>
|
||||
<string name="add_word_blank">Palavra em branco, impossível adicionar.</string>
|
||||
<string name="add_word_exist">Palavra \"%1$s\" já está registrada.</string>
|
||||
<string name="add_word_invalid_language_x">Não é possível adicionar uma palavra. Idioma desconhecido: \"%1$d\".</string>
|
||||
<string name="add_word_success">\"%1$s\" adicionada.</string>
|
||||
<string name="add_word_title">Adicionar Palavra</string>
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
<string name="add_word_no_selection">Переместите курсор внутрь слова, чтобы добавить его.</string>
|
||||
<string name="add_word_blank">Невозможно добавить слово.</string>
|
||||
<string name="add_word_exist">Слово «%1$s» уже есть в словаре.</string>
|
||||
<string name="add_word_invalid_language_x">Невозможно добавить слово. Неизвестный язык: \"%1$d\".</string>
|
||||
<string name="add_word_success">«%1$s» добавлено</string>
|
||||
<string name="add_word_title">Добавить слово</string>
|
||||
<string name="commands_select_command">Выбрать команду</string>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
<string name="add_word_no_selection">Ekleme yapmak için imleci eklemek istediğiniz kelimeye götürün.</string>
|
||||
<string name="add_word_blank">Boşluk eklenemedi.</string>
|
||||
<string name="add_word_exist">\"%1$s\" kelimesi zaten kelime listesinde mevcut.</string>
|
||||
<string name="add_word_invalid_language_x">Kelime eklenemedi. Bilinmeyen dil: \"%1$d\".</string>
|
||||
<string name="add_word_success">\"%1$s\" başarıyla eklendi.</string>
|
||||
<string name="add_word_title">Kelime Ekle</string>
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@
|
|||
<string name="add_word_no_selection">Перемістіть курсор у слово, щоб додати його.</string>
|
||||
<string name="add_word_blank">Пусте слово не додано.</string>
|
||||
<string name="add_word_exist">Слово \"%1$s\" вже існує у словнику.</string>
|
||||
<string name="add_word_invalid_language_x">Не вдається додати слово. Невідома мова: \"%1$d\".</string>
|
||||
<string name="add_word_success">\"%1$s\" додано.</string>
|
||||
<string name="add_word_title">Додати слово</string>
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@
|
|||
<string name="add_word_blank">Blank word not added.</string>
|
||||
<string name="add_word_exist">Word \"%1$s\" is already in the dictionary.</string>
|
||||
<string name="add_word_invalid_language" translatable="false">Cannot add a word when no language is selected.</string>
|
||||
<string name="add_word_invalid_language_x">Cannot add a word. Unknown language: \"%1$d\".</string>
|
||||
<string name="add_word_success">\"%1$s\" added.</string>
|
||||
<string name="add_word_title">Add Word</string>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue