Make DrawingProxy and TimerProxy as a top-level interface
Change-Id: Ia425f341255595f8f80c13b2aa409249f9ce4202main
parent
be708c4e59
commit
34a9e2ae87
|
@ -39,8 +39,8 @@ import android.view.ViewGroup;
|
||||||
import com.android.inputmethod.accessibility.AccessibilityUtils;
|
import com.android.inputmethod.accessibility.AccessibilityUtils;
|
||||||
import com.android.inputmethod.accessibility.MainKeyboardAccessibilityDelegate;
|
import com.android.inputmethod.accessibility.MainKeyboardAccessibilityDelegate;
|
||||||
import com.android.inputmethod.annotations.ExternallyReferenced;
|
import com.android.inputmethod.annotations.ExternallyReferenced;
|
||||||
import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
|
|
||||||
import com.android.inputmethod.keyboard.internal.DrawingPreviewPlacerView;
|
import com.android.inputmethod.keyboard.internal.DrawingPreviewPlacerView;
|
||||||
|
import com.android.inputmethod.keyboard.internal.DrawingProxy;
|
||||||
import com.android.inputmethod.keyboard.internal.GestureFloatingTextDrawingPreview;
|
import com.android.inputmethod.keyboard.internal.GestureFloatingTextDrawingPreview;
|
||||||
import com.android.inputmethod.keyboard.internal.GestureTrailsDrawingPreview;
|
import com.android.inputmethod.keyboard.internal.GestureTrailsDrawingPreview;
|
||||||
import com.android.inputmethod.keyboard.internal.KeyDrawParams;
|
import com.android.inputmethod.keyboard.internal.KeyDrawParams;
|
||||||
|
@ -110,7 +110,7 @@ import javax.annotation.Nullable;
|
||||||
* @attr ref R.styleable#MainKeyboardView_gestureRecognitionSpeedThreshold
|
* @attr ref R.styleable#MainKeyboardView_gestureRecognitionSpeedThreshold
|
||||||
* @attr ref R.styleable#MainKeyboardView_suppressKeyPreviewAfterBatchInputDuration
|
* @attr ref R.styleable#MainKeyboardView_suppressKeyPreviewAfterBatchInputDuration
|
||||||
*/
|
*/
|
||||||
public final class MainKeyboardView extends KeyboardView implements PointerTracker.DrawingProxy,
|
public final class MainKeyboardView extends KeyboardView implements DrawingProxy,
|
||||||
MoreKeysPanel.Controller {
|
MoreKeysPanel.Controller {
|
||||||
private static final String TAG = MainKeyboardView.class.getSimpleName();
|
private static final String TAG = MainKeyboardView.class.getSimpleName();
|
||||||
|
|
||||||
|
|
|
@ -25,11 +25,13 @@ import android.view.MotionEvent;
|
||||||
import com.android.inputmethod.keyboard.internal.BatchInputArbiter;
|
import com.android.inputmethod.keyboard.internal.BatchInputArbiter;
|
||||||
import com.android.inputmethod.keyboard.internal.BatchInputArbiter.BatchInputArbiterListener;
|
import com.android.inputmethod.keyboard.internal.BatchInputArbiter.BatchInputArbiterListener;
|
||||||
import com.android.inputmethod.keyboard.internal.BogusMoveEventDetector;
|
import com.android.inputmethod.keyboard.internal.BogusMoveEventDetector;
|
||||||
|
import com.android.inputmethod.keyboard.internal.DrawingProxy;
|
||||||
import com.android.inputmethod.keyboard.internal.GestureEnabler;
|
import com.android.inputmethod.keyboard.internal.GestureEnabler;
|
||||||
import com.android.inputmethod.keyboard.internal.GestureStrokeDrawingParams;
|
import com.android.inputmethod.keyboard.internal.GestureStrokeDrawingParams;
|
||||||
import com.android.inputmethod.keyboard.internal.GestureStrokeDrawingPoints;
|
import com.android.inputmethod.keyboard.internal.GestureStrokeDrawingPoints;
|
||||||
import com.android.inputmethod.keyboard.internal.GestureStrokeRecognitionParams;
|
import com.android.inputmethod.keyboard.internal.GestureStrokeRecognitionParams;
|
||||||
import com.android.inputmethod.keyboard.internal.PointerTrackerQueue;
|
import com.android.inputmethod.keyboard.internal.PointerTrackerQueue;
|
||||||
|
import com.android.inputmethod.keyboard.internal.TimerProxy;
|
||||||
import com.android.inputmethod.keyboard.internal.TypingTimeRecorder;
|
import com.android.inputmethod.keyboard.internal.TypingTimeRecorder;
|
||||||
import com.android.inputmethod.latin.R;
|
import com.android.inputmethod.latin.R;
|
||||||
import com.android.inputmethod.latin.common.Constants;
|
import com.android.inputmethod.latin.common.Constants;
|
||||||
|
@ -52,66 +54,6 @@ public final class PointerTracker implements PointerTrackerQueue.Element,
|
||||||
private static final boolean DEBUG_LISTENER = false;
|
private static final boolean DEBUG_LISTENER = false;
|
||||||
private static boolean DEBUG_MODE = DebugFlags.DEBUG_ENABLED || DEBUG_EVENT;
|
private static boolean DEBUG_MODE = DebugFlags.DEBUG_ENABLED || DEBUG_EVENT;
|
||||||
|
|
||||||
public interface DrawingProxy {
|
|
||||||
public void invalidateKey(@Nullable Key key);
|
|
||||||
public void showKeyPreview(@Nonnull Key key);
|
|
||||||
public void dismissKeyPreview(@Nonnull Key key);
|
|
||||||
public void dismissKeyPreviewWithoutDelay(@Nonnull Key key);
|
|
||||||
public void onLongPress(@Nonnull PointerTracker tracker);
|
|
||||||
public static final int FADE_IN = 0;
|
|
||||||
public static final int FADE_OUT = 1;
|
|
||||||
public void startWhileTypingAnimation(final int fadeInOrOut);
|
|
||||||
public void showSlidingKeyInputPreview(@Nullable PointerTracker tracker);
|
|
||||||
public void showGestureTrail(@Nonnull PointerTracker tracker,
|
|
||||||
boolean showsFloatingPreviewText);
|
|
||||||
public void dismissGestureFloatingPreviewTextWithoutDelay();
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface TimerProxy {
|
|
||||||
public void startTypingStateTimer(Key typedKey);
|
|
||||||
public boolean isTypingState();
|
|
||||||
public void startKeyRepeatTimerOf(PointerTracker tracker, int repeatCount, int delay);
|
|
||||||
public void startLongPressTimerOf(PointerTracker tracker, int delay);
|
|
||||||
public void cancelLongPressTimerOf(PointerTracker tracker);
|
|
||||||
public void cancelLongPressShiftKeyTimers();
|
|
||||||
public void cancelKeyTimersOf(PointerTracker tracker);
|
|
||||||
public void startDoubleTapShiftKeyTimer();
|
|
||||||
public void cancelDoubleTapShiftKeyTimer();
|
|
||||||
public boolean isInDoubleTapShiftKeyTimeout();
|
|
||||||
public void startUpdateBatchInputTimer(PointerTracker tracker);
|
|
||||||
public void cancelUpdateBatchInputTimer(PointerTracker tracker);
|
|
||||||
public void cancelAllUpdateBatchInputTimers();
|
|
||||||
|
|
||||||
public static class Adapter implements TimerProxy {
|
|
||||||
@Override
|
|
||||||
public void startTypingStateTimer(Key typedKey) {}
|
|
||||||
@Override
|
|
||||||
public boolean isTypingState() { return false; }
|
|
||||||
@Override
|
|
||||||
public void startKeyRepeatTimerOf(PointerTracker tracker, int repeatCount, int delay) {}
|
|
||||||
@Override
|
|
||||||
public void startLongPressTimerOf(PointerTracker tracker, int delay) {}
|
|
||||||
@Override
|
|
||||||
public void cancelLongPressTimerOf(PointerTracker tracker) {}
|
|
||||||
@Override
|
|
||||||
public void cancelLongPressShiftKeyTimers() {}
|
|
||||||
@Override
|
|
||||||
public void cancelKeyTimersOf(PointerTracker tracker) {}
|
|
||||||
@Override
|
|
||||||
public void startDoubleTapShiftKeyTimer() {}
|
|
||||||
@Override
|
|
||||||
public void cancelDoubleTapShiftKeyTimer() {}
|
|
||||||
@Override
|
|
||||||
public boolean isInDoubleTapShiftKeyTimeout() { return false; }
|
|
||||||
@Override
|
|
||||||
public void startUpdateBatchInputTimer(PointerTracker tracker) {}
|
|
||||||
@Override
|
|
||||||
public void cancelUpdateBatchInputTimer(PointerTracker tracker) {}
|
|
||||||
@Override
|
|
||||||
public void cancelAllUpdateBatchInputTimers() {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static final class PointerTrackerParams {
|
static final class PointerTrackerParams {
|
||||||
public final boolean mKeySelectionByDraggingFinger;
|
public final boolean mKeySelectionByDraggingFinger;
|
||||||
public final int mTouchNoiseThresholdTime;
|
public final int mTouchNoiseThresholdTime;
|
||||||
|
@ -586,7 +528,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element,
|
||||||
}
|
}
|
||||||
sListener.onStartBatchInput();
|
sListener.onStartBatchInput();
|
||||||
dismissAllMoreKeysPanels();
|
dismissAllMoreKeysPanels();
|
||||||
sTimerProxy.cancelLongPressTimerOf(this);
|
sTimerProxy.cancelLongPressTimersOf(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showGestureTrail() {
|
private void showGestureTrail() {
|
||||||
|
@ -1094,7 +1036,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element,
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cancelLongPressTimer() {
|
public void cancelLongPressTimer() {
|
||||||
sTimerProxy.cancelLongPressTimerOf(this);
|
sTimerProxy.cancelLongPressTimersOf(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onLongPressed() {
|
public void onLongPressed() {
|
||||||
|
@ -1163,7 +1105,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element,
|
||||||
private void startLongPressTimer(final Key key) {
|
private void startLongPressTimer(final Key key) {
|
||||||
// Note that we need to cancel all active long press shift key timers if any whenever we
|
// Note that we need to cancel all active long press shift key timers if any whenever we
|
||||||
// start a new long press timer for both non-shift and shift keys.
|
// start a new long press timer for both non-shift and shift keys.
|
||||||
sTimerProxy.cancelLongPressShiftKeyTimers();
|
sTimerProxy.cancelLongPressShiftKeyTimer();
|
||||||
if (sInGesture) return;
|
if (sInGesture) return;
|
||||||
if (key == null) return;
|
if (key == null) return;
|
||||||
if (!key.isLongPressEnabled()) return;
|
if (!key.isLongPressEnabled()) return;
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2014 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.inputmethod.keyboard.internal;
|
||||||
|
|
||||||
|
import com.android.inputmethod.keyboard.Key;
|
||||||
|
import com.android.inputmethod.keyboard.PointerTracker;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
public interface DrawingProxy {
|
||||||
|
// TODO: Remove this method.
|
||||||
|
public void invalidateKey(@Nullable Key key);
|
||||||
|
|
||||||
|
// TODO: Rename this method to onKeyPressed.
|
||||||
|
public void showKeyPreview(@Nonnull Key key);
|
||||||
|
|
||||||
|
// TODO: Rename this method to onKeyReleased.
|
||||||
|
public void dismissKeyPreview(@Nonnull Key key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dismiss a key preview visual without delay.
|
||||||
|
* @param key the key whose preview visual should be dismissed.
|
||||||
|
*/
|
||||||
|
public void dismissKeyPreviewWithoutDelay(@Nonnull Key key);
|
||||||
|
|
||||||
|
// TODO: Rename this method to onKeyLongPressed.
|
||||||
|
public void onLongPress(@Nonnull PointerTracker tracker);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start a while-typing-animation.
|
||||||
|
* @param fadeInOrOut {@link #FADE_IN} starts while-typing-fade-in animation.
|
||||||
|
* {@link #FADE_OUT} starts while-typing-fade-out animation.
|
||||||
|
*/
|
||||||
|
public void startWhileTypingAnimation(int fadeInOrOut);
|
||||||
|
public static final int FADE_IN = 0;
|
||||||
|
public static final int FADE_OUT = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show sliding-key input preview.
|
||||||
|
* @param tracker the {@link PointerTracker} that is currently doing the sliding-key input.
|
||||||
|
* null to dismiss the sliding-key input preview.
|
||||||
|
*/
|
||||||
|
public void showSlidingKeyInputPreview(@Nullable PointerTracker tracker);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show gesture trails.
|
||||||
|
* @param tracker the {@link PointerTracker} whose gesture trail will be shown.
|
||||||
|
* @param showsFloatingPreviewText when true, a gesture floating preview text will be shown
|
||||||
|
* with this <code>tracker</code>'s trail.
|
||||||
|
*/
|
||||||
|
public void showGestureTrail(@Nonnull PointerTracker tracker, boolean showsFloatingPreviewText);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dismiss a gesture floating preview text without delay.
|
||||||
|
*/
|
||||||
|
public void dismissGestureFloatingPreviewTextWithoutDelay();
|
||||||
|
}
|
|
@ -22,8 +22,6 @@ import android.view.ViewConfiguration;
|
||||||
|
|
||||||
import com.android.inputmethod.keyboard.Key;
|
import com.android.inputmethod.keyboard.Key;
|
||||||
import com.android.inputmethod.keyboard.PointerTracker;
|
import com.android.inputmethod.keyboard.PointerTracker;
|
||||||
import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
|
|
||||||
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
|
|
||||||
import com.android.inputmethod.latin.common.Constants;
|
import com.android.inputmethod.latin.common.Constants;
|
||||||
import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper;
|
import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper;
|
||||||
|
|
||||||
|
@ -86,7 +84,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startKeyRepeatTimerOf(final PointerTracker tracker, final int repeatCount,
|
public void startKeyRepeatTimerOf(@Nonnull final PointerTracker tracker, final int repeatCount,
|
||||||
final int delay) {
|
final int delay) {
|
||||||
final Key key = tracker.getKey();
|
final Key key = tracker.getKey();
|
||||||
if (key == null || delay == 0) {
|
if (key == null || delay == 0) {
|
||||||
|
@ -110,7 +108,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startLongPressTimerOf(final PointerTracker tracker, final int delay) {
|
public void startLongPressTimerOf(@Nonnull final PointerTracker tracker, final int delay) {
|
||||||
final Key key = tracker.getKey();
|
final Key key = tracker.getKey();
|
||||||
if (key == null) {
|
if (key == null) {
|
||||||
return;
|
return;
|
||||||
|
@ -123,13 +121,13 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void cancelLongPressTimerOf(final PointerTracker tracker) {
|
public void cancelLongPressTimersOf(@Nonnull final PointerTracker tracker) {
|
||||||
removeMessages(MSG_LONGPRESS_KEY, tracker);
|
removeMessages(MSG_LONGPRESS_KEY, tracker);
|
||||||
removeMessages(MSG_LONGPRESS_SHIFT_KEY, tracker);
|
removeMessages(MSG_LONGPRESS_SHIFT_KEY, tracker);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void cancelLongPressShiftKeyTimers() {
|
public void cancelLongPressShiftKeyTimer() {
|
||||||
removeMessages(MSG_LONGPRESS_SHIFT_KEY);
|
removeMessages(MSG_LONGPRESS_SHIFT_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +137,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startTypingStateTimer(final Key typedKey) {
|
public void startTypingStateTimer(@Nonnull final Key typedKey) {
|
||||||
if (typedKey.isModifier() || typedKey.altCodeWhileTyping()) {
|
if (typedKey.isModifier() || typedKey.altCodeWhileTyping()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -190,9 +188,9 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void cancelKeyTimersOf(final PointerTracker tracker) {
|
public void cancelKeyTimersOf(@Nonnull final PointerTracker tracker) {
|
||||||
cancelKeyRepeatTimerOf(tracker);
|
cancelKeyRepeatTimerOf(tracker);
|
||||||
cancelLongPressTimerOf(tracker);
|
cancelLongPressTimersOf(tracker);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cancelAllKeyTimers() {
|
public void cancelAllKeyTimers() {
|
||||||
|
@ -201,7 +199,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startUpdateBatchInputTimer(final PointerTracker tracker) {
|
public void startUpdateBatchInputTimer(@Nonnull final PointerTracker tracker) {
|
||||||
if (mGestureRecognitionUpdateTime <= 0) {
|
if (mGestureRecognitionUpdateTime <= 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -211,7 +209,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void cancelUpdateBatchInputTimer(final PointerTracker tracker) {
|
public void cancelUpdateBatchInputTimer(@Nonnull final PointerTracker tracker) {
|
||||||
removeMessages(MSG_UPDATE_BATCH_INPUT, tracker);
|
removeMessages(MSG_UPDATE_BATCH_INPUT, tracker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,133 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2014 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.inputmethod.keyboard.internal;
|
||||||
|
|
||||||
|
import com.android.inputmethod.keyboard.Key;
|
||||||
|
import com.android.inputmethod.keyboard.PointerTracker;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
public interface TimerProxy {
|
||||||
|
/**
|
||||||
|
* Start a timer to detect if a user is typing keys.
|
||||||
|
* @param typedKey the key that is typed.
|
||||||
|
*/
|
||||||
|
public void startTypingStateTimer(@Nonnull Key typedKey);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a user is key typing.
|
||||||
|
* @return true if a user is in typing.
|
||||||
|
*/
|
||||||
|
public boolean isTypingState();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start a timer to simulate repeated key presses while a user keep pressing a key.
|
||||||
|
* @param tracker the {@link PointerTracker} that points the key to be repeated.
|
||||||
|
* @param repeatCount the number of times that the key is repeating. Starting from 1.
|
||||||
|
* @param delay the interval delay to the next key repeat, in millisecond.
|
||||||
|
*/
|
||||||
|
public void startKeyRepeatTimerOf(@Nonnull PointerTracker tracker, int repeatCount, int delay);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start a timer to detect a long pressed key.
|
||||||
|
* If a key pointed by <code>tracker</code> is a shift key, start another timer to detect
|
||||||
|
* long pressed shift key.
|
||||||
|
* @param tracker the {@link PointerTracker} that starts long pressing.
|
||||||
|
* @param delay the delay to fire the long press timer, in millisecond.
|
||||||
|
*/
|
||||||
|
public void startLongPressTimerOf(@Nonnull PointerTracker tracker, int delay);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cancel timers for detecting a long pressed key and a long press shift key.
|
||||||
|
* @param tracker cancel long press timers of this {@link PointerTracker}.
|
||||||
|
*/
|
||||||
|
public void cancelLongPressTimersOf(@Nonnull PointerTracker tracker);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cancel a timer for detecting a long pressed shift key.
|
||||||
|
*/
|
||||||
|
public void cancelLongPressShiftKeyTimer();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cancel timers for detecting repeated key press, long pressed key, and long pressed shift key.
|
||||||
|
* @param tracker the {@link PointerTracker} that starts timers to be canceled.
|
||||||
|
*/
|
||||||
|
public void cancelKeyTimersOf(@Nonnull PointerTracker tracker);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start a timer to detect double tapped shift key.
|
||||||
|
*/
|
||||||
|
public void startDoubleTapShiftKeyTimer();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cancel a timer of detecting double tapped shift key.
|
||||||
|
*/
|
||||||
|
public void cancelDoubleTapShiftKeyTimer();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a timer of detecting double tapped shift key is running.
|
||||||
|
* @return true if detecting double tapped shift key is on going.
|
||||||
|
*/
|
||||||
|
public boolean isInDoubleTapShiftKeyTimeout();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start a timer to fire updating batch input while <code>tracker</code> is on hold.
|
||||||
|
* @param tracker the {@link PointerTracker} that stops moving.
|
||||||
|
*/
|
||||||
|
public void startUpdateBatchInputTimer(@Nonnull PointerTracker tracker);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cancel a timer of firing updating batch input.
|
||||||
|
* @param tracker the {@link PointerTracker} that resumes moving or ends gesture input.
|
||||||
|
*/
|
||||||
|
public void cancelUpdateBatchInputTimer(@Nonnull PointerTracker tracker);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cancel all timers of firing updating batch input.
|
||||||
|
*/
|
||||||
|
public void cancelAllUpdateBatchInputTimers();
|
||||||
|
|
||||||
|
public static class Adapter implements TimerProxy {
|
||||||
|
@Override
|
||||||
|
public void startTypingStateTimer(@Nonnull Key typedKey) {}
|
||||||
|
@Override
|
||||||
|
public boolean isTypingState() { return false; }
|
||||||
|
@Override
|
||||||
|
public void startKeyRepeatTimerOf(@Nonnull PointerTracker tracker, int repeatCount,
|
||||||
|
int delay) {}
|
||||||
|
@Override
|
||||||
|
public void startLongPressTimerOf(@Nonnull PointerTracker tracker, int delay) {}
|
||||||
|
@Override
|
||||||
|
public void cancelLongPressTimersOf(@Nonnull PointerTracker tracker) {}
|
||||||
|
@Override
|
||||||
|
public void cancelLongPressShiftKeyTimer() {}
|
||||||
|
@Override
|
||||||
|
public void cancelKeyTimersOf(@Nonnull PointerTracker tracker) {}
|
||||||
|
@Override
|
||||||
|
public void startDoubleTapShiftKeyTimer() {}
|
||||||
|
@Override
|
||||||
|
public void cancelDoubleTapShiftKeyTimer() {}
|
||||||
|
@Override
|
||||||
|
public boolean isInDoubleTapShiftKeyTimeout() { return false; }
|
||||||
|
@Override
|
||||||
|
public void startUpdateBatchInputTimer(@Nonnull PointerTracker tracker) {}
|
||||||
|
@Override
|
||||||
|
public void cancelUpdateBatchInputTimer(@Nonnull PointerTracker tracker) {}
|
||||||
|
@Override
|
||||||
|
public void cancelAllUpdateBatchInputTimers() {}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue