diff options
Diffstat (limited to 'java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java')
| -rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java b/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java index c38febf49..d0fecf060 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java +++ b/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java @@ -21,12 +21,14 @@ import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Paint.Align; +import android.os.Message; import android.text.TextUtils; import android.util.SparseArray; import android.widget.RelativeLayout; import com.android.inputmethod.keyboard.PointerTracker; import com.android.inputmethod.latin.R; +import com.android.inputmethod.latin.StaticInnerHandlerWrapper; public class PreviewPlacerView extends RelativeLayout { private final Paint mGesturePaint; @@ -39,6 +41,7 @@ public class PreviewPlacerView extends RelativeLayout { private final int mGestureFloatingPreviewTextShadingBorder; private final int mGestureFloatingPreviewTextConnectorColor; private final int mGestureFloatingPreviewTextConnectorWidth; + /* package */ final int mGestureFloatingPreviewTextLingerTimeout; private int mXOrigin; private int mYOrigin; @@ -49,6 +52,43 @@ public class PreviewPlacerView extends RelativeLayout { private boolean mDrawsGesturePreviewTrail; private boolean mDrawsGestureFloatingPreviewText; + private final DrawingHandler mDrawingHandler = new DrawingHandler(this); + + private static class DrawingHandler extends StaticInnerHandlerWrapper<PreviewPlacerView> { + private static final int MSG_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT = 0; + + public DrawingHandler(PreviewPlacerView outerInstance) { + super(outerInstance); + } + + @Override + public void handleMessage(Message msg) { + final PreviewPlacerView placerView = getOuterInstance(); + if (placerView == null) return; + switch (msg.what) { + case MSG_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT: + placerView.setGestureFloatingPreviewText(null); + break; + } + } + + private void cancelDismissGestureFloatingPreviewText() { + removeMessages(MSG_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT); + } + + public void dismissGestureFloatingPreviewText() { + cancelDismissGestureFloatingPreviewText(); + final PreviewPlacerView placerView = getOuterInstance(); + sendMessageDelayed( + obtainMessage(MSG_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT), + placerView.mGestureFloatingPreviewTextLingerTimeout); + } + + public void cancelAllMessages() { + cancelDismissGestureFloatingPreviewText(); + } + } + public PreviewPlacerView(Context context, TypedArray keyboardViewAttr) { super(context); setWillNotDraw(false); @@ -71,6 +111,8 @@ public class PreviewPlacerView extends RelativeLayout { R.styleable.KeyboardView_gestureFloatingPreviewTextConnectorColor, 0); mGestureFloatingPreviewTextConnectorWidth = keyboardViewAttr.getDimensionPixelSize( R.styleable.KeyboardView_gestureFloatingPreviewTextConnectorWidth, 0); + mGestureFloatingPreviewTextLingerTimeout = keyboardViewAttr.getInt( + R.styleable.KeyboardView_gestureFloatingPreviewTextLingerTimeout, 0); final int gesturePreviewTrailColor = keyboardViewAttr.getColor( R.styleable.KeyboardView_gesturePreviewTrailColor, 0); final int gesturePreviewTrailWidth = keyboardViewAttr.getDimensionPixelSize( @@ -136,6 +178,14 @@ public class PreviewPlacerView extends RelativeLayout { invalidate(); } + public void dismissGestureFloatingPreviewText() { + mDrawingHandler.dismissGestureFloatingPreviewText(); + } + + public void cancelAllMessages() { + mDrawingHandler.cancelAllMessages(); + } + private void drawGestureFloatingPreviewText(Canvas canvas, PointerTracker tracker, String gestureFloatingPreviewText) { if (TextUtils.isEmpty(gestureFloatingPreviewText)) { |
