building improvements: new versioning system and app ID (#30)
* new versioning system based on git * changed the application ID in compliance with the F-Droid inclusion policy * updated documentation
This commit is contained in:
parent
f4c93bf22b
commit
a250d66bbd
32 changed files with 130 additions and 114 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="org.nyanya.android.traditionalt9"
|
package="io.github.sspanak.traditionalt9"
|
||||||
android:versionCode="4"
|
android:versionCode="4"
|
||||||
android:versionName="git" >
|
android:versionName="git" >
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
android:label="@string/ime_name"
|
android:label="@string/ime_name"
|
||||||
android:theme="@style/AppTheme" >
|
android:theme="@style/AppTheme" >
|
||||||
<service
|
<service
|
||||||
android:name="org.nyanya.android.traditionalt9.TraditionalT9"
|
android:name="io.github.sspanak.traditionalt9.TraditionalT9"
|
||||||
android:permission="android.permission.BIND_INPUT_METHOD" >
|
android:permission="android.permission.BIND_INPUT_METHOD" >
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.view.InputMethod" />
|
<action android:name="android.view.InputMethod" />
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
<service android:name=".DBUpdateService" />
|
<service android:name=".DBUpdateService" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="org.nyanya.android.traditionalt9.TraditionalT9Settings"
|
android:name="io.github.sspanak.traditionalt9.TraditionalT9Settings"
|
||||||
android:label="@string/traditionalt9_settings" >
|
android:label="@string/traditionalt9_settings" >
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:theme="@android:style/Theme.Dialog"
|
android:theme="@android:style/Theme.Dialog"
|
||||||
android:name="org.nyanya.android.traditionalt9.AddWordAct"
|
android:name="io.github.sspanak.traditionalt9.AddWordAct"
|
||||||
android:label="@string/title_activity_add_word"
|
android:label="@string/title_activity_add_word"
|
||||||
android:excludeFromRecents="true" >
|
android:excludeFromRecents="true" >
|
||||||
</activity>
|
</activity>
|
||||||
|
|
|
||||||
53
README.md
53
README.md
|
|
@ -1,11 +1,33 @@
|
||||||
# Traditional T9
|
# Traditional T9
|
||||||
T9 IME input for Android devices with hardware keypad.
|
TT9 is an IME (Input Method Editor) for Android devices with hardware keypad. It supports multiple languages and predictive text typing. _NOTE: TT9 is not usable on touchscreen-only devices._
|
||||||
|
|
||||||
This is a clone of the [original project](https://github.com/Clam-/TraditionalT9) by Clam-.
|
This is a clone of the [original project](https://github.com/Clam-/TraditionalT9) by Clam-.
|
||||||
|
|
||||||
## About the project
|
## Building
|
||||||
traditional-t9 is an Input Method Editor for Android that implements predictive text using the hardware keypad on the device. **Useless without a hardware numerical keypad.**
|
The recommended way of building is using Android Studio. As the of time of writing this, the current version is Android Studio Chipmunk | 2021.2.1 Patch 1.
|
||||||
|
|
||||||
Original Wiki: [Traditional T9 keypad IME for Android](https://github.com/Clam-/TraditionalT9/wiki/Traditional-T9-keypad-IME-for-Android)
|
### Building a Debug .apk
|
||||||
|
If you have not configure Android Studio yet, follow [the official manual](https://developer.android.com/training/basics/firstapp), then follow the simple steps below to get the project running.
|
||||||
|
|
||||||
|
- _Import the project in Android Studio._
|
||||||
|
- _Prevent the "Default Activity not found" issue._ The app does not have a default view or a launcher icon. For this reason, you must configure Android Studio not to launch anything after installing, otherwise it will fail with "Default Activity not found" or a similar message. To do so:
|
||||||
|
- Open "Edit Configurations..." (Press Shift 3 times and select it from the command list)
|
||||||
|
- Go to "General" tab.
|
||||||
|
- Change "Launch Options" to "Nothing"
|
||||||
|
- Hit "OK"
|
||||||
|
|
||||||
|
That's it! Now you should be able to deploy and debug the app on your device.
|
||||||
|
|
||||||
|
You can find more info in this [Github issue](https://github.com/android/input-samples/issues/18).
|
||||||
|
|
||||||
|
### Building a Release .apk
|
||||||
|
The project is configured to build an unsigned release variant by default. You just need to select the "release" variant from Android Studio options, then `Build -> Rebuild Project`. After that, just ignore all warnings until you get to the end of the process. You will find the `.apk` in the generated 'build/' folder.
|
||||||
|
|
||||||
|
### Building a Signed .apk
|
||||||
|
- Make sure you have a signing key. If you don't have one, follow the [official manual](https://developer.android.com/studio/publish/app-signing#sign-apk).
|
||||||
|
- In `build.gradle` find the `signingConfigs` and `buildTypes` sections and uncomment them.
|
||||||
|
- Set properly the environment variables listed in `signingConfigs.release` _(You may need to restart Android Studio after that)_. Alternatively, you may simply type the actual key path, alias and passwords there. **Just make sure not to commit them!**
|
||||||
|
- Build the project normally. Android Studio should show you where it has generated the signed `.apk` file. If not, look for it in the `build/` folder.
|
||||||
|
|
||||||
## Adding a new language
|
## Adding a new language
|
||||||
To support a new language one needs to:
|
To support a new language one needs to:
|
||||||
|
|
@ -28,3 +50,26 @@ To support a new language one needs to:
|
||||||
- Find a suitable dictionary and add it to assets
|
- Find a suitable dictionary and add it to assets
|
||||||
|
|
||||||
That should be it? I hope.
|
That should be it? I hope.
|
||||||
|
|
||||||
|
## Using the app
|
||||||
|
TODO: Initial config, loading a dictionary...
|
||||||
|
#### Configuration Options
|
||||||
|
TODO...
|
||||||
|
#### Hotkeys
|
||||||
|
See [the original manual](https://github.com/Clam-/TraditionalT9/wiki/Hotkeys).
|
||||||
|
#### Key Remapping
|
||||||
|
See [the original manual](https://github.com/Clam-/TraditionalT9/wiki/Key-remapping).
|
||||||
|
|
||||||
|
## Word Lists
|
||||||
|
Here is detailed information and licenses about the word lists used:
|
||||||
|
- [Bulgarian word list](docs/bgWordlistReadme.txt)
|
||||||
|
- [English word list](docs/enWordlistReadme.txt)
|
||||||
|
- [French word list](docs/frWordlistReadme.txt)
|
||||||
|
- [German word list](docs/deWordlistReadme.txt)
|
||||||
|
- [Russian word list](docs/ruWordlistReadme.txt)
|
||||||
|
- [Ukrainian word list](docs/ukWordlistReadme.txt)
|
||||||
|
|
||||||
|
## License
|
||||||
|
- The source code, the logo image and the icons are licensed under the conditions described in [LICENSE.txt](LICENSE.txt).
|
||||||
|
- "Roboto" font is under [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).
|
||||||
|
- The word lists / dictionaries are licensed under the licenses provided in the [respective readme files](#word-lists), where applicable.
|
||||||
57
build.gradle
57
build.gradle
|
|
@ -7,10 +7,10 @@ buildscript {
|
||||||
classpath 'com.android.tools.build:gradle:7.2.1'
|
classpath 'com.android.tools.build:gradle:7.2.1'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
apply plugin: 'android'
|
apply plugin: 'com.android.application'
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation "androidx.core:core:1.5.0"
|
implementation "androidx.core:core:1.6.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
|
@ -33,49 +33,22 @@ def execThing ( String cmdStr ) {
|
||||||
standardOutput = stdout
|
standardOutput = stdout
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return stdout
|
return stdout.toString().trim()
|
||||||
|
}
|
||||||
|
|
||||||
|
def computeVersionCode = { ->
|
||||||
|
String commitsCount = execThing("git rev-list --count HEAD")
|
||||||
|
|
||||||
|
return Integer.valueOf(commitsCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
def computeVersionName = { ->
|
def computeVersionName = { ->
|
||||||
|
String tagsCount = execThing('git tag').split('\n').size() + 1 // initially, versions were 1-based
|
||||||
|
String lastTag = execThing('git describe --tags --abbrev=0')
|
||||||
|
String commitsSinceLastTag = execThing("git log $lastTag..HEAD --oneline").split('\n').size() + 1
|
||||||
|
String currentHash = execThing('git log -1 --format=%h')
|
||||||
|
|
||||||
String ver = "git-source"
|
return "$tagsCount.$commitsSinceLastTag ($currentHash)"
|
||||||
try {
|
|
||||||
if (execThing(" git status -z").toString().trim().equals("")) {
|
|
||||||
return "git-" + execThing(' git log -1 --format="%h"').toString().trim()
|
|
||||||
} else {
|
|
||||||
return ver
|
|
||||||
}
|
|
||||||
} catch (all) {
|
|
||||||
println "Cannot run git (not in path?), using default versioning"
|
|
||||||
}
|
|
||||||
|
|
||||||
return ver
|
|
||||||
}
|
|
||||||
|
|
||||||
def getProps() {
|
|
||||||
Properties props = new Properties()
|
|
||||||
File f = new File("t9build.properties")
|
|
||||||
if (!f.exists()) {
|
|
||||||
f.createNewFile()
|
|
||||||
}
|
|
||||||
props.load(new FileInputStream(f))
|
|
||||||
return props
|
|
||||||
}
|
|
||||||
|
|
||||||
def saveProps(Properties props) {
|
|
||||||
props.store(new FileOutputStream(new File("t9build.properties")), null)
|
|
||||||
}
|
|
||||||
|
|
||||||
// -PincrementBuildNumber assembleRelease
|
|
||||||
def computeVersionNumber = { ->
|
|
||||||
Properties props = getProps()
|
|
||||||
int verNum = Integer.valueOf(props.getProperty("verNum", "0"))
|
|
||||||
if (project.hasProperty('incrementBuildNumber')) {
|
|
||||||
verNum++
|
|
||||||
}
|
|
||||||
props.setProperty("verNum", String.valueOf(verNum))
|
|
||||||
saveProps(props)
|
|
||||||
return verNum
|
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
|
@ -106,7 +79,7 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 19
|
minSdkVersion 19
|
||||||
targetSdk 30
|
targetSdk 30
|
||||||
versionCode computeVersionNumber()
|
versionCode computeVersionCode()
|
||||||
versionName computeVersionName()
|
versionName computeVersionName()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
Bulgarian wordlist by: Miglen Georgiev
|
Bulgarian wordlist by: Miglen Georgiev
|
||||||
Version: f46eff1 (2022-04-26)
|
Version: f46eff1 (2022-04-26)
|
||||||
Words Count: 234114
|
Words Count: 234114
|
||||||
Source: https://github.com/miglen/bulgarian-wordlists
|
Source: https://github.com/miglen/bulgarian-wordlists/blob/master/wordlists/bg-words-validated-cyrillic.txt
|
||||||
License: https://github.com/miglen/bulgarian-wordlists/blob/master/LICENSE
|
License: https://github.com/miglen/bulgarian-wordlists/blob/master/LICENSE
|
||||||
|
|
||||||
All words validated against a real dictionary.
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
& source: http://www.winedt.org/Dict/
|
||||||
% file: de_neu.dic (de)
|
% file: de_neu.dic (de)
|
||||||
% version: 5 Jan 2005
|
% version: 5 Jan 2005 / with modifications
|
||||||
% New German spelling wordlist for WinEdt (or compatible) spellcheckers
|
% New German spelling wordlist for WinEdt (or compatible) spellcheckers
|
||||||
% wordcount: 532273 words
|
% wordcount: 532273 words
|
||||||
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
Spell Checking Oriented Word Lists (SCOWL)
|
// Source for English dictionary: http://wordlist.sourceforge.net/
|
||||||
|
|
||||||
|
Spell Checking Oriented Word Lists (SCOWL)
|
||||||
Revision 7.1 (SVN Revision 161)
|
Revision 7.1 (SVN Revision 161)
|
||||||
January 6, 2011
|
January 6, 2011
|
||||||
by Kevin Atkinson (kevina@gnu.org)
|
by Kevin Atkinson (kevina@gnu.org)
|
||||||
|
|
|
||||||
3
docs/frWordlistReadme.txt
Normal file
3
docs/frWordlistReadme.txt
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
French wordlist by: Christophe Pallier
|
||||||
|
Source: http://www.pallier.org/ressources/dicofr/dicofr.html
|
||||||
|
Words Count: 336531
|
||||||
1
docs/ruWordlistReadme.txt
Normal file
1
docs/ruWordlistReadme.txt
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Source for Russian dictionary: Various sources from Russian user
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:inputType="text"
|
android:inputType="text"
|
||||||
android:privateImeOptions="org.nyanya.android.traditionalt9.addword=true" >
|
android:privateImeOptions="io.github.sspanak.traditionalt9.addword=true" >
|
||||||
|
|
||||||
<requestFocus />
|
<requestFocus />
|
||||||
</EditText>
|
</EditText>
|
||||||
|
|
|
||||||
|
|
@ -21,5 +21,5 @@
|
||||||
<!-- for the Search Manager. -->
|
<!-- for the Search Manager. -->
|
||||||
|
|
||||||
<input-method xmlns:android="http://schemas.android.com/apk/res/android"
|
<input-method xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:settingsActivity="org.nyanya.android.traditionalt9.TraditionalT9Settings" >
|
android:settingsActivity="io.github.sspanak.traditionalt9.TraditionalT9Settings" >
|
||||||
</input-method>
|
</input-method>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
|
|
@ -10,7 +10,7 @@ import android.view.Menu;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
|
|
||||||
import org.nyanya.android.traditionalt9.T9DB.DBSettings.SETTING;
|
import io.github.sspanak.traditionalt9.T9DB.DBSettings.SETTING;
|
||||||
|
|
||||||
public class AddWordAct extends Activity {
|
public class AddWordAct extends Activity {
|
||||||
|
|
||||||
|
|
@ -24,9 +24,9 @@ public class AddWordAct extends Activity {
|
||||||
View v = getLayoutInflater().inflate(R.layout.addwordview, null);
|
View v = getLayoutInflater().inflate(R.layout.addwordview, null);
|
||||||
EditText et = (EditText) v.findViewById(R.id.add_word_text);
|
EditText et = (EditText) v.findViewById(R.id.add_word_text);
|
||||||
Intent i = getIntent();
|
Intent i = getIntent();
|
||||||
origword = i.getStringExtra("org.nyanya.android.traditionalt9.word");
|
origword = i.getStringExtra("io.github.sspanak.traditionalt9.word");
|
||||||
|
|
||||||
lang = i.getIntExtra("org.nyanya.android.traditionalt9.lang", -1);
|
lang = i.getIntExtra("io.github.sspanak.traditionalt9.lang", -1);
|
||||||
if (lang == -1) {
|
if (lang == -1) {
|
||||||
Log.e("AddWordAct.onCreate", "lang is invalid. How?");
|
Log.e("AddWordAct.onCreate", "lang is invalid. How?");
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import org.nyanya.android.traditionalt9.LangHelper.LANGUAGE;
|
import io.github.sspanak.traditionalt9.LangHelper.LANGUAGE;
|
||||||
|
|
||||||
import java.util.AbstractList;
|
import java.util.AbstractList;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
public class DBException extends Exception {
|
public class DBException extends Exception {
|
||||||
private static final long serialVersionUID = 376752656441823823L;
|
private static final long serialVersionUID = 376752656441823823L;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import android.app.IntentService;
|
import android.app.IntentService;
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
@ -14,7 +14,7 @@ import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.nyanya.android.traditionalt9.LangHelper.LANGUAGE;
|
import io.github.sspanak.traditionalt9.LangHelper.LANGUAGE;
|
||||||
|
|
||||||
import java.util.AbstractList;
|
import java.util.AbstractList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
|
@ -16,8 +16,8 @@ import android.view.inputmethod.EditorInfo;
|
||||||
import android.view.inputmethod.InputConnection;
|
import android.view.inputmethod.InputConnection;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.nyanya.android.traditionalt9.LangHelper.LANGUAGE;
|
import io.github.sspanak.traditionalt9.LangHelper.LANGUAGE;
|
||||||
import org.nyanya.android.traditionalt9.T9DB.DBSettings.SETTING;
|
import io.github.sspanak.traditionalt9.T9DB.DBSettings.SETTING;
|
||||||
|
|
||||||
import java.util.AbstractList;
|
import java.util.AbstractList;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -213,8 +213,8 @@ public class TraditionalT9 extends InputMethodService implements
|
||||||
Intent awintent = new Intent(this, AddWordAct.class);
|
Intent awintent = new Intent(this, AddWordAct.class);
|
||||||
awintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
awintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
awintent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
|
awintent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
|
||||||
awintent.putExtra("org.nyanya.android.traditionalt9.word", template);
|
awintent.putExtra("io.github.sspanak.traditionalt9.word", template);
|
||||||
awintent.putExtra("org.nyanya.android.traditionalt9.lang", mLang.id);
|
awintent.putExtra("io.github.sspanak.traditionalt9.lang", mLang.id);
|
||||||
clearState();
|
clearState();
|
||||||
currentInputConnection.setComposingText("", 0);
|
currentInputConnection.setComposingText("", 0);
|
||||||
currentInputConnection.finishComposingText();
|
currentInputConnection.finishComposingText();
|
||||||
|
|
@ -376,7 +376,7 @@ public class TraditionalT9 extends InputMethodService implements
|
||||||
}
|
}
|
||||||
String prevword = null;
|
String prevword = null;
|
||||||
if (attribute.privateImeOptions != null
|
if (attribute.privateImeOptions != null
|
||||||
&& attribute.privateImeOptions.equals("org.nyanya.android.traditionalt9.addword=true")) {
|
&& attribute.privateImeOptions.equals("io.github.sspanak.traditionalt9.addword=true")) {
|
||||||
mAddingWord = true;
|
mAddingWord = true;
|
||||||
// mAddingSkipInput = true;
|
// mAddingSkipInput = true;
|
||||||
// Log.d("onStartInput", "ADDING WORD");
|
// Log.d("onStartInput", "ADDING WORD");
|
||||||
|
|
@ -1,11 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
/*
|
|
||||||
Source for English dictionary: http://wordlist.sourceforge.net/
|
|
||||||
Source for Russian dictionary: Various sources from Russian user
|
|
||||||
Source for German dictionary: Modified version from http://www.winedt.org/Dict/
|
|
||||||
Source for French dictionary: http://www.pallier.org/ressources/dicofr/dicofr.html
|
|
||||||
*/
|
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
|
|
@ -33,11 +26,11 @@ import android.widget.Toast;
|
||||||
|
|
||||||
import com.stackoverflow.answer.UnicodeBOMInputStream;
|
import com.stackoverflow.answer.UnicodeBOMInputStream;
|
||||||
|
|
||||||
import org.nyanya.android.traditionalt9.LangHelper.LANGUAGE;
|
import io.github.sspanak.traditionalt9.LangHelper.LANGUAGE;
|
||||||
import org.nyanya.android.traditionalt9.T9DB.DBSettings.SETTING;
|
import io.github.sspanak.traditionalt9.T9DB.DBSettings.SETTING;
|
||||||
import org.nyanya.android.traditionalt9.settings.CustomInflater;
|
import io.github.sspanak.traditionalt9.settings.CustomInflater;
|
||||||
import org.nyanya.android.traditionalt9.settings.Setting;
|
import io.github.sspanak.traditionalt9.settings.Setting;
|
||||||
import org.nyanya.android.traditionalt9.settings.SettingAdapter;
|
import io.github.sspanak.traditionalt9.settings.SettingAdapter;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9;
|
package io.github.sspanak.traditionalt9;
|
||||||
|
|
||||||
import android.text.InputType;
|
import android.text.InputType;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9.settings;
|
package io.github.sspanak.traditionalt9.settings;
|
||||||
|
|
||||||
// http://stackoverflow.com/a/8488691
|
// http://stackoverflow.com/a/8488691
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@ public class CustomInflater {
|
||||||
if (token == XmlPullParser.START_TAG) {
|
if (token == XmlPullParser.START_TAG) {
|
||||||
if (!parser.getName().equals("Settings")) {
|
if (!parser.getName().equals("Settings")) {
|
||||||
//prepend package
|
//prepend package
|
||||||
Class aClass = Class.forName("org.nyanya.android.traditionalt9.settings."+parser.getName());
|
Class aClass = Class.forName("io.github.sspanak.traditionalt9.settings."+parser.getName());
|
||||||
Class<?>[] params = new Class[]{Context.class, AttributeSet.class, isettings.getClass()};
|
Class<?>[] params = new Class[]{Context.class, AttributeSet.class, isettings.getClass()};
|
||||||
Constructor<?> constructor = aClass.getConstructor(params);
|
Constructor<?> constructor = aClass.getConstructor(params);
|
||||||
try {
|
try {
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
package org.nyanya.android.traditionalt9.settings;
|
package io.github.sspanak.traditionalt9.settings;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import org.nyanya.android.traditionalt9.R;
|
import io.github.sspanak.traditionalt9.R;
|
||||||
|
|
||||||
public class Setting {
|
public class Setting {
|
||||||
String title;
|
String title;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9.settings;
|
package io.github.sspanak.traditionalt9.settings;
|
||||||
|
|
||||||
// https://github.com/codepath/android_guides/wiki/Using-an-ArrayAdapter-with-ListView
|
// https://github.com/codepath/android_guides/wiki/Using-an-ArrayAdapter-with-ListView
|
||||||
|
|
||||||
|
|
@ -9,7 +9,7 @@ import android.view.ViewGroup;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import org.nyanya.android.traditionalt9.R;
|
import io.github.sspanak.traditionalt9.R;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
package org.nyanya.android.traditionalt9.settings;
|
package io.github.sspanak.traditionalt9.settings;
|
||||||
|
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
|
|
||||||
import org.nyanya.android.traditionalt9.R;
|
import io.github.sspanak.traditionalt9.R;
|
||||||
import org.nyanya.android.traditionalt9.T9DB;
|
import io.github.sspanak.traditionalt9.T9DB;
|
||||||
import org.nyanya.android.traditionalt9.T9DB.DBSettings.SETTING;
|
import io.github.sspanak.traditionalt9.T9DB.DBSettings.SETTING;
|
||||||
|
|
||||||
public class SettingCheck extends Setting {
|
public class SettingCheck extends Setting {
|
||||||
boolean value;
|
boolean value;
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
package org.nyanya.android.traditionalt9.settings;
|
package io.github.sspanak.traditionalt9.settings;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
|
||||||
import org.nyanya.android.traditionalt9.R;
|
import io.github.sspanak.traditionalt9.R;
|
||||||
import org.nyanya.android.traditionalt9.T9DB;
|
import io.github.sspanak.traditionalt9.T9DB;
|
||||||
import org.nyanya.android.traditionalt9.T9DB.DBSettings.SETTING;
|
import io.github.sspanak.traditionalt9.T9DB.DBSettings.SETTING;
|
||||||
|
|
||||||
public class SettingList extends Setting {
|
public class SettingList extends Setting {
|
||||||
String[] entries;
|
String[] entries;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package org.nyanya.android.traditionalt9.settings;
|
package io.github.sspanak.traditionalt9.settings;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
@ -6,10 +6,10 @@ import android.content.DialogInterface;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import org.nyanya.android.traditionalt9.LangHelper;
|
import io.github.sspanak.traditionalt9.LangHelper;
|
||||||
import org.nyanya.android.traditionalt9.R;
|
import io.github.sspanak.traditionalt9.R;
|
||||||
import org.nyanya.android.traditionalt9.T9DB;
|
import io.github.sspanak.traditionalt9.T9DB;
|
||||||
import org.nyanya.android.traditionalt9.T9DB.DBSettings.SETTING;
|
import io.github.sspanak.traditionalt9.T9DB.DBSettings.SETTING;
|
||||||
|
|
||||||
public class SettingMultiList extends SettingList {
|
public class SettingMultiList extends SettingList {
|
||||||
boolean[] selectedEntries = new boolean[0];
|
boolean[] selectedEntries = new boolean[0];
|
||||||
Loading…
Add table
Add a link
Reference in a new issue