[IL127] Move the double space countdown to InputLogic
Bug: 8636060 Change-Id: Ie193b747bd9d0b5ba6a986b9a3c746c2182742ed
This commit is contained in:
parent
554346e94c
commit
350d73932d
2 changed files with 26 additions and 32 deletions
|
@ -169,7 +169,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
|
||||
private int mDelayUpdateSuggestions;
|
||||
private int mDelayUpdateShiftState;
|
||||
private long mDoubleSpacePeriodTimerStart;
|
||||
|
||||
public UIHandler(final LatinIME ownerInstance) {
|
||||
super(ownerInstance);
|
||||
|
@ -283,10 +282,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
sendMessageDelayed(obtainMessage(MSG_UPDATE_SHIFT_STATE), mDelayUpdateShiftState);
|
||||
}
|
||||
|
||||
public void cancelUpdateShiftState() {
|
||||
removeMessages(MSG_UPDATE_SHIFT_STATE);
|
||||
}
|
||||
|
||||
@UsedForTesting
|
||||
public void removeAllMessages() {
|
||||
for (int i = 0; i <= MSG_LAST; ++i) {
|
||||
|
@ -314,19 +309,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
obtainMessage(MSG_ON_END_BATCH_INPUT, suggestedWords).sendToTarget();
|
||||
}
|
||||
|
||||
public void startDoubleSpacePeriodTimer() {
|
||||
mDoubleSpacePeriodTimerStart = SystemClock.uptimeMillis();
|
||||
}
|
||||
|
||||
public void cancelDoubleSpacePeriodTimer() {
|
||||
mDoubleSpacePeriodTimerStart = 0;
|
||||
}
|
||||
|
||||
public boolean isAcceptingDoubleSpacePeriod() {
|
||||
return SystemClock.uptimeMillis() - mDoubleSpacePeriodTimerStart
|
||||
< getOwnerInstance().mSettings.getCurrent().mDoubleSpacePeriodTimeout;
|
||||
}
|
||||
|
||||
// Working variables for the following methods.
|
||||
private boolean mIsOrientationChanging;
|
||||
private boolean mPendingSuccessiveImsCallback;
|
||||
|
@ -882,7 +864,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
setNeutralSuggestionStrip();
|
||||
|
||||
mHandler.cancelUpdateSuggestionStrip();
|
||||
mHandler.cancelDoubleSpacePeriodTimer();
|
||||
|
||||
mainKeyboardView.setMainDictionaryAvailability(null != suggest
|
||||
? suggest.mDictionaryFacilitator.hasMainDictionary() : false);
|
||||
|
|
|
@ -96,6 +96,7 @@ public final class InputLogic {
|
|||
// TODO: This boolean is persistent state and causes large side effects at unexpected times.
|
||||
// Find a way to remove it for readability.
|
||||
private boolean mIsAutoCorrectionIndicatorOn;
|
||||
private long mDoubleSpacePeriodCountdownStart;
|
||||
|
||||
public InputLogic(final LatinIME latinIME,
|
||||
final SuggestionStripViewAccessor suggestionStripViewAccessor) {
|
||||
|
@ -138,6 +139,7 @@ public final class InputLogic {
|
|||
// In some cases (namely, after rotation of the device) editorInfo.initialSelStart is lying
|
||||
// so we try using some heuristics to find out about these and fix them.
|
||||
mConnection.tryFixLyingCursorPosition();
|
||||
cancelDoubleSpacePeriodCountdown();
|
||||
mInputLogicHandler = new InputLogicHandler(mLatinIME, this);
|
||||
}
|
||||
|
||||
|
@ -406,7 +408,7 @@ public final class InputLogic {
|
|||
|
||||
// TODO: Consolidate the double-space period timer, mLastKeyTime, and the space state.
|
||||
if (event.mCodePoint != Constants.CODE_SPACE) {
|
||||
handler.cancelDoubleSpacePeriodTimer();
|
||||
cancelDoubleSpacePeriodCountdown();
|
||||
}
|
||||
|
||||
boolean didAutoCorrect = false;
|
||||
|
@ -847,7 +849,7 @@ public final class InputLogic {
|
|||
|
||||
if (Constants.CODE_SPACE == codePoint) {
|
||||
if (inputTransaction.mSettingsValues.isSuggestionsRequested()) {
|
||||
if (maybeDoubleSpacePeriod(inputTransaction.mSettingsValues, handler)) {
|
||||
if (maybeDoubleSpacePeriod(inputTransaction)) {
|
||||
inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
|
||||
mSpaceState = SpaceState.DOUBLE;
|
||||
} else if (!mSuggestedWords.isPunctuationSuggestions()) {
|
||||
|
@ -855,7 +857,7 @@ public final class InputLogic {
|
|||
}
|
||||
}
|
||||
|
||||
handler.startDoubleSpacePeriodTimer();
|
||||
startDoubleSpacePeriodCountdown(inputTransaction);
|
||||
handler.postUpdateSuggestionStrip();
|
||||
} else {
|
||||
if (swapWeakSpace) {
|
||||
|
@ -952,7 +954,7 @@ public final class InputLogic {
|
|||
return;
|
||||
}
|
||||
if (SpaceState.DOUBLE == inputTransaction.mSpaceState) {
|
||||
handler.cancelDoubleSpacePeriodTimer();
|
||||
cancelDoubleSpacePeriodCountdown();
|
||||
if (mConnection.revertDoubleSpacePeriod()) {
|
||||
// No need to reset mSpaceState, it has already be done (that's why we
|
||||
// receive it as a parameter)
|
||||
|
@ -1100,6 +1102,19 @@ public final class InputLogic {
|
|||
return false;
|
||||
}
|
||||
|
||||
public void startDoubleSpacePeriodCountdown(final InputTransaction inputTransaction) {
|
||||
mDoubleSpacePeriodCountdownStart = inputTransaction.mTimestamp;
|
||||
}
|
||||
|
||||
public void cancelDoubleSpacePeriodCountdown() {
|
||||
mDoubleSpacePeriodCountdownStart = 0;
|
||||
}
|
||||
|
||||
public boolean isDoubleSpacePeriodCountdownActive(final InputTransaction inputTransaction) {
|
||||
return inputTransaction.mTimestamp - mDoubleSpacePeriodCountdownStart
|
||||
< inputTransaction.mSettingsValues.mDoubleSpacePeriodTimeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the double-space-to-period transformation if applicable.
|
||||
*
|
||||
|
@ -1112,14 +1127,12 @@ public final class InputLogic {
|
|||
* method applies the transformation and returns true. Otherwise, it does nothing and
|
||||
* returns false.
|
||||
*
|
||||
* @param settingsValues the current values of the settings.
|
||||
* @param inputTransaction The transaction in progress.
|
||||
* @return true if we applied the double-space-to-period transformation, false otherwise.
|
||||
*/
|
||||
private boolean maybeDoubleSpacePeriod(final SettingsValues settingsValues,
|
||||
// TODO: remove this argument
|
||||
final LatinIME.UIHandler handler) {
|
||||
if (!settingsValues.mUseDoubleSpacePeriod) return false;
|
||||
if (!handler.isAcceptingDoubleSpacePeriod()) return false;
|
||||
private boolean maybeDoubleSpacePeriod(final InputTransaction inputTransaction) {
|
||||
if (!inputTransaction.mSettingsValues.mUseDoubleSpacePeriod) return false;
|
||||
if (!isDoubleSpacePeriodCountdownActive(inputTransaction)) return false;
|
||||
// We only do this when we see two spaces and an accepted code point before the cursor.
|
||||
// The code point may be a surrogate pair but the two spaces may not, so we need 4 chars.
|
||||
final CharSequence lastThree = mConnection.getTextBeforeCursor(4, 0);
|
||||
|
@ -1135,10 +1148,10 @@ public final class InputLogic {
|
|||
Character.isSurrogatePair(lastThree.charAt(0), lastThree.charAt(1)) ?
|
||||
Character.codePointAt(lastThree, 0) : lastThree.charAt(length - 3);
|
||||
if (canBeFollowedByDoubleSpacePeriod(firstCodePoint)) {
|
||||
handler.cancelDoubleSpacePeriodTimer();
|
||||
cancelDoubleSpacePeriodCountdown();
|
||||
mConnection.deleteSurroundingText(2, 0);
|
||||
final String textToInsert =
|
||||
settingsValues.mSpacingAndPunctuations.mSentenceSeparatorAndSpace;
|
||||
final String textToInsert = inputTransaction.mSettingsValues.mSpacingAndPunctuations
|
||||
.mSentenceSeparatorAndSpace;
|
||||
mConnection.commitText(textToInsert, 1);
|
||||
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
|
||||
ResearchLogger.latinIME_maybeDoubleSpacePeriod(textToInsert,
|
||||
|
|
Loading…
Reference in a new issue