aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMenny Even Danan <menny@evendanan.net>2015-06-03 00:44:55 +0000
committerMenny Even Danan <menny@evendanan.net>2015-06-03 01:01:37 +0000
commit202c3b8083a14a3bfdfdbec388cb1ac63027ec98 (patch)
tree8c23215514e0cd08ba56a59184f062cc124a2ec6
parent24efc6500cff660bb25a9e53313bc3ede6cabe95 (diff)
downloadAnySoftKeyboard-202c3b8083a14a3bfdfdbec388cb1ac63027ec98.tar.gz
AnySoftKeyboard-202c3b8083a14a3bfdfdbec388cb1ac63027ec98.tar.bz2
extracted a few Dictionary classes to a base project
-rw-r--r--.gitignore2
-rw-r--r--base/build.gradle43
-rw-r--r--base/src/main/AndroidManifest.xml5
-rw-r--r--base/src/main/java/com/anysoftkeyboard/base/dictionaries/Dictionary.java (renamed from src/main/java/com/anysoftkeyboard/dictionaries/Dictionary.java)9
-rw-r--r--base/src/main/java/com/anysoftkeyboard/base/dictionaries/EditableDictionary.java (renamed from src/main/java/com/anysoftkeyboard/dictionaries/EditableDictionary.java)3
-rw-r--r--base/src/main/java/com/anysoftkeyboard/base/dictionaries/WordComposer.java (renamed from src/main/java/com/anysoftkeyboard/WordComposer.java)39
-rw-r--r--base/src/main/java/com/anysoftkeyboard/base/dictionaries/WordsCursor.java (renamed from src/main/java/com/anysoftkeyboard/dictionaries/WordsCursor.java)2
-rw-r--r--build.gradle1
-rw-r--r--settings.gradle2
-rw-r--r--src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java3
-rw-r--r--src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific.java2
-rw-r--r--src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific_V11.java7
-rw-r--r--src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific_V3.java2
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/BTreeDictionary.java7
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/DictionaryASyncLoader.java7
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/DictionaryAddOnAndBuilder.java1
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/DictionaryFactory.java2
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/Suggest.java4
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/UserDictionary.java10
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/content/AndroidUserDictionary.java3
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/content/ContactsDictionary.java2
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/jni/BinaryDictionary.java5
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/jni/ResourceBinaryDictionary.java4
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/sqlite/AbbreviationsDictionary.java5
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/sqlite/AutoDictionary.java2
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/sqlite/SQLiteUserDictionaryBase.java3
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/sqlite/WordsSQLiteConnection.java5
-rw-r--r--src/main/java/com/anysoftkeyboard/spellcheck/SuggestionsGatherer.java5
-rw-r--r--src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/AbbreviationDictionaryEditorFragment.java2
-rw-r--r--src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/BackupUserWordsAsyncTask.java2
-rw-r--r--src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/RestoreUserWordsAsyncTask.java10
-rw-r--r--src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/UserDictionaryEditorFragment.java4
32 files changed, 123 insertions, 80 deletions
diff --git a/.gitignore b/.gitignore
index 71dc072a0..644fc5d2b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-/build/
+build/
.gradle/
/local.signing.properties
/.idea/
diff --git a/base/build.gradle b/base/build.gradle
new file mode 100644
index 000000000..e11e5f5cc
--- /dev/null
+++ b/base/build.gradle
@@ -0,0 +1,43 @@
+buildscript {
+ repositories {
+ mavenLocal()
+ mavenCentral()
+ maven {
+ url 'https://oss.sonatype.org/content/repositories/snapshots/'
+ }
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:1.2.3'
+ classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.0'
+ }
+}
+
+apply plugin: 'android-sdk-manager'
+apply plugin: 'com.android.library'
+apply plugin: 'pmd'
+apply plugin: 'jacoco'
+
+android {
+ compileSdkVersion 22
+ buildToolsVersion "22.0.1"
+
+ defaultConfig {
+ minSdkVersion 7
+ targetSdkVersion 22
+ versionCode 1
+ versionName "1.0"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ }
+ }
+}
+
+dependencies {
+ repositories {
+ mavenCentral()
+ }
+ compile 'net.evendanan.anysoftkeyboard:api:1.2.3'
+ compile 'com.android.support:support-annotations:21.0.0'
+}
diff --git a/base/src/main/AndroidManifest.xml b/base/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..1995dac03
--- /dev/null
+++ b/base/src/main/AndroidManifest.xml
@@ -0,0 +1,5 @@
+<manifest package="com.anysoftkeyboard.base">
+
+ <application />
+
+</manifest>
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/Dictionary.java b/base/src/main/java/com/anysoftkeyboard/base/dictionaries/Dictionary.java
index af688bea0..5bab6bf65 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/Dictionary.java
+++ b/base/src/main/java/com/anysoftkeyboard/base/dictionaries/Dictionary.java
@@ -14,9 +14,7 @@
* limitations under the License.
*/
-package com.anysoftkeyboard.dictionaries;
-
-import com.anysoftkeyboard.WordComposer;
+package com.anysoftkeyboard.base.dictionaries;
/**
* Abstract base class for a dictionary that can do a fuzzy search for words based on a set of key
@@ -25,6 +23,7 @@ import com.anysoftkeyboard.WordComposer;
abstract public class Dictionary {
private static final String TAG = "ASK_DICT";
+ public static final int MAX_WORD_LENGTH = 32;
public static final int MAX_WORD_FREQUENCY = 255;
/**
@@ -81,7 +80,7 @@ abstract public class Dictionary {
*
* @param composer the key sequence to match
* @param callback the callback object to send matched words to as possible candidates
- * @see WordCallback#addWord(char[], int, int, int, com.anysoftkeyboard.dictionaries.Dictionary)
+ * @see WordCallback#addWord(char[], int, int, int, Dictionary)
*/
abstract public void getWords(final WordComposer composer, final WordCallback callback);
@@ -102,7 +101,7 @@ abstract public class Dictionary {
* @param typedWord the word to compare with
* @return true if they are the same, false otherwise.
*/
- static protected final boolean same(final char[] word, final int length, final CharSequence typedWord) {
+ static protected boolean same(final char[] word, final int length, final CharSequence typedWord) {
if (typedWord.length() != length) {
return false;
}
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/EditableDictionary.java b/base/src/main/java/com/anysoftkeyboard/base/dictionaries/EditableDictionary.java
index d2c36d55b..2d4b33eb8 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/EditableDictionary.java
+++ b/base/src/main/java/com/anysoftkeyboard/base/dictionaries/EditableDictionary.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.anysoftkeyboard.dictionaries;
+package com.anysoftkeyboard.base.dictionaries;
public abstract class EditableDictionary extends Dictionary {
@@ -30,7 +30,6 @@ public abstract class EditableDictionary extends Dictionary {
* recognize it as a capitalized word when searched.
* @param frequency the frequency of occurrence of the word. A frequency of 255 is considered
* the highest.
- * @TODO use a higher or float range for frequency
*/
public abstract boolean addWord(String word, int frequency);
diff --git a/src/main/java/com/anysoftkeyboard/WordComposer.java b/base/src/main/java/com/anysoftkeyboard/base/dictionaries/WordComposer.java
index 4079f12b5..947473023 100644
--- a/src/main/java/com/anysoftkeyboard/WordComposer.java
+++ b/base/src/main/java/com/anysoftkeyboard/base/dictionaries/WordComposer.java
@@ -14,12 +14,7 @@
* limitations under the License.
*/
-package com.anysoftkeyboard;
-
-import com.anysoftkeyboard.dictionaries.content.AndroidUserDictionary;
-import com.anysoftkeyboard.keyboards.views.AnyKeyboardBaseView;
-import com.anysoftkeyboard.utils.Log;
-import com.menny.android.anysoftkeyboard.FeaturesSet;
+package com.anysoftkeyboard.base.dictionaries;
import java.util.ArrayList;
import java.util.Arrays;
@@ -30,23 +25,23 @@ import java.util.List;
*/
public class WordComposer {
private static final String CHEWBACCAONTHEDRUMS = "chewbacca";
- private static final String TAG = "ASK _WC";
+ public static final int NOT_A_KEY_INDEX = -1;
/**
* The list of unicode values for each keystroke (including surrounding keys)
*/
- private final ArrayList<int[]> mCodes = new ArrayList<>(AndroidUserDictionary.MAX_WORD_LENGTH);
+ private final ArrayList<int[]> mCodes = new ArrayList<>(Dictionary.MAX_WORD_LENGTH);
/**
* This holds arrays for reuse. Will not exceed AndroidUserDictionary.MAX_WORD_LENGTH
*/
- private final List<int[]> mArraysToReuse = new ArrayList<>(AndroidUserDictionary.MAX_WORD_LENGTH);
+ private final List<int[]> mArraysToReuse = new ArrayList<>(Dictionary.MAX_WORD_LENGTH);
/**
* The word chosen from the candidate list, until it is committed.
*/
private CharSequence mPreferredWord;
- private final StringBuilder mTypedWord = new StringBuilder(AndroidUserDictionary.MAX_WORD_LENGTH);
+ private final StringBuilder mTypedWord = new StringBuilder(Dictionary.MAX_WORD_LENGTH);
private int mCursorPosition;
private int mGlobalCursorPosition;
@@ -115,9 +110,8 @@ public class WordComposer {
}
public boolean setCursorPostion(int position/*, int candidatesStartPosition*/) {
- if (position < 0 || position > length())//note: the cursor can be AFTER the word, so it can be equal to size()
- {
- Log.w(TAG, "New cursor position is invalid! It is outside the word (size " + length() + ", new position " + position + ". Disregarding!!!!");
+ if (position < 0 || position > length()) {
+ //note: the cursor can be AFTER the word, so it can be equal to size()
return false;
}
final boolean changed = mCursorPosition != position;
@@ -195,13 +189,11 @@ public class WordComposer {
if (possibleArray.length >= codes.length) {
System.arraycopy(codes, 0, possibleArray, 0, codes.length);
if (possibleArray.length > codes.length)
- Arrays.fill(possibleArray, codes.length, possibleArray.length, AnyKeyboardBaseView.NOT_A_KEY);
- Log.d(TAG, "Found an array to reuse with length " + possibleArray.length);
+ Arrays.fill(possibleArray, codes.length, possibleArray.length, NOT_A_KEY_INDEX);
return possibleArray;
}
}
//if I got here, it means that the reusableArray does not contain a long enough array
- Log.d(TAG, "Creating a new array with length " + codes.length);
int[] newArray = new int[codes.length];
mArraysToReuse.add(newArray);
return getReusableArray(codes);
@@ -289,8 +281,6 @@ public class WordComposer {
/**
* Stores the user's selected word, before it is actually committed to the text field.
- *
- * @param preferred
*/
public void setPreferredWord(CharSequence preferred) {
mPreferredWord = preferred;
@@ -326,16 +316,17 @@ public class WordComposer {
return mAutoCapitalized;
}
- public void logCodes() {
- if (!FeaturesSet.DEBUG_LOG) return;
- Log.d(TAG, "Word: " + mTypedWord + ", prefered word:" + mPreferredWord);
+ public String logCodes() {
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.append("Word: ").append(mTypedWord).append(", preferred word:").append(mPreferredWord);
int i = 0;
for (int[] codes : mCodes) {
- String codesString = "Codes #" + i + ": ";
+ stringBuilder.append("\n");
+ stringBuilder.append("Codes #").append(i).append(": ");
for (int c : codes) {
- codesString += "" + c + ",";
+ stringBuilder.append(c).append(",");
}
- Log.d(TAG, codesString);
}
+ return stringBuilder.toString();
}
}
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/WordsCursor.java b/base/src/main/java/com/anysoftkeyboard/base/dictionaries/WordsCursor.java
index 8ea6096d9..fe9ea6054 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/WordsCursor.java
+++ b/base/src/main/java/com/anysoftkeyboard/base/dictionaries/WordsCursor.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.anysoftkeyboard.dictionaries;
+package com.anysoftkeyboard.base.dictionaries;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
diff --git a/build.gradle b/build.gradle
index 6ab72a230..c65228753 100644
--- a/build.gradle
+++ b/build.gradle
@@ -173,6 +173,7 @@ dependencies {
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
}
+ compile project(':base')
compile project(':jnidictionaryv1')
compile project(':jnidictionaryv2')
diff --git a/settings.gradle b/settings.gradle
index 6bdb5fce4..9c458b5df 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':jnidictionaryv1', ':jnidictionaryv2'
+include ':base', ':jnidictionaryv1', ':jnidictionaryv2'
diff --git a/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java b/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java
index 5cb96b2eb..2eeecf535 100644
--- a/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java
+++ b/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java
@@ -55,9 +55,10 @@ import android.widget.Toast;
import com.anysoftkeyboard.LayoutSwitchAnimationListener.AnimationType;
import com.anysoftkeyboard.api.KeyCodes;
+import com.anysoftkeyboard.base.dictionaries.WordComposer;
import com.anysoftkeyboard.devicespecific.Clipboard;
import com.anysoftkeyboard.dictionaries.DictionaryAddOnAndBuilder;
-import com.anysoftkeyboard.dictionaries.EditableDictionary;
+import com.anysoftkeyboard.base.dictionaries.EditableDictionary;
import com.anysoftkeyboard.dictionaries.ExternalDictionaryFactory;
import com.anysoftkeyboard.dictionaries.Suggest;
import com.anysoftkeyboard.dictionaries.TextEntryState;
diff --git a/src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific.java b/src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific.java
index 2fe7a4a0d..cd29b31a1 100644
--- a/src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific.java
+++ b/src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific.java
@@ -22,7 +22,7 @@ import android.view.GestureDetector;
import android.view.inputmethod.InputConnection;
import com.anysoftkeyboard.IndirectlyInstantiated;
-import com.anysoftkeyboard.WordComposer;
+import com.anysoftkeyboard.base.dictionaries.WordComposer;
@IndirectlyInstantiated
public interface DeviceSpecific {
diff --git a/src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific_V11.java b/src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific_V11.java
index 84419e8f8..4b5f82024 100644
--- a/src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific_V11.java
+++ b/src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific_V11.java
@@ -22,7 +22,7 @@ import android.view.inputmethod.CorrectionInfo;
import android.view.inputmethod.InputConnection;
import com.anysoftkeyboard.IndirectlyInstantiated;
-import com.anysoftkeyboard.WordComposer;
+import com.anysoftkeyboard.base.dictionaries.WordComposer;
@TargetApi(11)
@IndirectlyInstantiated
@@ -33,8 +33,7 @@ public class DeviceSpecific_V11 extends DeviceSpecific_V8 {
}
@Override
- public void commitCorrectionToInputConnection(InputConnection ic,
- WordComposer word) {
+ public void commitCorrectionToInputConnection(InputConnection ic, WordComposer word) {
super.commitCorrectionToInputConnection(ic, word);
CorrectionInfo correctionInfo = new CorrectionInfo(
word.globalCursorPosition() - word.getTypedWord().length(),
@@ -45,6 +44,6 @@ public class DeviceSpecific_V11 extends DeviceSpecific_V8 {
@Override
public boolean isHardwareAcceleratedCanvas(Canvas canvas) {
- return canvas != null || canvas.isHardwareAccelerated();
+ return canvas != null && canvas.isHardwareAccelerated();
}
}
diff --git a/src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific_V3.java b/src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific_V3.java
index d6d46037f..cebaa812b 100644
--- a/src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific_V3.java
+++ b/src/main/java/com/anysoftkeyboard/devicespecific/DeviceSpecific_V3.java
@@ -24,7 +24,7 @@ import android.view.GestureDetector;
import android.view.inputmethod.InputConnection;
import com.anysoftkeyboard.IndirectlyInstantiated;
-import com.anysoftkeyboard.WordComposer;
+import com.anysoftkeyboard.base.dictionaries.WordComposer;
@TargetApi(3)
@IndirectlyInstantiated
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/BTreeDictionary.java b/src/main/java/com/anysoftkeyboard/dictionaries/BTreeDictionary.java
index f204dde28..f63bc84f4 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/BTreeDictionary.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/BTreeDictionary.java
@@ -22,7 +22,10 @@ import android.database.ContentObserver;
import android.database.Cursor;
import android.text.TextUtils;
-import com.anysoftkeyboard.WordComposer;
+import com.anysoftkeyboard.base.dictionaries.Dictionary;
+import com.anysoftkeyboard.base.dictionaries.EditableDictionary;
+import com.anysoftkeyboard.base.dictionaries.WordComposer;
+import com.anysoftkeyboard.base.dictionaries.WordsCursor;
import com.anysoftkeyboard.utils.Log;
import com.menny.android.anysoftkeyboard.AnyApplication;
import com.menny.android.anysoftkeyboard.FeaturesSet;
@@ -207,7 +210,7 @@ public abstract class BTreeDictionary extends EditableDictionary {
protected abstract void AddWordToStorage(String word, int frequency);
@Override
- public void getWords(final WordComposer codes, final WordCallback callback) {
+ public void getWords(final WordComposer codes, final Dictionary.WordCallback callback) {
if (isLoading() || isClosed()) return;
mInputLength = codes.length();
mMaxDepth = mInputLength * 2;
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/DictionaryASyncLoader.java b/src/main/java/com/anysoftkeyboard/dictionaries/DictionaryASyncLoader.java
index 5312298ad..09c82b1bb 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/DictionaryASyncLoader.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/DictionaryASyncLoader.java
@@ -1,6 +1,8 @@
package com.anysoftkeyboard.dictionaries;
import android.os.AsyncTask;
+
+import com.anysoftkeyboard.base.dictionaries.Dictionary;
import com.anysoftkeyboard.utils.Log;
import java.lang.ref.WeakReference;
@@ -17,7 +19,7 @@ public class DictionaryASyncLoader extends AsyncTask<Dictionary, Void, Dictionar
private Exception mException = null;
public DictionaryASyncLoader(Listener listener) {
- mListener = new WeakReference<Listener>(listener);
+ mListener = new WeakReference<>(listener);
}
@Override
@@ -53,9 +55,8 @@ public class DictionaryASyncLoader extends AsyncTask<Dictionary, Void, Dictionar
}
}
- public static interface Listener {
+ public interface Listener {
void onDictionaryLoadingDone(Dictionary dictionary);
-
void onDictionaryLoadingFailed(Dictionary dictionary, Exception exception);
}
}
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/DictionaryAddOnAndBuilder.java b/src/main/java/com/anysoftkeyboard/dictionaries/DictionaryAddOnAndBuilder.java
index f00707b16..dcaa47ecd 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/DictionaryAddOnAndBuilder.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/DictionaryAddOnAndBuilder.java
@@ -18,6 +18,7 @@ package com.anysoftkeyboard.dictionaries;
import android.content.Context;
import com.anysoftkeyboard.addons.AddOnImpl;
+import com.anysoftkeyboard.base.dictionaries.Dictionary;
import com.anysoftkeyboard.dictionaries.jni.BinaryDictionary;
import com.anysoftkeyboard.dictionaries.jni.ResourceBinaryDictionary;
import com.anysoftkeyboard.utils.Log;
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/DictionaryFactory.java b/src/main/java/com/anysoftkeyboard/dictionaries/DictionaryFactory.java
index a563282e0..4d9bc7ee8 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/DictionaryFactory.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/DictionaryFactory.java
@@ -18,6 +18,8 @@ package com.anysoftkeyboard.dictionaries;
import android.content.Context;
+import com.anysoftkeyboard.base.dictionaries.Dictionary;
+import com.anysoftkeyboard.base.dictionaries.EditableDictionary;
import com.anysoftkeyboard.dictionaries.content.ContactsDictionary;
import com.anysoftkeyboard.dictionaries.sqlite.AutoDictionary;
import com.anysoftkeyboard.utils.Log;
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/Suggest.java b/src/main/java/com/anysoftkeyboard/dictionaries/Suggest.java
index e271c7480..82b32ff06 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/Suggest.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/Suggest.java
@@ -21,7 +21,8 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.TextUtils;
-import com.anysoftkeyboard.WordComposer;
+import com.anysoftkeyboard.base.dictionaries.Dictionary;
+import com.anysoftkeyboard.base.dictionaries.WordComposer;
import com.anysoftkeyboard.dictionaries.sqlite.AbbreviationsDictionary;
import com.anysoftkeyboard.utils.CompatUtils;
import com.anysoftkeyboard.utils.IMEUtil;
@@ -184,7 +185,6 @@ public class Suggest implements Dictionary.WordCallback {
* Number of suggestions to generate from the input key sequence. This has
* to be a number between 1 and 100 (inclusive).
*
- * @param maxSuggestions
* @throws IllegalArgumentException if the number is out of range
*/
public void setMaxSuggestions(int maxSuggestions) {
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/UserDictionary.java b/src/main/java/com/anysoftkeyboard/dictionaries/UserDictionary.java
index fd4f7e466..216ce8799 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/UserDictionary.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/UserDictionary.java
@@ -17,7 +17,10 @@
package com.anysoftkeyboard.dictionaries;
import android.content.Context;
-import com.anysoftkeyboard.WordComposer;
+
+import com.anysoftkeyboard.base.dictionaries.EditableDictionary;
+import com.anysoftkeyboard.base.dictionaries.WordComposer;
+import com.anysoftkeyboard.base.dictionaries.WordsCursor;
import com.anysoftkeyboard.dictionaries.content.AndroidUserDictionary;
import com.anysoftkeyboard.dictionaries.sqlite.FallbackUserDictionary;
import com.anysoftkeyboard.utils.Log;
@@ -46,10 +49,7 @@ public class UserDictionary extends EditableDictionary {
@Override
public final boolean isValidWord(CharSequence word) {
- if (mActualDictionary != null)
- return mActualDictionary.isValidWord(word);
- else
- return false;
+ return mActualDictionary != null && mActualDictionary.isValidWord(word);
}
@Override
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/content/AndroidUserDictionary.java b/src/main/java/com/anysoftkeyboard/dictionaries/content/AndroidUserDictionary.java
index ecf2cab2a..e34544e2a 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/content/AndroidUserDictionary.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/content/AndroidUserDictionary.java
@@ -24,8 +24,9 @@ import android.database.Cursor;
import android.net.Uri;
import android.provider.UserDictionary.Words;
import android.text.TextUtils;
+
+import com.anysoftkeyboard.base.dictionaries.WordsCursor;
import com.anysoftkeyboard.dictionaries.BTreeDictionary;
-import com.anysoftkeyboard.dictionaries.WordsCursor;
import com.anysoftkeyboard.utils.Log;
public class AndroidUserDictionary extends BTreeDictionary {
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/content/ContactsDictionary.java b/src/main/java/com/anysoftkeyboard/dictionaries/content/ContactsDictionary.java
index c475bd483..d129c3cf1 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/content/ContactsDictionary.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/content/ContactsDictionary.java
@@ -23,8 +23,8 @@ import android.database.ContentObserver;
import android.database.Cursor;
import android.provider.ContactsContract.Contacts;
+import com.anysoftkeyboard.base.dictionaries.WordsCursor;
import com.anysoftkeyboard.dictionaries.BTreeDictionary;
-import com.anysoftkeyboard.dictionaries.WordsCursor;
@TargetApi(7)
public class ContactsDictionary extends BTreeDictionary {
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/jni/BinaryDictionary.java b/src/main/java/com/anysoftkeyboard/dictionaries/jni/BinaryDictionary.java
index ea5b51ad9..85b0d2a74 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/jni/BinaryDictionary.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/jni/BinaryDictionary.java
@@ -17,8 +17,9 @@
package com.anysoftkeyboard.dictionaries.jni;
import android.content.res.AssetFileDescriptor;
-import com.anysoftkeyboard.WordComposer;
-import com.anysoftkeyboard.dictionaries.Dictionary;
+
+import com.anysoftkeyboard.base.dictionaries.Dictionary;
+import com.anysoftkeyboard.base.dictionaries.WordComposer;
import com.anysoftkeyboard.utils.Log;
import java.io.FileDescriptor;
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/jni/ResourceBinaryDictionary.java b/src/main/java/com/anysoftkeyboard/dictionaries/jni/ResourceBinaryDictionary.java
index 5f0f32a7c..aac12670c 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/jni/ResourceBinaryDictionary.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/jni/ResourceBinaryDictionary.java
@@ -20,8 +20,8 @@ import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
-import com.anysoftkeyboard.WordComposer;
-import com.anysoftkeyboard.dictionaries.Dictionary;
+import com.anysoftkeyboard.base.dictionaries.Dictionary;
+import com.anysoftkeyboard.base.dictionaries.WordComposer;
import com.anysoftkeyboard.utils.IMEUtil.GCUtils;
import com.anysoftkeyboard.utils.IMEUtil.GCUtils.MemRelatedOperation;
import com.anysoftkeyboard.utils.Log;
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/AbbreviationsDictionary.java b/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/AbbreviationsDictionary.java
index 61f131ec3..0c48cfd0b 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/AbbreviationsDictionary.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/AbbreviationsDictionary.java
@@ -18,13 +18,10 @@ package com.anysoftkeyboard.dictionaries.sqlite;
import android.content.Context;
import android.support.annotation.NonNull;
-import android.text.TextUtils;
-import com.anysoftkeyboard.WordComposer;
-import com.anysoftkeyboard.dictionaries.Dictionary;
+import com.anysoftkeyboard.base.dictionaries.WordComposer;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/AutoDictionary.java b/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/AutoDictionary.java
index 23cb60130..06a70ed2f 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/AutoDictionary.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/AutoDictionary.java
@@ -18,7 +18,7 @@ package com.anysoftkeyboard.dictionaries.sqlite;
import android.content.Context;
import com.anysoftkeyboard.AnySoftKeyboard;
-import com.anysoftkeyboard.WordComposer;
+import com.anysoftkeyboard.base.dictionaries.WordComposer;
import com.anysoftkeyboard.utils.Log;
import com.menny.android.anysoftkeyboard.AnyApplication;
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/SQLiteUserDictionaryBase.java b/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/SQLiteUserDictionaryBase.java
index f438cef10..c19fa5355 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/SQLiteUserDictionaryBase.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/SQLiteUserDictionaryBase.java
@@ -20,8 +20,9 @@ import android.content.ContentResolver;
import android.content.Context;
import android.database.ContentObserver;
import android.database.sqlite.SQLiteException;
+
+import com.anysoftkeyboard.base.dictionaries.WordsCursor;
import com.anysoftkeyboard.dictionaries.BTreeDictionary;
-import com.anysoftkeyboard.dictionaries.WordsCursor;
import com.anysoftkeyboard.utils.Log;
public abstract class SQLiteUserDictionaryBase extends BTreeDictionary {
diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/WordsSQLiteConnection.java b/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/WordsSQLiteConnection.java
index a80a1ba95..cf708d250 100644
--- a/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/WordsSQLiteConnection.java
+++ b/src/main/java/com/anysoftkeyboard/dictionaries/sqlite/WordsSQLiteConnection.java
@@ -22,7 +22,8 @@ import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.text.TextUtils;
-import com.anysoftkeyboard.dictionaries.WordsCursor;
+
+import com.anysoftkeyboard.base.dictionaries.WordsCursor;
import com.anysoftkeyboard.utils.Log;
public class WordsSQLiteConnection extends SQLiteOpenHelper {
@@ -128,8 +129,6 @@ public class WordsSQLiteConnection extends SQLiteOpenHelper {
/**
* This is a compatibility function: SQLiteOpenHelper.getDatabaseName exists only in API14
- *
- * @return
*/
public String getDbFilename() {
return mDbName;
diff --git a/src/main/java/com/anysoftkeyboard/spellcheck/SuggestionsGatherer.java b/src/main/java/com/anysoftkeyboard/spellcheck/SuggestionsGatherer.java
index a1e0e17b4..ad1a93f46 100644
--- a/src/main/java/com/anysoftkeyboard/spellcheck/SuggestionsGatherer.java
+++ b/src/main/java/com/anysoftkeyboard/spellcheck/SuggestionsGatherer.java
@@ -16,8 +16,7 @@
package com.anysoftkeyboard.spellcheck;
-import com.anysoftkeyboard.dictionaries.Dictionary;
-import com.anysoftkeyboard.dictionaries.Dictionary.WordCallback;
+import com.anysoftkeyboard.base.dictionaries.Dictionary;
import com.anysoftkeyboard.utils.ArraysCompatUtils;
import com.anysoftkeyboard.utils.IMEUtil;
import com.anysoftkeyboard.utils.Log;
@@ -25,7 +24,7 @@ import com.anysoftkeyboard.utils.Log;
import java.util.ArrayList;
import java.util.Collections;
-class SuggestionsGatherer implements WordCallback {
+class SuggestionsGatherer implements Dictionary.WordCallback {
public static class Result {
public final String[] mSuggestions;
public final boolean mHasLikelySuggestions;
diff --git a/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/AbbreviationDictionaryEditorFragment.java b/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/AbbreviationDictionaryEditorFragment.java
index 0aea58667..84f2aeda0 100644
--- a/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/AbbreviationDictionaryEditorFragment.java
+++ b/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/AbbreviationDictionaryEditorFragment.java
@@ -9,7 +9,7 @@ import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
-import com.anysoftkeyboard.dictionaries.EditableDictionary;
+import com.anysoftkeyboard.base.dictionaries.EditableDictionary;
import com.anysoftkeyboard.dictionaries.sqlite.AbbreviationsDictionary;
import com.menny.android.anysoftkeyboard.R;
diff --git a/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/BackupUserWordsAsyncTask.java b/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/BackupUserWordsAsyncTask.java
index e19bd954c..a5f1cfec5 100644
--- a/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/BackupUserWordsAsyncTask.java
+++ b/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/BackupUserWordsAsyncTask.java
@@ -23,8 +23,8 @@ import android.provider.UserDictionary.Words;
import android.text.TextUtils;
import android.widget.Toast;
+import com.anysoftkeyboard.base.dictionaries.WordsCursor;
import com.anysoftkeyboard.dictionaries.UserDictionary;
-import com.anysoftkeyboard.dictionaries.WordsCursor;
import com.anysoftkeyboard.utils.Log;
import com.anysoftkeyboard.utils.XmlWriter;
import com.menny.android.anysoftkeyboard.R;
diff --git a/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/RestoreUserWordsAsyncTask.java b/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/RestoreUserWordsAsyncTask.java
index 8204973db..a05195332 100644
--- a/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/RestoreUserWordsAsyncTask.java
+++ b/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/RestoreUserWordsAsyncTask.java
@@ -39,6 +39,7 @@ import javax.xml.parsers.SAXParserFactory;
final class RestoreUserWordsAsyncTask extends UserWordsEditorAsyncTask {
protected static final String TAG = "ASK RestoreUDict";
+ private final Object mLoadMonitor = new Object();
private final Context mAppContext;
private final String mFilename;
private String mLocale;
@@ -87,9 +88,8 @@ final class RestoreUserWordsAsyncTask extends UserWordsEditorAsyncTask {
if (localName.equals("wordlist")) {
mLocale = attributes.getValue("locale");
- synchronized (mLocale) {
- Log.d(TAG, "Building dictionary for locale "
- + mLocale);
+ synchronized (mLoadMonitor) {
+ Log.d(TAG, "Building dictionary for locale " + mLocale);
publishProgress();
// waiting for dictionary to be ready.
try {
@@ -127,7 +127,7 @@ final class RestoreUserWordsAsyncTask extends UserWordsEditorAsyncTask {
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
- synchronized (mLocale) {
+ synchronized (mLoadMonitor) {
if (mDictionary != null) {
mDictionary.close();
}
@@ -166,7 +166,7 @@ final class RestoreUserWordsAsyncTask extends UserWordsEditorAsyncTask {
activity.fillLanguagesSpinner();
} catch (BadTokenException e) {
// activity gone away!
- // nevermind
+ // never mind
}
}
} \ No newline at end of file
diff --git a/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/UserDictionaryEditorFragment.java b/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/UserDictionaryEditorFragment.java
index f000891f9..dc8aa26d0 100644
--- a/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/UserDictionaryEditorFragment.java
+++ b/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/UserDictionaryEditorFragment.java
@@ -40,9 +40,9 @@ import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
-import com.anysoftkeyboard.dictionaries.EditableDictionary;
+import com.anysoftkeyboard.base.dictionaries.EditableDictionary;
+import com.anysoftkeyboard.base.dictionaries.WordsCursor;
import com.anysoftkeyboard.dictionaries.UserDictionary;
-import com.anysoftkeyboard.dictionaries.WordsCursor;
import com.anysoftkeyboard.keyboards.KeyboardAddOnAndBuilder;
import com.anysoftkeyboard.keyboards.KeyboardFactory;
import com.anysoftkeyboard.utils.Log;