aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi Takaoka <takaoka@google.com>2012-03-05 02:54:21 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-03-05 02:54:21 -0800
commitd62fa834c6f42b23f010e67086bef909bc57d958 (patch)
tree7c8a8b28f64788dfd6ffcde8ec8fb32f5cb971ee /java/src
parentc208f4dfb7abe1b7a83c725d515edb3615d5d927 (diff)
downloadlatinime-d62fa834c6f42b23f010e67086bef909bc57d958.tar.gz
latinime-d62fa834c6f42b23f010e67086bef909bc57d958.tar.xz
latinime-d62fa834c6f42b23f010e67086bef909bc57d958.zip
Revert "Make SuggestedWords immutable"
This reverts commit c208f4dfb7abe1b7a83c725d515edb3615d5d927
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java12
-rw-r--r--java/src/com/android/inputmethod/latin/LatinImeLogger.java4
-rw-r--r--java/src/com/android/inputmethod/latin/SuggestedWords.java69
-rw-r--r--java/src/com/android/inputmethod/latin/Utils.java4
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java4
5 files changed, 43 insertions, 50 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 6c9a827d6..59fa66ded 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1827,8 +1827,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
builder.addTypedWordAndPreviousSuggestions(typedWord, previousSuggestions);
}
}
- if (Utils.shouldBlockAutoCorrectionBySafetyNet(builder, mSuggest)) {
- builder.setShouldBlockAutoCorrectionBySafetyNet();
+ final SuggestedWords suggestedWords = builder.build();
+ if (Utils.shouldBlockAutoCorrectionBySafetyNet(suggestedWords, mSuggest)) {
+ suggestedWords.setShouldBlockAutoCorrectionBySatefyNet();
}
showSuggestions(builder.build(), typedWord);
}
@@ -1836,7 +1837,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
public void showSuggestions(final SuggestedWords suggestedWords, final CharSequence typedWord) {
final CharSequence autoCorrection;
if (suggestedWords.size() > 0) {
- if (!suggestedWords.mShouldBlockAutoCorrectionBySafetyNet
+ if (!suggestedWords.shouldBlockAutoCorrectionBySafetyNet()
&& suggestedWords.hasAutoCorrectionWord()) {
autoCorrection = suggestedWords.getWord(1);
} else {
@@ -1910,7 +1911,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (suggestion.length() == 1 && isShowingPunctuationList()) {
// Word separators are suggested before the user inputs something.
// So, LatinImeLogger logs "" as a user's input.
- LatinImeLogger.logOnManualSuggestion("", suggestion.toString(), index, suggestions);
+ LatinImeLogger.logOnManualSuggestion(
+ "", suggestion.toString(), index, suggestions.mWords);
// Rely on onCodeInput to do the complicated swapping/stripping logic consistently.
final int primaryCode = suggestion.charAt(0);
onCodeInput(primaryCode, new int[] { primaryCode },
@@ -1921,7 +1923,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
// We need to log before we commit, because the word composer will store away the user
// typed word.
LatinImeLogger.logOnManualSuggestion(mWordComposer.getTypedWord().toString(),
- suggestion.toString(), index, suggestions);
+ suggestion.toString(), index, suggestions.mWords);
mExpectingUpdateSelection = true;
commitChosenWord(suggestion, LastComposedWord.COMMIT_TYPE_MANUAL_PICK,
LastComposedWord.NOT_A_SEPARATOR);
diff --git a/java/src/com/android/inputmethod/latin/LatinImeLogger.java b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
index 9d4307fa5..e3dadf250 100644
--- a/java/src/com/android/inputmethod/latin/LatinImeLogger.java
+++ b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
@@ -22,6 +22,8 @@ import android.view.inputmethod.EditorInfo;
import com.android.inputmethod.keyboard.Keyboard;
+import java.util.List;
+
public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChangeListener {
public static boolean sDBG = false;
@@ -42,7 +44,7 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang
}
public static void logOnManualSuggestion(
- String before, String after, int position, SuggestedWords suggestions) {
+ String before, String after, int position, List<CharSequence> suggestions) {
}
public static void logOnAutoCorrection(String before, String after, int separatorCode) {
diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java
index bc6c52787..ff8945f71 100644
--- a/java/src/com/android/inputmethod/latin/SuggestedWords.java
+++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java
@@ -20,25 +20,22 @@ import android.text.TextUtils;
import android.view.inputmethod.CompletionInfo;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
public class SuggestedWords {
- public static final SuggestedWords EMPTY = new SuggestedWords(null, false, false, false, false,
- null);
+ public static final SuggestedWords EMPTY = new SuggestedWords(null, false, false, false, null);
- private final List<CharSequence> mWords;
+ public final List<CharSequence> mWords;
public final boolean mTypedWordValid;
public final boolean mHasAutoCorrectionCandidate;
public final boolean mIsPunctuationSuggestions;
- public final boolean mShouldBlockAutoCorrectionBySafetyNet;
private final List<SuggestedWordInfo> mSuggestedWordInfoList;
+ private boolean mShouldBlockAutoCorrectionBySafetyNet;
- SuggestedWords(List<CharSequence> words, boolean typedWordValid,
+ private SuggestedWords(List<CharSequence> words, boolean typedWordValid,
boolean hasAutoCorrectionCandidate, boolean isPunctuationSuggestions,
- boolean shouldBlockAutoCorrectionBySafetyNet,
List<SuggestedWordInfo> suggestedWordInfoList) {
if (words != null) {
mWords = words;
@@ -48,8 +45,8 @@ public class SuggestedWords {
mTypedWordValid = typedWordValid;
mHasAutoCorrectionCandidate = hasAutoCorrectionCandidate;
mIsPunctuationSuggestions = isPunctuationSuggestions;
- mShouldBlockAutoCorrectionBySafetyNet = shouldBlockAutoCorrectionBySafetyNet;
mSuggestedWordInfoList = suggestedWordInfoList;
+ mShouldBlockAutoCorrectionBySafetyNet = false;
}
public int size() {
@@ -65,23 +62,24 @@ public class SuggestedWords {
}
public boolean hasAutoCorrectionWord() {
- return mHasAutoCorrectionCandidate && size() > 1 && mTypedWordValid;
+ return mHasAutoCorrectionCandidate && size() > 1 && !mTypedWordValid;
}
- public boolean willAutoCorrect() {
- return !mTypedWordValid && mHasAutoCorrectionCandidate
- && !mShouldBlockAutoCorrectionBySafetyNet;
+ public boolean isPunctuationSuggestions() {
+ return mIsPunctuationSuggestions;
+ }
+
+ public void setShouldBlockAutoCorrectionBySatefyNet() {
+ mShouldBlockAutoCorrectionBySafetyNet = true;
}
- @Override
- public String toString() {
- // Pretty-print method to help debug
- return "SuggestedWords.Builder:"
- + " mTypedWordValid = " + mTypedWordValid
- + " mHasAutoCorrectionCandidate = " + mHasAutoCorrectionCandidate
- + " mIsPunctuationSuggestions = " + mIsPunctuationSuggestions
- + " mShouldBlockAutoCorrectionBySafetyNet" + mShouldBlockAutoCorrectionBySafetyNet
- + " mWords=" + Arrays.toString(mWords.toArray());
+ public boolean shouldBlockAutoCorrectionBySafetyNet() {
+ return mShouldBlockAutoCorrectionBySafetyNet;
+ }
+
+ public boolean willAutoCorrect() {
+ return !mTypedWordValid && mHasAutoCorrectionCandidate
+ && !shouldBlockAutoCorrectionBySafetyNet();
}
public static class Builder {
@@ -89,7 +87,6 @@ public class SuggestedWords {
private boolean mTypedWordValid;
private boolean mHasMinimalSuggestion;
private boolean mIsPunctuationSuggestions;
- private boolean mShouldBlockAutoCorrectionBySafetyNet;
private List<SuggestedWordInfo> mSuggestedWordInfoList =
new ArrayList<SuggestedWordInfo>();
@@ -154,11 +151,6 @@ public class SuggestedWords {
return this;
}
- public Builder setShouldBlockAutoCorrectionBySafetyNet() {
- mShouldBlockAutoCorrectionBySafetyNet = true;
- return this;
- }
-
// Should get rid of the first one (what the user typed previously) from suggestions
// and replace it with what the user currently typed.
public Builder addTypedWordAndPreviousSuggestions(CharSequence typedWord,
@@ -184,8 +176,7 @@ public class SuggestedWords {
public SuggestedWords build() {
return new SuggestedWords(mWords, mTypedWordValid, mHasMinimalSuggestion,
- mIsPunctuationSuggestions, mShouldBlockAutoCorrectionBySafetyNet,
- mSuggestedWordInfoList);
+ mIsPunctuationSuggestions, mSuggestedWordInfoList);
}
public int size() {
@@ -196,20 +187,18 @@ public class SuggestedWords {
return mWords.get(pos);
}
- public boolean isTypedWordValid() {
- return mTypedWordValid;
- }
-
@Override
public String toString() {
// Pretty-print method to help debug
- return "SuggestedWords.Builder:"
- + " mTypedWordValid = " + mTypedWordValid
- + " mHasMinimalSuggestion = " + mHasMinimalSuggestion
- + " mIsPunctuationSuggestions = " + mIsPunctuationSuggestions
- + " mShouldBlockAutoCorrectionBySafetyNet"
- + mShouldBlockAutoCorrectionBySafetyNet
- + " mWords=" + Arrays.toString(mWords.toArray());
+ final StringBuilder sb = new StringBuilder("StringBuilder: mTypedWordValid = "
+ + mTypedWordValid + " ; mHasMinimalSuggestion = " + mHasMinimalSuggestion
+ + " ; mIsPunctuationSuggestions = " + mIsPunctuationSuggestions
+ + " --- ");
+ for (CharSequence s : mWords) {
+ sb.append(s);
+ sb.append(" ; ");
+ }
+ return sb.toString();
}
}
diff --git a/java/src/com/android/inputmethod/latin/Utils.java b/java/src/com/android/inputmethod/latin/Utils.java
index 69b2902cc..f6bc85431 100644
--- a/java/src/com/android/inputmethod/latin/Utils.java
+++ b/java/src/com/android/inputmethod/latin/Utils.java
@@ -190,11 +190,11 @@ public class Utils {
// TODO: Resolve the inconsistencies between the native auto correction algorithms and
// this safety net
- public static boolean shouldBlockAutoCorrectionBySafetyNet(SuggestedWords.Builder suggestions,
+ public static boolean shouldBlockAutoCorrectionBySafetyNet(SuggestedWords suggestions,
Suggest suggest) {
// Safety net for auto correction.
// Actually if we hit this safety net, it's actually a bug.
- if (suggestions.size() <= 1 || suggestions.isTypedWordValid()) return false;
+ if (suggestions.size() <= 1 || suggestions.mTypedWordValid) return false;
// If user selected aggressive auto correction mode, there is no need to use the safety
// net.
if (suggest.isAggressiveAutoCorrectionMode()) return false;
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java
index 20eb55ce8..e5638ef21 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java
@@ -307,7 +307,7 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
}
if (LatinImeLogger.sDBG) {
if (index == mCenterSuggestionIndex && suggestions.mHasAutoCorrectionCandidate
- && suggestions.mShouldBlockAutoCorrectionBySafetyNet) {
+ && suggestions.shouldBlockAutoCorrectionBySafetyNet()) {
return 0xFFFF0000;
}
}
@@ -335,7 +335,7 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
public void layout(SuggestedWords suggestions, ViewGroup stripView, ViewGroup placer,
int stripWidth) {
- if (suggestions.mIsPunctuationSuggestions) {
+ if (suggestions.isPunctuationSuggestions()) {
layoutPunctuationSuggestions(suggestions, stripView);
return;
}