Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86735948 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Add SlidingKeyInputPreview class"

parents 8aa9963a a237cd4a
Loading
Loading
Loading
Loading
+10 −19
Original line number Diff line number Diff line
@@ -57,9 +57,7 @@ public final class PreviewPlacerView extends RelativeLayout {
    private final Rect mGesturePreviewTrailBoundsRect = new Rect(); // per trail
    // TODO: Move these AbstractDrawingPvreiew objects to MainKeyboardView.
    private final GestureFloatingPreviewText mGestureFloatingPreviewText;
    private boolean mShowSlidingKeyInputPreview;
    private final int[] mRubberBandFrom = CoordinateUtils.newInstance();
    private final int[] mRubberBandTo = CoordinateUtils.newInstance();
    private final SlidingKeyInputPreview mSlidingKeyInputPreview;

    private final DrawingHandler mDrawingHandler;

@@ -107,6 +105,7 @@ public final class PreviewPlacerView extends RelativeLayout {
        // MultiGesturePreviewText, depending on the user's choice in the settings.
        mGestureFloatingPreviewText = new GestureFloatingPreviewText(this, mainKeyboardViewAttr);
        mGesturePreviewTrailParams = new Params(mainKeyboardViewAttr);
        mSlidingKeyInputPreview = new SlidingKeyInputPreview(this, mainKeyboardViewAttr);
        mainKeyboardViewAttr.recycle();

        mDrawingHandler = new DrawingHandler(this, mGesturePreviewTrailParams);
@@ -125,6 +124,7 @@ public final class PreviewPlacerView extends RelativeLayout {
            final int height) {
        CoordinateUtils.copy(mKeyboardViewOrigin, originCoords);
        mGestureFloatingPreviewText.setKeyboardGeometry(originCoords, width, height);
        mSlidingKeyInputPreview.setKeyboardGeometry(originCoords, width, height);
        mOffscreenOffsetY = (int)(
                height * GestureStroke.EXTRA_GESTURE_TRAIL_AREA_ABOVE_KEYBOARD_RATIO);
        mOffscreenWidth = width;
@@ -156,25 +156,21 @@ public final class PreviewPlacerView extends RelativeLayout {
        }
    }

    // TODO: Move this method to MainKeyboardView
    public void showSlidingKeyInputPreview(final PointerTracker tracker) {
        if (!tracker.isInSlidingKeyInputFromModifier()) {
            mShowSlidingKeyInputPreview = false;
            return;
        }
        tracker.getDownCoordinates(mRubberBandFrom);
        tracker.getLastCoordinates(mRubberBandTo);
        mShowSlidingKeyInputPreview = true;
        invalidate();
        mSlidingKeyInputPreview.setPreviewPosition(tracker);
    }

    // TODO: Move this method to MainKeyboardView
    public void dismissSlidingKeyInputPreview() {
        mShowSlidingKeyInputPreview = false;
        mSlidingKeyInputPreview.dismissSlidingKeyInputPreview();
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        mGestureFloatingPreviewText.onDetachFromWindow();
        mSlidingKeyInputPreview.onDetachFromWindow();
        freeOffscreenBuffer();
    }

@@ -221,9 +217,7 @@ public final class PreviewPlacerView extends RelativeLayout {
            }
        }
        mGestureFloatingPreviewText.drawPreview(canvas);
        if (mShowSlidingKeyInputPreview) {
            drawSlidingKeyInputPreview(canvas);
        }
        mSlidingKeyInputPreview.drawPreview(canvas);
        canvas.translate(-originX, -originY);
    }

@@ -253,11 +247,8 @@ public final class PreviewPlacerView extends RelativeLayout {
        return needsUpdatingGesturePreviewTrail;
    }

    // TODO: Move this method to MainKeyboardView.
    public void setGestureFloatingPreviewText(final SuggestedWords suggestedWords) {
        mGestureFloatingPreviewText.setSuggetedWords(suggestedWords);
    }

    private void drawSlidingKeyInputPreview(final Canvas canvas) {
        // TODO: Implement rubber band preview
    }
}
+69 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 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 android.content.res.TypedArray;
import android.graphics.Canvas;
import android.view.View;

import com.android.inputmethod.keyboard.PointerTracker;
import com.android.inputmethod.latin.CoordinateUtils;

/**
 * Draw rubber band preview graphics during sliding key input.
 */
public final class SlidingKeyInputPreview extends AbstractDrawingPreview {
    private boolean mShowSlidingKeyInputPreview;
    private final int[] mRubberBandFrom = CoordinateUtils.newInstance();
    private final int[] mRubberBandTo = CoordinateUtils.newInstance();

    public SlidingKeyInputPreview(final View drawingView, final TypedArray mainKeyboardViewAttr) {
        super(drawingView);
    }

    public void dismissSlidingKeyInputPreview() {
        mShowSlidingKeyInputPreview = false;
    }

    /**
     * Draws the preview
     * @param canvas The canvas where the preview is drawn.
     */
    @Override
    public void drawPreview(final Canvas canvas) {
        if (!isPreviewEnabled() || mShowSlidingKeyInputPreview == false) {
            return;
        }
        // TODO: Implement rubber band preview
    }

    /**
     * Set the position of the preview.
     * @param tracker The new location of the preview is based on the points in PointerTracker.
     */
    @Override
    public void setPreviewPosition(final PointerTracker tracker) {
        if (!tracker.isInSlidingKeyInputFromModifier()) {
            mShowSlidingKeyInputPreview = false;
            return;
        }
        tracker.getDownCoordinates(mRubberBandFrom);
        tracker.getLastCoordinates(mRubberBandTo);
        mShowSlidingKeyInputPreview = true;
        getDrawingView().invalidate();
    }
}