aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMenny Even Danan <menny@evendanan.net>2016-02-24 18:56:23 +0000
committerMenny Even Danan <menny@evendanan.net>2016-02-24 18:56:23 +0000
commite854761f600bce0a1d48614e9d3d2178b96a038f (patch)
treebf6df12e3d4176db26dcd5b1842029bfc0691a3e /src
parentfcaa97e60c3271c959b9e8702fa185e824bc255d (diff)
downloadAnySoftKeyboard-e854761f600bce0a1d48614e9d3d2178b96a038f.tar.gz
AnySoftKeyboard-e854761f600bce0a1d48614e9d3d2178b96a038f.tar.bz2
removing HashSet<Character> usage. #575
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java30
-rw-r--r--src/main/java/com/anysoftkeyboard/keyboards/AnyKeyboard.java3
-rw-r--r--src/main/java/com/anysoftkeyboard/keyboards/AnyPopupKeyboard.java8
-rw-r--r--src/main/java/com/anysoftkeyboard/keyboards/ExternalAnyKeyboard.java11
4 files changed, 25 insertions, 27 deletions
diff --git a/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java b/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java
index 1c3ed76e9..dc17d1317 100644
--- a/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java
+++ b/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java
@@ -39,6 +39,7 @@ import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
+import android.util.SparseBooleanArray;
import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.View;
@@ -144,11 +145,13 @@ public abstract class AnySoftKeyboard extends InputMethodService implements
private CompletionInfo[] mCompletions;
private AlertDialog mOptionsDialog;
private long mMetaState;
- private Set<Character> mSentenceSeparators = Collections.emptySet();
- // private BTreeDictionary mContactsDictionary;
+ @NonNull
+ private final SparseBooleanArray mSentenceSeparators = new SparseBooleanArray();
+
private EditableDictionary mUserDictionary;
private AutoDictionary mAutoDictionary;
private WordComposer mWord = new WordComposer();
+
private static final long MAX_TIME_TO_EXPECT_SELECTION_UPDATE = 1500;
private long mExpectingSelectionUpdateBy = Long.MIN_VALUE;
private int mOrientation = Configuration.ORIENTATION_PORTRAIT;
@@ -1252,17 +1255,10 @@ public abstract class AnySoftKeyboard extends InputMethodService implements
if (!mAskPrefs.shouldSwapPunctuationAndSpace())
return;
CharSequence lastTwo = ic.getTextBeforeCursor(2, 0);
- if (BuildConfig.DEBUG) {
- String seps = "";
- for (Character c : mSentenceSeparators)
- seps += c;
- Log.d(TAG, "swapPunctuationAndSpace: lastTwo: '" + lastTwo
- + "', mSentenceSeparators " + mSentenceSeparators.size()
- + " '" + seps + "'");
- }
+
if (lastTwo != null && lastTwo.length() == 2
&& lastTwo.charAt(0) == KeyCodes.SPACE
- && mSentenceSeparators.contains(lastTwo.charAt(1))) {
+ && mSentenceSeparators.get(lastTwo.charAt(1), false)) {
ic.beginBatchEdit();
ic.deleteSurroundingText(2, 0);
ic.commitText(lastTwo.charAt(1) + " ", 1);
@@ -2142,7 +2138,7 @@ public abstract class AnySoftKeyboard extends InputMethodService implements
private void handleSeparator(int primaryCode) {
mExpectingSelectionUpdateBy = SystemClock.uptimeMillis() + MAX_TIME_TO_EXPECT_SELECTION_UPDATE;
//will not show next-word suggestion in case of a new line or if the separator is a sentence separator.
- boolean isEndOfSentence = (primaryCode == KeyCodes.ENTER || mSentenceSeparators.contains(Character.valueOf((char)primaryCode)));
+ boolean isEndOfSentence = (primaryCode == KeyCodes.ENTER || mSentenceSeparators.get(primaryCode));
// Should dismiss the "Touch again to save" message when handling
// separator
@@ -2500,11 +2496,16 @@ public abstract class AnySoftKeyboard extends InputMethodService implements
AnyKeyboard keyboard = mKeyboardSwitcher.nextKeyboard(currentEditorInfo, type);
if (!(keyboard instanceof GenericKeyboard)) {
- mSentenceSeparators = keyboard.getSentenceSeparators();
+ fillSeparatorsSparseArray(mSentenceSeparators, keyboard.getSentenceSeparators());
}
setKeyboardFinalStuff(type);
}
+ private static void fillSeparatorsSparseArray(SparseBooleanArray sparseBooleanArray, char[] chars) {
+ sparseBooleanArray.clear();
+ for(char separator : chars) sparseBooleanArray.put(separator, true);
+ }
+
private void setKeyboardFinalStuff(KeyboardSwitcher.NextKeyboardType type) {
mShiftKeyState.reset();
mControlKeyState.reset();
@@ -2893,7 +2894,7 @@ public abstract class AnySoftKeyboard extends InputMethodService implements
mKeyboardSwitcher.flushKeyboardsCache();
// new WxH. need new object.
- mSentenceSeparators = getCurrentKeyboard().getSentenceSeparators();
+ fillSeparatorsSparseArray(mSentenceSeparators, getCurrentKeyboard().getSentenceSeparators());
// should it be always on?
if (mKeyboardChangeNotificationType.equals(KEYBOARD_NOTIFICATION_ALWAYS))
@@ -3017,7 +3018,6 @@ public abstract class AnySoftKeyboard extends InputMethodService implements
public boolean onEvaluateInputViewShown() {
Configuration config = getResources().getConfiguration();
return config.keyboard == Configuration.KEYBOARD_NOKEYS ||
- //config.keyboard == Configuration.KEYBOARD_UNDEFINED ||
config.hardKeyboardHidden == Configuration.KEYBOARDHIDDEN_YES;
}
diff --git a/src/main/java/com/anysoftkeyboard/keyboards/AnyKeyboard.java b/src/main/java/com/anysoftkeyboard/keyboards/AnyKeyboard.java
index 783821c29..e94d4831b 100644
--- a/src/main/java/com/anysoftkeyboard/keyboards/AnyKeyboard.java
+++ b/src/main/java/com/anysoftkeyboard/keyboards/AnyKeyboard.java
@@ -45,7 +45,6 @@ import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
-import java.util.Set;
public abstract class AnyKeyboard extends Keyboard {
private final static String TAG = "ASK - AK";
@@ -487,7 +486,7 @@ public abstract class AnyKeyboard extends Keyboard {
return Character.isLetter(keyValue) || (keyValue == '\'');
}
- public abstract Set<Character> getSentenceSeparators();
+ public abstract char[] getSentenceSeparators();
/**
* This looks at the ime options given by the current editor, to set the
diff --git a/src/main/java/com/anysoftkeyboard/keyboards/AnyPopupKeyboard.java b/src/main/java/com/anysoftkeyboard/keyboards/AnyPopupKeyboard.java
index c8a540979..5c5c06ea5 100644
--- a/src/main/java/com/anysoftkeyboard/keyboards/AnyPopupKeyboard.java
+++ b/src/main/java/com/anysoftkeyboard/keyboards/AnyPopupKeyboard.java
@@ -22,14 +22,12 @@ import android.support.annotation.NonNull;
import com.anysoftkeyboard.addons.AddOn;
import com.menny.android.anysoftkeyboard.R;
-import java.util.Collections;
import java.util.List;
-import java.util.Set;
public class AnyPopupKeyboard extends AnyKeyboard {
private int mAdditionalWidth = 0;
- private static final Set<Character> msEmptySet = Collections.emptySet();
+ private static final char[] EMPTY_CHAR_ARRAY = new char[0];
private final String mKeyboardName;
public AnyPopupKeyboard(@NonNull AddOn keyboardAddOn, Context askContext, Context context,//note: the context can be from a different package!
@@ -129,8 +127,8 @@ public class AnyPopupKeyboard extends AnyKeyboard {
@Override
- public Set<Character> getSentenceSeparators() {
- return msEmptySet;
+ public char[] getSentenceSeparators() {
+ return EMPTY_CHAR_ARRAY;
}
@Override
diff --git a/src/main/java/com/anysoftkeyboard/keyboards/ExternalAnyKeyboard.java b/src/main/java/com/anysoftkeyboard/keyboards/ExternalAnyKeyboard.java
index c1e0353c4..50aa95fc8 100644
--- a/src/main/java/com/anysoftkeyboard/keyboards/ExternalAnyKeyboard.java
+++ b/src/main/java/com/anysoftkeyboard/keyboards/ExternalAnyKeyboard.java
@@ -61,7 +61,7 @@ public class ExternalAnyKeyboard extends AnyKeyboard implements HardKeyboardTran
private final Locale mLocale;
private final HardKeyboardSequenceHandler mHardKeyboardTranslator;
private final HashSet<Character> mAdditionalIsLetterExceptions;
- private final HashSet<Character> mSentenceSeparators;
+ private final char[] mSentenceSeparators;
private KeyboardExtension mExtensionLayout = null;
@@ -94,10 +94,11 @@ public class ExternalAnyKeyboard extends AnyKeyboard implements HardKeyboardTran
mAdditionalIsLetterExceptions.add(additionalIsLetterExceptions
.charAt(i));
}
- mSentenceSeparators = new HashSet<>(sentenceSeparators != null ? sentenceSeparators.length() : 0);
+
if (sentenceSeparators != null) {
- for (int i = 0; i < sentenceSeparators.length(); i++)
- mSentenceSeparators.add(sentenceSeparators.charAt(i));
+ mSentenceSeparators = sentenceSeparators.toCharArray();
+ } else {
+ mSentenceSeparators = new char[0];
}
setExtensionLayout(KeyboardExtensionFactory
@@ -316,7 +317,7 @@ public class ExternalAnyKeyboard extends AnyKeyboard implements HardKeyboardTran
}
@Override
- public HashSet<Character> getSentenceSeparators() {
+ public char[] getSentenceSeparators() {
return mSentenceSeparators;
}