From 9237a72634be821c22911633ef0848130e162d58 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Wed, 31 Aug 2011 14:22:53 +0900 Subject: Rename PopupMiniKeyboardView to MiniKeyboardView Change-Id: Ic83cd1200cfb8f8c0b0cfbcad449031b8e8a29e0 --- java/src/com/android/inputmethod/keyboard/Key.java | 10 +- .../com/android/inputmethod/keyboard/Keyboard.java | 10 +- .../android/inputmethod/keyboard/KeyboardView.java | 8 +- .../inputmethod/keyboard/LatinKeyboardView.java | 20 +- .../android/inputmethod/keyboard/MiniKeyboard.java | 4 +- .../inputmethod/keyboard/MiniKeyboardView.java | 256 +++++++++++++++++++++ .../keyboard/PopupMiniKeyboardView.java | 256 --------------------- .../inputmethod/keyboard/internal/KeyStyles.java | 2 +- .../keyboard/internal/KeyboardBuilder.java | 8 +- .../keyboard/internal/KeyboardParams.java | 4 +- 10 files changed, 285 insertions(+), 293 deletions(-) create mode 100644 java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java delete mode 100644 java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java (limited to 'java/src') diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java index 9cf64e151..8baf3f7d1 100644 --- a/java/src/com/android/inputmethod/keyboard/Key.java +++ b/java/src/com/android/inputmethod/keyboard/Key.java @@ -93,7 +93,7 @@ public class Key { /** Popup characters */ public final CharSequence[] mPopupCharacters; /** Popup keyboard maximum column number */ - public final int mMaxPopupColumn; + public final int mMaxMiniKeyboardColumn; /** * Flags that specify the anchoring to edges of the keyboard for detecting touch events @@ -228,7 +228,7 @@ public class Key { mSticky = false; mRepeatable = false; mPopupCharacters = null; - mMaxPopupColumn = 0; + mMaxMiniKeyboardColumn = 0; mLabel = label; mOutputText = outputText; mCode = code; @@ -323,9 +323,9 @@ public class Key { } else { mPopupCharacters = popupCharacters; } - mMaxPopupColumn = style.getInt(keyboardAttr, - R.styleable.Keyboard_Key_maxPopupKeyboardColumn, - params.mMaxPopupColumn); + mMaxMiniKeyboardColumn = style.getInt(keyboardAttr, + R.styleable.Keyboard_Key_maxMiniKeyboardColumn, + params.mMaxMiniKeyboardColumn); mRepeatable = style.getBoolean(keyAttr, R.styleable.Keyboard_Key_isRepeatable, false); mFunctional = style.getBoolean(keyAttr, R.styleable.Keyboard_Key_isFunctional, false); diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java index f8e08b06a..5dabb93ec 100644 --- a/java/src/com/android/inputmethod/keyboard/Keyboard.java +++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java @@ -102,10 +102,10 @@ public class Keyboard { public final int mMostCommonKeyWidth; /** Popup keyboard template */ - public final int mPopupKeyboardResId; + public final int mPopupTemplateId; - /** Maximum column for popup keyboard */ - public final int mMaxPopupColumn; + /** Maximum column for mini keyboard */ + public final int mMaxMiniKeyboardColumn; /** True if Right-To-Left keyboard */ public final boolean mIsRtlKeyboard; @@ -130,8 +130,8 @@ public class Keyboard { mWidth = params.mWidth; mMostCommonKeyWidth = params.mMostCommonKeyWidth; mIsRtlKeyboard = params.mIsRtlKeyboard; - mPopupKeyboardResId = params.mPopupKeyboardResId; - mMaxPopupColumn = params.mMaxPopupColumn; + mPopupTemplateId = params.mPopupTemplateId; + mMaxMiniKeyboardColumn = params.mMaxMiniKeyboardColumn; mDefaultRowHeight = params.mDefaultRowHeight; mVerticalGap = params.mVerticalGap; diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java index 9e5e20953..4c5c2bc10 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java @@ -35,7 +35,6 @@ import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.ViewGroup.LayoutParams; import android.widget.RelativeLayout; import android.widget.TextView; @@ -78,7 +77,9 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy { // Miscellaneous constants private static final int[] LONG_PRESSABLE_STATE_SET = { android.R.attr.state_long_pressable }; - // XML attribute + // XML attributes + protected final float mVerticalCorrection; + protected final int mPopupLayout; private final float mBackgroundDimAmount; // HORIZONTAL ELLIPSIS "...", character for popup hint. @@ -340,6 +341,9 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy { if (mKeyPreviewLayoutId == 0) { mShowKeyPreviewPopup = false; } + mVerticalCorrection = a.getDimensionPixelOffset( + R.styleable.KeyboardView_verticalCorrection, 0); + mPopupLayout = a.getResourceId(R.styleable.KeyboardView_popupLayout, 0); mBackgroundDimAmount = a.getFloat(R.styleable.KeyboardView_backgroundDimAmount, 0.5f); a.recycle(); diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java index 85084847d..1e7ec9ead 100644 --- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java @@ -19,7 +19,6 @@ package com.android.inputmethod.keyboard; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; -import android.content.res.TypedArray; import android.graphics.Canvas; import android.os.Message; import android.os.SystemClock; @@ -64,10 +63,6 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke // Timing constants private final int mKeyRepeatInterval; - // XML attribute - private final float mVerticalCorrection; - private final int mPopupLayout; - // Mini keyboard private PopupWindow mPopupWindow; private PopupPanel mPopupPanel; @@ -219,13 +214,6 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke mTouchScreenRegulator = new SuddenJumpingTouchEventHandler(getContext(), this); - final TypedArray a = context.obtainStyledAttributes( - attrs, R.styleable.KeyboardView, defStyle, R.style.KeyboardView); - mVerticalCorrection = a.getDimensionPixelOffset( - R.styleable.KeyboardView_verticalCorrection, 0); - mPopupLayout = a.getResourceId(R.styleable.KeyboardView_popupLayout, 0); - a.recycle(); - final Resources res = getResources(); mConfigShowMiniKeyboardAtTouchedPoint = res.getBoolean( R.bool.config_show_mini_keyboard_at_touched_point); @@ -374,11 +362,11 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke if (container == null) throw new NullPointerException(); - final PopupMiniKeyboardView miniKeyboardView = - (PopupMiniKeyboardView)container.findViewById(R.id.mini_keyboard_view); + final MiniKeyboardView miniKeyboardView = + (MiniKeyboardView)container.findViewById(R.id.mini_keyboard_view); final Keyboard parentKeyboard = getKeyboard(); final Keyboard miniKeyboard = new MiniKeyboard.Builder( - this, parentKeyboard.mPopupKeyboardResId, parentKey, parentKeyboard).build(); + this, parentKeyboard.mPopupTemplateId, parentKey, parentKeyboard).build(); miniKeyboardView.setKeyboard(miniKeyboard); container.measure(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); @@ -454,7 +442,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke if (mPopupWindow == null) { mPopupWindow = new PopupWindow(getContext()); mPopupWindow.setBackgroundDrawable(null); - mPopupWindow.setAnimationStyle(R.style.PopupMiniKeyboardAnimation); + mPopupWindow.setAnimationStyle(R.style.MiniKeyboardAnimation); // Allow popup window to be drawn off the screen. mPopupWindow.setClippingEnabled(false); } diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java index e6045dc90..6119fa232 100644 --- a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java +++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java @@ -227,8 +227,8 @@ public class MiniKeyboard extends Keyboard { mPopupCharacters = parentKey.mPopupCharacters; final int keyWidth = getMaxKeyWidth(view, mPopupCharacters, mParams.mDefaultKeyWidth); - mParams.setParameters(mPopupCharacters.length, parentKey.mMaxPopupColumn, keyWidth, - parentKeyboard.mDefaultRowHeight, parentKey.mX + mParams.setParameters(mPopupCharacters.length, parentKey.mMaxMiniKeyboardColumn, + keyWidth, parentKeyboard.mDefaultRowHeight, parentKey.mX + (mParams.mDefaultKeyWidth - keyWidth) / 2, view.getMeasuredWidth()); } diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java new file mode 100644 index 000000000..065970f62 --- /dev/null +++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java @@ -0,0 +1,256 @@ +/* + * Copyright (C) 2011 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; + +import android.content.Context; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.Gravity; +import android.view.View; +import android.widget.PopupWindow; + +import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy; +import com.android.inputmethod.keyboard.PointerTracker.TimerProxy; +import com.android.inputmethod.latin.R; + +import java.util.List; + +/** + * A view that renders a virtual {@link MiniKeyboard}. It handles rendering of keys and detecting + * key presses and touch movements. + */ +public class MiniKeyboardView extends KeyboardView implements PopupPanel { + private final int[] mCoordinates = new int[2]; + + private final KeyDetector mKeyDetector; + private final int mVerticalCorrection; + + private Controller mController; + private KeyboardActionListener mListener; + private int mOriginX; + private int mOriginY; + + private static class MiniKeyboardKeyDetector extends KeyDetector { + private final int mSlideAllowanceSquare; + private final int mSlideAllowanceSquareTop; + + public MiniKeyboardKeyDetector(float slideAllowance) { + super(/* keyHysteresisDistance */0); + mSlideAllowanceSquare = (int)(slideAllowance * slideAllowance); + // Top slide allowance is slightly longer (sqrt(2) times) than other edges. + mSlideAllowanceSquareTop = mSlideAllowanceSquare * 2; + } + + @Override + public boolean alwaysAllowsSlidingInput() { + return true; + } + + @Override + protected int getMaxNearbyKeys() { + // No nearby key will be returned. + return 1; + } + + @Override + public int getKeyIndexAndNearbyCodes(int x, int y, final int[] allCodes) { + final List keys = getKeyboard().mKeys; + final int touchX = getTouchX(x); + final int touchY = getTouchY(y); + + int nearestIndex = NOT_A_KEY; + int nearestDist = (y < 0) ? mSlideAllowanceSquareTop : mSlideAllowanceSquare; + final int keyCount = keys.size(); + for (int index = 0; index < keyCount; index++) { + final int dist = keys.get(index).squaredDistanceToEdge(touchX, touchY); + if (dist < nearestDist) { + nearestIndex = index; + nearestDist = dist; + } + } + + if (allCodes != null && nearestIndex != NOT_A_KEY) + allCodes[0] = keys.get(nearestIndex).mCode; + return nearestIndex; + } + } + + private static final TimerProxy EMPTY_TIMER_PROXY = new TimerProxy() { + @Override + public void startKeyRepeatTimer(long delay, int keyIndex, PointerTracker tracker) {} + @Override + public void startLongPressTimer(long delay, int keyIndex, PointerTracker tracker) {} + @Override + public void cancelLongPressTimer() {} + @Override + public void cancelKeyTimers() {} + }; + + private final KeyboardActionListener mMiniKeyboardListener = + new KeyboardActionListener.Adapter() { + @Override + public void onCodeInput(int primaryCode, int[] keyCodes, int x, int y) { + mListener.onCodeInput(primaryCode, keyCodes, x, y); + } + + @Override + public void onTextInput(CharSequence text) { + mListener.onTextInput(text); + } + + @Override + public void onCancelInput() { + mListener.onCancelInput(); + } + + @Override + public void onPress(int primaryCode, boolean withSliding) { + mListener.onPress(primaryCode, withSliding); + } + @Override + public void onRelease(int primaryCode, boolean withSliding) { + mListener.onRelease(primaryCode, withSliding); + } + }; + + public MiniKeyboardView(Context context, AttributeSet attrs) { + this(context, attrs, R.attr.miniKeyboardViewStyle); + } + + public MiniKeyboardView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + + final TypedArray a = context.obtainStyledAttributes( + attrs, R.styleable.KeyboardView, defStyle, R.style.KeyboardView); + mVerticalCorrection = a.getDimensionPixelOffset( + R.styleable.KeyboardView_verticalCorrection, 0); + a.recycle(); + + final Resources res = context.getResources(); + // Override default ProximityKeyDetector. + mKeyDetector = new MiniKeyboardKeyDetector(res.getDimension( + R.dimen.mini_keyboard_slide_allowance)); + // Remove gesture detector on mini-keyboard + setKeyPreviewPopupEnabled(false, 0); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final Keyboard keyboard = getKeyboard(); + if (keyboard != null) { + final int width = keyboard.mOccupiedWidth + getPaddingLeft() + getPaddingRight(); + final int height = keyboard.mOccupiedHeight + getPaddingTop() + getPaddingBottom(); + setMeasuredDimension(width, height); + } else { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + } + + @Override + public void setKeyboard(Keyboard keyboard) { + super.setKeyboard(keyboard); + mKeyDetector.setKeyboard(keyboard, -getPaddingLeft(), + -getPaddingTop() + mVerticalCorrection); + } + + @Override + public KeyDetector getKeyDetector() { + return mKeyDetector; + } + + @Override + public KeyboardActionListener getKeyboardActionListener() { + return mMiniKeyboardListener; + } + + @Override + public DrawingProxy getDrawingProxy() { + return this; + } + + @Override + public TimerProxy getTimerProxy() { + return EMPTY_TIMER_PROXY; + } + + @Override + public void setKeyPreviewPopupEnabled(boolean previewEnabled, int delay) { + // Mini keyboard needs no pop-up key preview displayed, so we pass always false with a + // delay of 0. The delay does not matter actually since the popup is not shown anyway. + super.setKeyPreviewPopupEnabled(false, 0); + } + + @Override + public void setShifted(boolean shifted) { + final Keyboard keyboard = getKeyboard(); + if (keyboard.setShifted(shifted)) { + invalidateAllKeys(); + } + } + + @Override + public void showPopupPanel(View parentView, Controller controller, int pointX, int pointY, + PopupWindow window, KeyboardActionListener listener) { + mController = controller; + mListener = listener; + final View container = (View)getParent(); + final MiniKeyboard miniKeyboard = (MiniKeyboard)getKeyboard(); + + parentView.getLocationInWindow(mCoordinates); + final int miniKeyboardLeft = pointX - miniKeyboard.getDefaultCoordX() + + parentView.getPaddingLeft(); + final int x = wrapUp(Math.max(0, Math.min(miniKeyboardLeft, + parentView.getWidth() - miniKeyboard.mOccupiedWidth)) + - container.getPaddingLeft() + mCoordinates[0], + container.getMeasuredWidth(), 0, parentView.getWidth()); + final int y = pointY + - (container.getMeasuredHeight() - container.getPaddingBottom()) + + parentView.getPaddingTop() + mCoordinates[1]; + + window.setContentView(container); + window.setWidth(container.getMeasuredWidth()); + window.setHeight(container.getMeasuredHeight()); + window.showAtLocation(parentView, Gravity.NO_GRAVITY, x, y); + + mOriginX = x + container.getPaddingLeft() - mCoordinates[0]; + mOriginY = y + container.getPaddingTop() - mCoordinates[1]; + } + + private static int wrapUp(int x, int width, int left, int right) { + if (x < left) + return left; + if (x + width > right) + return right - width; + return x; + } + + @Override + public boolean dismissPopupPanel() { + return mController.dismissPopupPanel(); + } + + @Override + public int translateX(int x) { + return x - mOriginX; + } + + @Override + public int translateY(int y) { + return y - mOriginY; + } +} diff --git a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java deleted file mode 100644 index 7ace46cac..000000000 --- a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright (C) 2011 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; - -import android.content.Context; -import android.content.res.Resources; -import android.content.res.TypedArray; -import android.util.AttributeSet; -import android.view.Gravity; -import android.view.View; -import android.widget.PopupWindow; - -import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy; -import com.android.inputmethod.keyboard.PointerTracker.TimerProxy; -import com.android.inputmethod.latin.R; - -import java.util.List; - -/** - * A view that renders a virtual {@link MiniKeyboard}. It handles rendering of keys and detecting - * key presses and touch movements. - */ -public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { - private final int[] mCoordinates = new int[2]; - - private final KeyDetector mKeyDetector; - private final int mVerticalCorrection; - - private Controller mController; - private KeyboardActionListener mListener; - private int mOriginX; - private int mOriginY; - - private static class MiniKeyboardKeyDetector extends KeyDetector { - private final int mSlideAllowanceSquare; - private final int mSlideAllowanceSquareTop; - - public MiniKeyboardKeyDetector(float slideAllowance) { - super(/* keyHysteresisDistance */0); - mSlideAllowanceSquare = (int)(slideAllowance * slideAllowance); - // Top slide allowance is slightly longer (sqrt(2) times) than other edges. - mSlideAllowanceSquareTop = mSlideAllowanceSquare * 2; - } - - @Override - public boolean alwaysAllowsSlidingInput() { - return true; - } - - @Override - protected int getMaxNearbyKeys() { - // No nearby key will be returned. - return 1; - } - - @Override - public int getKeyIndexAndNearbyCodes(int x, int y, final int[] allCodes) { - final List keys = getKeyboard().mKeys; - final int touchX = getTouchX(x); - final int touchY = getTouchY(y); - - int nearestIndex = NOT_A_KEY; - int nearestDist = (y < 0) ? mSlideAllowanceSquareTop : mSlideAllowanceSquare; - final int keyCount = keys.size(); - for (int index = 0; index < keyCount; index++) { - final int dist = keys.get(index).squaredDistanceToEdge(touchX, touchY); - if (dist < nearestDist) { - nearestIndex = index; - nearestDist = dist; - } - } - - if (allCodes != null && nearestIndex != NOT_A_KEY) - allCodes[0] = keys.get(nearestIndex).mCode; - return nearestIndex; - } - } - - private static final TimerProxy EMPTY_TIMER_PROXY = new TimerProxy() { - @Override - public void startKeyRepeatTimer(long delay, int keyIndex, PointerTracker tracker) {} - @Override - public void startLongPressTimer(long delay, int keyIndex, PointerTracker tracker) {} - @Override - public void cancelLongPressTimer() {} - @Override - public void cancelKeyTimers() {} - }; - - private final KeyboardActionListener mMiniKeyboardListener = - new KeyboardActionListener.Adapter() { - @Override - public void onCodeInput(int primaryCode, int[] keyCodes, int x, int y) { - mListener.onCodeInput(primaryCode, keyCodes, x, y); - } - - @Override - public void onTextInput(CharSequence text) { - mListener.onTextInput(text); - } - - @Override - public void onCancelInput() { - mListener.onCancelInput(); - } - - @Override - public void onPress(int primaryCode, boolean withSliding) { - mListener.onPress(primaryCode, withSliding); - } - @Override - public void onRelease(int primaryCode, boolean withSliding) { - mListener.onRelease(primaryCode, withSliding); - } - }; - - public PopupMiniKeyboardView(Context context, AttributeSet attrs) { - this(context, attrs, R.attr.popupMiniKeyboardViewStyle); - } - - public PopupMiniKeyboardView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - - final TypedArray a = context.obtainStyledAttributes( - attrs, R.styleable.KeyboardView, defStyle, R.style.KeyboardView); - mVerticalCorrection = a.getDimensionPixelOffset( - R.styleable.KeyboardView_verticalCorrection, 0); - a.recycle(); - - final Resources res = context.getResources(); - // Override default ProximityKeyDetector. - mKeyDetector = new MiniKeyboardKeyDetector(res.getDimension( - R.dimen.mini_keyboard_slide_allowance)); - // Remove gesture detector on mini-keyboard - setKeyPreviewPopupEnabled(false, 0); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - final Keyboard keyboard = getKeyboard(); - if (keyboard != null) { - final int width = keyboard.mOccupiedWidth + getPaddingLeft() + getPaddingRight(); - final int height = keyboard.mOccupiedHeight + getPaddingTop() + getPaddingBottom(); - setMeasuredDimension(width, height); - } else { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - } - } - - @Override - public void setKeyboard(Keyboard keyboard) { - super.setKeyboard(keyboard); - mKeyDetector.setKeyboard(keyboard, -getPaddingLeft(), - -getPaddingTop() + mVerticalCorrection); - } - - @Override - public KeyDetector getKeyDetector() { - return mKeyDetector; - } - - @Override - public KeyboardActionListener getKeyboardActionListener() { - return mMiniKeyboardListener; - } - - @Override - public DrawingProxy getDrawingProxy() { - return this; - } - - @Override - public TimerProxy getTimerProxy() { - return EMPTY_TIMER_PROXY; - } - - @Override - public void setKeyPreviewPopupEnabled(boolean previewEnabled, int delay) { - // Mini keyboard needs no pop-up key preview displayed, so we pass always false with a - // delay of 0. The delay does not matter actually since the popup is not shown anyway. - super.setKeyPreviewPopupEnabled(false, 0); - } - - @Override - public void setShifted(boolean shifted) { - final Keyboard keyboard = getKeyboard(); - if (keyboard.setShifted(shifted)) { - invalidateAllKeys(); - } - } - - @Override - public void showPopupPanel(View parentView, Controller controller, int pointX, int pointY, - PopupWindow window, KeyboardActionListener listener) { - mController = controller; - mListener = listener; - final View container = (View)getParent(); - final MiniKeyboard miniKeyboard = (MiniKeyboard)getKeyboard(); - - parentView.getLocationInWindow(mCoordinates); - final int miniKeyboardLeft = pointX - miniKeyboard.getDefaultCoordX() - + parentView.getPaddingLeft(); - final int x = wrapUp(Math.max(0, Math.min(miniKeyboardLeft, - parentView.getWidth() - miniKeyboard.mOccupiedWidth)) - - container.getPaddingLeft() + mCoordinates[0], - container.getMeasuredWidth(), 0, parentView.getWidth()); - final int y = pointY - - (container.getMeasuredHeight() - container.getPaddingBottom()) - + parentView.getPaddingTop() + mCoordinates[1]; - - window.setContentView(container); - window.setWidth(container.getMeasuredWidth()); - window.setHeight(container.getMeasuredHeight()); - window.showAtLocation(parentView, Gravity.NO_GRAVITY, x, y); - - mOriginX = x + container.getPaddingLeft() - mCoordinates[0]; - mOriginY = y + container.getPaddingTop() - mCoordinates[1]; - } - - private static int wrapUp(int x, int width, int left, int right) { - if (x < left) - return left; - if (x + width > right) - return right - width; - return x; - } - - @Override - public boolean dismissPopupPanel() { - return mController.dismissPopupPanel(); - } - - @Override - public int translateX(int x) { - return x - mOriginX; - } - - @Override - public int translateY(int y) { - return y - mOriginY; - } -} diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java index c0dba4173..66dde0512 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java @@ -171,7 +171,7 @@ public class KeyStyles { readInt(keyAttr, R.styleable.Keyboard_Key_keyIcon); readInt(keyAttr, R.styleable.Keyboard_Key_keyIconPreview); readInt(keyAttr, R.styleable.Keyboard_Key_keyIconShifted); - readInt(keyAttr, R.styleable.Keyboard_Key_maxPopupKeyboardColumn); + readInt(keyAttr, R.styleable.Keyboard_Key_maxMiniKeyboardColumn); readBoolean(keyAttr, R.styleable.Keyboard_Key_isFunctional); readBoolean(keyAttr, R.styleable.Keyboard_Key_isSticky); readBoolean(keyAttr, R.styleable.Keyboard_Key_isRepeatable); diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java index f599def36..5c76facec 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java @@ -255,10 +255,10 @@ public class KeyboardBuilder { mParams.mIsRtlKeyboard = keyboardAttr.getBoolean( R.styleable.Keyboard_isRtlKeyboard, false); - mParams.mPopupKeyboardResId = keyboardAttr.getResourceId( - R.styleable.Keyboard_popupKeyboardTemplate, 0); - mParams.mMaxPopupColumn = keyAttr.getInt( - R.styleable.Keyboard_Key_maxPopupKeyboardColumn, 5); + mParams.mPopupTemplateId = keyboardAttr.getResourceId( + R.styleable.Keyboard_popupTemplate, 0); + mParams.mMaxMiniKeyboardColumn = keyAttr.getInt( + R.styleable.Keyboard_Key_maxMiniKeyboardColumn, 5); mParams.mIconsSet.loadIcons(keyboardAttr); } finally { diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParams.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParams.java index 980115200..e748dbb94 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParams.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParams.java @@ -49,8 +49,8 @@ public class KeyboardParams { public int mVerticalGap; public boolean mIsRtlKeyboard; - public int mPopupKeyboardResId; - public int mMaxPopupColumn; + public int mPopupTemplateId; + public int mMaxMiniKeyboardColumn; public int GRID_WIDTH; public int GRID_HEIGHT; -- cgit v1.2.3-83-g751a