1
0
Fork 0

Initial setup screen (#212)

* enabled the launcher icon

* added an initial setup screen, for when TT9 is disabled

* documentation update
This commit is contained in:
Dimo Karaivanov 2023-03-17 10:37:02 +02:00 committed by GitHub
parent eee786ce56
commit 787ba1c1ef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 230 additions and 16 deletions

View file

@ -23,10 +23,11 @@
<meta-data android:name="android.view.im" android:resource="@xml/method"/>
</service>
<activity android:label="@string/app_settings" android:name="io.github.sspanak.tt9.preferences.PreferencesActivity"
<activity android:label="@string/app_name_short" android:name="io.github.sspanak.tt9.preferences.PreferencesActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

View file

@ -12,7 +12,7 @@ or get the APK from the [Releases Section](https://github.com/sspanak/tt9/releas
## System Requirements
- Android 4.4 or higher. _(Tested and confirmed on Android 4.4.2, 5.1.1 and 11)_
- Free space:
- Minimum 15 Mb when not using Predictive mode and no dictionaries are loaded.
- Minimum 25 Mb when not using Predictive mode and no dictionaries are loaded.
- Plenty of space per each enabled language in Predictive mode (25-100 Mb, depending on the word count).
- A hardware keypad or a keyboard. The application is not usable on touchscreen-only devices.

View file

@ -4,12 +4,11 @@ TT9 is an IME (Input Method Editor) for Android devices with hardware keypad. It
All source code, documentation and the privacy policy are available on Github: [https://github.com/sspanak/tt9](https://github.com/sspanak/tt9).
## Initial Setup
After installing, in order to use Traditional T9, you need to enable it as an Android keyboard. To do so:
After installing, in order to use Traditional T9, you need to enable it as an Android keyboard. To do so, click on the launcher icon. If you
need to take any action, you will see the Initial Setup screen, where you will be prompted to enable TT9 and set it as default system
keyboard.
- Go to Android Settings → System → Languages → Keyboards.
- Add Traditional T9 IME.
_The actual menu names may vary depending on your Android version and phone._
_If you don't see the icon right after installing, restart your phone and it should appear. Android is trying to save some battery life by not refreshing the newly installed apps list in some cases._
### Enabling Predictive Mode
With the default settings, it is only possible to type in 123 and ABC modes. In order to enable the Predictive mode, there are additional steps:
@ -124,15 +123,15 @@ On the Settings screen, you can choose languages for typing, configure the keypa
### How to access the Settings?
#### Method 1
- Start typing in a text field to wake up TT9.
- Use the on-screen gear button.
Click on the Traditional T9 launcher icon.
#### Method 2
- Start typing in a text field to wake up TT9.
- Use the assigned hotkey [Default: Hold ✱].
- Use the on-screen gear button or press the assigned hotkey [Default: Hold ✱].
#### Method 3
- Go to Android Settings → System → Languages → Keyboards (or On-Screen Keyboards). This is where all installed keyboards are configured.
- Go to Android Settings → System → Languages → Keyboards (or On-Screen Keyboards/Virtual Keyboards). This is where all installed keyboards
are configured.
- Select "Traditional T9".
_The actual menu names may vary depending on your phone, Android version and language._

View file

@ -35,6 +35,11 @@
<string name="function_show_settings_key">Настройки</string>
<string name="function_reset_keys_title">Възстанови стандартните бутони</string>
<string name="function_reset_keys_done">Възстановени са стандартните „бързи“ бутони.</string>
<string name="setup_keyboard_status">Състояние</string>
<string name="setup_default_keyboard">Избор на клавиатура по подразбиране</string>
<string name="setup_goto_main_screen">Назад към Настройки</string>
<string name="setup_tt9_on">Traditional T9 е активен</string>
<string name="setup_tt9_off">Traditional T9 е изключен. Натиснете тук, за да го включите от настройките на Андроид.</string>
<string name="key_hold_key">(задръж)</string>
<string name="dictionary_loading_indeterminate">Зареждане на речник</string>
<string name="dictionary_load_cancelled">Зареждането е отменено.</string>
@ -52,4 +57,5 @@
<string name="pref_upside_down_keys">Бутони в обратен ред</string>
<string name="pref_upside_down_keys_summary">Включете настройката, ако на първият ред са 789, вместо 123.</string>
<string name="dictionary_truncate_unselected">Изтрий неизбраните</string>
<string name="pref_category_setup">Начална настройка</string>
</resources>

View file

@ -20,4 +20,5 @@
<string name="pref_category_keypad">Tastenfeld</string>
<string name="char_space">Leerzeichen</string>
<string name="char_newline">Neue Zeile</string>
<string name="pref_category_setup">Ersteinrichtung</string>
</resources>

View file

@ -15,6 +15,9 @@
<string name="pref_choose_languages">Idiomas</string>
<string name="pref_dark_theme">Tema oscuro</string>
<string name="char_space">Espacio</string>
<string name="setup_keyboard_status">Estado</string>
<string name="setup_default_keyboard">Selecciona teclado predeterminado</string>
<string name="setup_goto_main_screen">Volver a la pantalla de configuración</string>
<string name="char_newline">Nueva línea</string>
<string name="dictionary_load_title">Cargar diccionario</string>
<string name="dictionary_loading_indeterminate">Cargando diccionario</string>
@ -31,4 +34,5 @@
<string name="dictionary_loaded">Diccionario cargado con éxito.</string>
<string name="pref_upside_down_keys">Orden de teclas inverso</string>
<string name="pref_upside_down_keys_summary">Habilite la configuración si hay 789 en la primera fila, en lugar de 123.</string>
<string name="pref_category_setup">Configuración inicial</string>
</resources>

View file

@ -37,10 +37,16 @@
<string name="dictionary_missing_go_load_it">Pas de dictionnaire pour langue «%1$s». Veuillez le charger à l\'écran Paramètres.</string>
<string name="pref_category_keypad">Clavier</string>
<string name="char_space">Espace</string>
<string name="setup_keyboard_status">État</string>
<string name="setup_default_keyboard">Sélectionnez le clavier par défaut</string>
<string name="setup_goto_main_screen">Retour à l\'écran des paramètres</string>
<string name="setup_tt9_on">Traditional T9 est activé</string>
<string name="setup_tt9_off">Traditional T9 est désactivé. Cliquez ici pour l\'activer dans les paramètres Android.</string>
<string name="char_newline">Nouvelle ligne</string>
<string name="pref_double_zero_char">Caractère lorsque «0» est appuyé deux fois</string>
<string name="add_word_field_placeholder">Tapez un mot…</string>
<string name="pref_upside_down_keys">Inverser l\'ordre des clés</string>
<string name="pref_upside_down_keys_summary">Activez le paramètre s\'il y a 789 sur le premier rang, au lieu de 123.</string>
<string name="dictionary_truncate_unselected">Vider les non sélectionnés</string>
<string name="pref_category_setup">Configuration initiale</string>
</resources>

View file

@ -24,8 +24,12 @@
<string name="dictionary_load_cancelled">Caricamento annullato.</string>
<string name="pref_category_keypad">Tastiera</string>
<string name="char_space">Spazio</string>
<string name="setup_keyboard_status">Stato</string>
<string name="setup_default_keyboard">Scegli Tastiera predefinita</string>
<string name="setup_goto_main_screen">Torna a Impostazioni</string>
<string name="char_newline">Nuova riga</string>
<string name="pref_upside_down_keys">Invertire l\'ordine delle chiavi</string>
<string name="pref_upside_down_keys_summary">Abilita l\'impostazione se ci sono 789 sulla prima riga, invece di 123.</string>
<string name="pref_category_setup">Configurazione iniziale</string>
</resources>

View file

@ -19,4 +19,5 @@
<string name="pref_category_keypad">Toetsenbord</string>
<string name="char_space">Spatie</string>
<string name="char_newline">Nieuwe regel</string>
<string name="pref_category_setup">Initiële setup</string>
</resources>

View file

@ -1,7 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="help_url">https://github.com/sspanak/tt9/blob/master/docs/user-manual.md</string>
<string name="app_name" translatable="false">Traditional T9</string>
<string name="app_settings">Configurações do Teclado</string>
<string name="completed">Concluído</string>
<string name="error_unexpected">Um erro inesperado aconteceu.</string>
@ -9,7 +7,6 @@
<string name="add_word_add">Adicionar</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" translatable="false">Cannot add a word when no language is selected</string>
<string name="add_word_title">Adicionar Palavra</string>
<string name="add_word_field_placeholder">Escreva uma palavra…</string>

View file

@ -45,6 +45,11 @@
<string name="function_show_settings_key">Настройки</string>
<string name="function_reset_keys_title">Вернуть кнопки по умолчанию</string>
<string name="function_reset_keys_done">Настройки кнопок по умолчанию восстановлены.</string>
<string name="setup_keyboard_status">Состояние</string>
<string name="setup_default_keyboard">Выберите клавиатуру по умолчанию</string>
<string name="setup_goto_main_screen">Вернуться к настройкам</string>
<string name="setup_tt9_on">Traditional T9 активен</string>
<string name="setup_tt9_off">Traditional T9 отключен. Нажмите здесь, чтобы включить его в настройках Android.</string>
<string name="key_hold_key">(зажать)</string>
<string name="key_back">Назад</string>
<string name="key_call">Позвонить</string>
@ -52,4 +57,5 @@
<string name="pref_upside_down_keys">Перевернутая клавиатура</string>
<string name="pref_upside_down_keys_summary">Используйте настройку, если в первом ряду 789 вместо 123.</string>
<string name="dictionary_truncate_unselected">Очистить невыбранные</string>
<string name="pref_category_setup">Начальная настройка</string>
</resources>

View file

@ -37,6 +37,11 @@
<string name="pref_show_soft_function_keys">Кнопки на екрані</string>
<string name="key_back">Назад</string>
<string name="key_call">Виклик</string>
<string name="setup_keyboard_status">Стан</string>
<string name="setup_default_keyboard">Вибрати стандартну клавіатуру</string>
<string name="setup_goto_main_screen">Назад до налаштувань</string>
<string name="setup_tt9_on">Traditional T9 активний</string>
<string name="setup_tt9_off">Traditional T9 вимкнено. Натисніть тут, щоб увімкнути його в налаштуваннях Android.</string>
<string name="key_hold_key">(затиснути)</string>
<string name="function_add_word_key">Додати нове слово</string>
<string name="function_backspace_key">Стерти</string>
@ -52,4 +57,5 @@
<string name="pref_upside_down_keys">Зворотна клавіатура</string>
<string name="pref_upside_down_keys_summary">Використовуйте налаштування, якщо 789 у першому рядку замість 123.</string>
<string name="dictionary_truncate_unselected">Очистіть невибрані</string>
<string name="pref_category_setup">Початкове налаштування</string>
</resources>

View file

@ -2,6 +2,7 @@
<resources>
<string translatable="false" name="help_url">https://github.com/sspanak/tt9/blob/master/docs/user-manual.md</string>
<string name="app_name" translatable="false">Traditional T9</string>
<string name="app_name_short" translatable="false">TT9</string>
<string name="app_settings">TT9 Settings</string>
<string name="completed">Completed</string>
<string name="error_unexpected">Unexpected error occurred.</string>
@ -18,6 +19,7 @@
<string name="pref_category_predictive_mode">Predictive Mode</string>
<string name="pref_category_function_keys">Select Hotkeys</string>
<string name="pref_category_keypad">Keypad</string>
<string name="pref_category_setup">Initial Setup</string>
<string name="pref_auto_space">Automatic Space</string>
<string name="pref_auto_space_summary">Automatically add a space after punctuation or words.</string>
@ -53,6 +55,13 @@
<string name="function_reset_keys_title">Restore Default Keys</string>
<string name="function_reset_keys_done">Default key settings restored.</string>
<string name="setup_keyboard_status">Status</string>
<string name="setup_default_keyboard">Select Default Keyboard</string>
<string name="setup_goto_main_screen">Return to Settings</string>
<string name="setup_tt9_on">Traditional T9 is enabled</string>
<string name="setup_tt9_off">Traditional T9 is disabled. Click here to enable it from Android Settings.</string>
<string name="key_hold_key">(hold)</string>
<string name="key_none" translatable="false">--</string>
<string name="key_back">Back</string>

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:layout="@layout/pref_text"
app:orderingFromXml="true">
<Preference
app:key="global_tt9_status"
app:layout="@layout/pref_text"
app:title="@string/setup_keyboard_status" />
<Preference
app:key="global_default_keyboard"
app:layout="@layout/pref_text"
app:title="@string/setup_default_keyboard" />
<Preference
app:fragment="io.github.sspanak.tt9.preferences.MainScreen"
app:key="goto_main_screen"
app:layout="@layout/pref_text"
app:title="@string/setup_goto_main_screen"
app:enabled="false" />
<PreferenceCategory
android:title="@string/pref_category_about"
app:layout="@layout/pref_category"
app:singleLineTitle="true">
<Preference
app:key="version_info"
app:layout="@layout/pref_text"
app:title="@string/app_name" />
</PreferenceCategory>
</PreferenceScreen>

View file

@ -0,0 +1,27 @@
package io.github.sspanak.tt9.ime.helpers;
import android.content.Context;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
public class GlobalKeyboardSettings {
private final InputMethodManager inputManager;
private final String packageName;
public GlobalKeyboardSettings(Context context, InputMethodManager inputManager) {
this.inputManager = inputManager;
packageName = context.getPackageName();
}
public boolean isTT9Enabled() {
for (final InputMethodInfo imeInfo : inputManager.getEnabledInputMethodList()) {
if (packageName.equals(imeInfo.getPackageName())) {
return true;
}
}
return false;
}
}

View file

@ -1,6 +1,7 @@
package io.github.sspanak.tt9.preferences;
import android.os.Bundle;
import android.view.inputmethod.InputMethodManager;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
@ -14,20 +15,24 @@ import androidx.preference.PreferenceFragmentCompat;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.db.DictionaryDb;
import io.github.sspanak.tt9.db.DictionaryLoader;
import io.github.sspanak.tt9.ime.helpers.GlobalKeyboardSettings;
import io.github.sspanak.tt9.ime.helpers.InputModeValidator;
import io.github.sspanak.tt9.preferences.screens.AppearanceScreen;
import io.github.sspanak.tt9.preferences.screens.DictionariesScreen;
import io.github.sspanak.tt9.preferences.screens.HotkeysScreen;
import io.github.sspanak.tt9.preferences.screens.SetupScreen;
import io.github.sspanak.tt9.preferences.screens.KeyPadScreen;
import io.github.sspanak.tt9.preferences.screens.MainSettingsScreen;
import io.github.sspanak.tt9.ui.DictionaryLoadingBar;
public class PreferencesActivity extends AppCompatActivity implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
public SettingsStore settings;
public GlobalKeyboardSettings globalKeyboardSettings;
@Override
protected void onCreate(Bundle savedInstanceState) {
globalKeyboardSettings = new GlobalKeyboardSettings(this, (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE));
settings = new SettingsStore(this);
applyTheme();
@ -78,7 +83,7 @@ public class PreferencesActivity extends AppCompatActivity implements Preference
case "KeyPad":
return new KeyPadScreen(this);
default:
return new MainSettingsScreen(this);
return globalKeyboardSettings.isTT9Enabled() ? new MainSettingsScreen(this) : new SetupScreen(this);
}
}
@ -107,7 +112,7 @@ public class PreferencesActivity extends AppCompatActivity implements Preference
}
setContentView(R.layout.preferences_container);
displayScreen(new MainSettingsScreen(this), false);
displayScreen(getScreen("default"), false);
}

View file

@ -0,0 +1,27 @@
package io.github.sspanak.tt9.preferences.items;
import android.content.Intent;
import android.provider.Settings;
import androidx.preference.Preference;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
public class ItemSelectGlobalKeyboard extends ItemClickable {
private final Intent clickIntent;
private final PreferencesActivity activity;
public ItemSelectGlobalKeyboard(Preference item, PreferencesActivity prefs) {
super(item);
this.activity = prefs;
clickIntent = new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS);
clickIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
@Override
protected boolean onClick(Preference p) {
activity.startActivity(clickIntent);
return false;
}
}

View file

@ -0,0 +1,23 @@
package io.github.sspanak.tt9.preferences.items;
import android.content.Context;
import android.view.inputmethod.InputMethodManager;
import androidx.preference.Preference;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
public class ItemSetDefaultGlobalKeyboard extends ItemClickable {
private final PreferencesActivity activity;
public ItemSetDefaultGlobalKeyboard(Preference item, PreferencesActivity prefs) {
super(item);
this.activity = prefs;
}
@Override
protected boolean onClick(Preference p) {
((InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE)).showInputMethodPicker();
return false;
}
}

View file

@ -0,0 +1,60 @@
package io.github.sspanak.tt9.preferences.screens;
import androidx.preference.Preference;
import io.github.sspanak.tt9.BuildConfig;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.preferences.items.ItemSelectGlobalKeyboard;
import io.github.sspanak.tt9.preferences.items.ItemSetDefaultGlobalKeyboard;
public class SetupScreen extends BaseScreenFragment {
public SetupScreen() { init(); }
public SetupScreen(PreferencesActivity activity) { init(activity); }
@Override protected int getTitle() { return R.string.pref_category_setup;}
@Override protected int getXml() { return R.xml.prefs_screen_setup; }
@Override
public void onCreate() {
createKeyboardSection();
createAboutSection();
}
@Override
public void onResume() {
super.onResume();
createKeyboardSection();
}
private void createKeyboardSection() {
boolean isTT9On = activity.globalKeyboardSettings.isTT9Enabled();
Preference statusItem = findPreference("global_tt9_status");
if (statusItem != null) {
statusItem.setSummary(
isTT9On ? R.string.setup_tt9_on : R.string.setup_tt9_off
);
new ItemSelectGlobalKeyboard(statusItem, activity).enableClickHandler();
}
Preference defaultKeyboardItem = findPreference("global_default_keyboard");
if (defaultKeyboardItem != null) {
new ItemSetDefaultGlobalKeyboard(defaultKeyboardItem, activity).enableClickHandler();
}
Preference goToMain = findPreference("goto_main_screen");
if (goToMain != null) {
goToMain.setEnabled(isTT9On);
}
}
private void createAboutSection() {
Preference vi = findPreference("version_info");
if (vi != null) {
vi.setSummary(BuildConfig.VERSION_FULL);
}
}
}