diff options
| author | Menny Even Danan <menny@evendanan.net> | 2016-02-24 18:56:23 +0000 |
|---|---|---|
| committer | Menny Even Danan <menny@evendanan.net> | 2016-02-24 18:56:23 +0000 |
| commit | e854761f600bce0a1d48614e9d3d2178b96a038f (patch) | |
| tree | bf6df12e3d4176db26dcd5b1842029bfc0691a3e /src | |
| parent | fcaa97e60c3271c959b9e8702fa185e824bc255d (diff) | |
| download | AnySoftKeyboard-e854761f600bce0a1d48614e9d3d2178b96a038f.tar.gz AnySoftKeyboard-e854761f600bce0a1d48614e9d3d2178b96a038f.tar.bz2 | |
removing HashSet<Character> usage. #575
Diffstat (limited to 'src')
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; } |
