am 6213983f: Refactor MoreKeysKeyboard.Builder

* commit '6213983fa147d010ce30314f43b0a1800d2528ba':
  Refactor MoreKeysKeyboard.Builder
main
Tadashi G. Takaoka 2012-02-10 01:56:35 -08:00 committed by Android Git Automerger
commit b6ab6a0bfd
2 changed files with 1301 additions and 1102 deletions

View File

@ -24,7 +24,7 @@ import com.android.inputmethod.latin.R;
public class MoreKeysKeyboard extends Keyboard { public class MoreKeysKeyboard extends Keyboard {
private final int mDefaultKeyCoordX; private final int mDefaultKeyCoordX;
private MoreKeysKeyboard(Builder.MoreKeysKeyboardParams params) { MoreKeysKeyboard(Builder.MoreKeysKeyboardParams params) {
super(params); super(params);
mDefaultKeyCoordX = params.getDefaultKeyCoordX() + params.mDefaultKeyWidth / 2; mDefaultKeyCoordX = params.getDefaultKeyCoordX() + params.mDefaultKeyWidth / 2;
} }
@ -81,29 +81,29 @@ public class MoreKeysKeyboard extends Keyboard {
final int numLeftKeys = (numColumns - 1) / 2; final int numLeftKeys = (numColumns - 1) / 2;
final int numRightKeys = numColumns - numLeftKeys; // including default key. final int numRightKeys = numColumns - numLeftKeys; // including default key.
// Maximum number of keys we can layout both side of the parent key
final int maxLeftKeys = coordXInParent / keyWidth; final int maxLeftKeys = coordXInParent / keyWidth;
final int maxRightKeys = Math.max(1, (parentKeyboardWidth - coordXInParent) final int maxRightKeys = (parentKeyboardWidth - coordXInParent) / keyWidth;
/ keyWidth);
int leftKeys, rightKeys; int leftKeys, rightKeys;
if (numLeftKeys > maxLeftKeys) { if (numLeftKeys > maxLeftKeys) {
leftKeys = maxLeftKeys; leftKeys = maxLeftKeys;
rightKeys = numColumns - maxLeftKeys; rightKeys = numColumns - leftKeys;
} else if (numRightKeys > maxRightKeys) { } else if (numRightKeys > maxRightKeys + 1) {
leftKeys = numColumns - maxRightKeys; rightKeys = maxRightKeys + 1; // include default key
rightKeys = maxRightKeys; leftKeys = numColumns - rightKeys;
} else { } else {
leftKeys = numLeftKeys; leftKeys = numLeftKeys;
rightKeys = numRightKeys; rightKeys = numRightKeys;
} }
// Shift right if the left edge of more keys keyboard is on the edge of parent // If the left keys fill the left side of the parent key, entire more keys keyboard
// keyboard unless the parent key is on the left edge. // should be shifted to the right unless the parent key is on the left edge.
if (leftKeys * keyWidth >= coordXInParent && leftKeys > 0) { if (maxLeftKeys == leftKeys && leftKeys > 0) {
leftKeys--; leftKeys--;
rightKeys++; rightKeys++;
} }
// Shift left if the right edge of more keys keyboard is on the edge of parent // If the right keys fill the right side of the parent key, entire more keys
// keyboard unless the parent key is on the right edge. // should be shifted to the left unless the parent key is on the right edge.
if (rightKeys * keyWidth + coordXInParent >= parentKeyboardWidth && rightKeys > 1) { if (maxRightKeys == rightKeys - 1 && rightKeys > 1) {
leftKeys++; leftKeys++;
rightKeys--; rightKeys--;
} }
@ -111,8 +111,7 @@ public class MoreKeysKeyboard extends Keyboard {
mRightKeys = rightKeys; mRightKeys = rightKeys;
// Centering of the top row. // Centering of the top row.
final boolean onEdge = (leftKeys == 0 || rightKeys == 1); if (numRows < 2 || getTopRowEmptySlots(numKeys, numColumns) % 2 == 0) {
if (numRows < 2 || onEdge || getTopRowEmptySlots(numKeys, numColumns) % 2 == 0) {
mTopRowAdjustment = 0; mTopRowAdjustment = 0;
} else if (mLeftKeys < mRightKeys - 1) { } else if (mLeftKeys < mRightKeys - 1) {
mTopRowAdjustment = 1; mTopRowAdjustment = 1;
@ -227,7 +226,7 @@ public class MoreKeysKeyboard extends Keyboard {
height = parentKeyboard.mMostCommonKeyHeight; height = parentKeyboard.mMostCommonKeyHeight;
} }
mParams.setParameters(mMoreKeys.length, parentKey.mMaxMoreKeysColumn, width, height, mParams.setParameters(mMoreKeys.length, parentKey.mMaxMoreKeysColumn, width, height,
parentKey.mX + (mParams.mDefaultKeyWidth - width) / 2, view.getMeasuredWidth()); parentKey.mX + parentKey.mWidth / 2, view.getMeasuredWidth());
} }
private static int getMaxKeyWidth(KeyboardView view, String[] moreKeys, int minKeyWidth) { private static int getMaxKeyWidth(KeyboardView view, String[] moreKeys, int minKeyWidth) {