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

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

Merge "Move current x coordinate value into Row class"

parents 9a33611b e84274ed
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -243,14 +243,13 @@ public class Key {
     * parser.
     * @param res resources associated with the caller's context
     * @param params the keyboard building parameters.
     * @param row the row that this key belongs to.
     * @param x the x coordinate of the top-left
     * @param y the y coordinate of the top-left
     * @param row the row that this key belongs to. row's x-coordinate will be the right edge of
     *        this key.
     * @param parser the XML parser containing the attributes for this key
     * @param keyStyles active key styles set
     */
    public Key(Resources res, KeyboardParams params, Row row, int x, int y,
            XmlResourceParser parser, KeyStyles keyStyles) {
    public Key(Resources res, KeyboardParams params, Row row, XmlResourceParser parser,
            KeyStyles keyStyles) {

        final TypedArray keyboardAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
                R.styleable.Keyboard);
@@ -284,6 +283,7 @@ public class Key {
            }

            final int keyboardWidth = params.mOccupiedWidth;
            final int x = row.mCurrentX;
            int keyXPos = KeyboardBuilder.getDimensionOrFraction(keyAttr,
                    R.styleable.Keyboard_Key_keyXPos, keyboardWidth, x);
            if (keyXPos < 0) {
@@ -309,9 +309,12 @@ public class Key {

            // Horizontal gap is divided equally to both sides of the key.
            mX = keyXPos + mHorizontalGap / 2;
            mY = y;
            mY = row.mCurrentY;
            mWidth = keyWidth - mHorizontalGap;

            // Update row to have x-coordinate of the right edge of this key.
            row.mCurrentX = keyXPos + keyWidth;

            final CharSequence[] moreKeys = style.getTextArray(
                    keyAttr, R.styleable.Keyboard_Key_moreKeys);
            // In Arabic symbol layouts, we'd like to keep digits in more keys regardless of
+11 −13
Original line number Diff line number Diff line
@@ -128,7 +128,6 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
    protected final Resources mResources;
    private final DisplayMetrics mDisplayMetrics;

    private int mCurrentX = 0;
    private int mCurrentY = 0;
    private Row mCurrentRow = null;
    private boolean mLeftEdge;
@@ -314,7 +313,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
                throw new IllegalAttribute(parser, "horizontalGap");
            if (a.hasValue(R.styleable.Keyboard_verticalGap))
                throw new IllegalAttribute(parser, "verticalGap");
            return new Row(mResources, mParams, parser);
            return new Row(mResources, mParams, parser, mCurrentY);
        } finally {
            a.recycle();
        }
@@ -344,7 +343,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
                if (TAG_ROW.equals(tag)) {
                    if (DEBUG) Log.d(TAG, String.format("</%s>", TAG_ROW));
                    if (!skip)
                        endRow();
                        endRow(row);
                    break;
                } else if (TAG_CASE.equals(tag) || TAG_DEFAULT.equals(tag)
                        || TAG_MERGE.equals(tag)) {
@@ -364,7 +363,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
        if (skip) {
            checkEndTag(TAG_KEY, parser);
        } else {
            Key key = new Key(mResources, mParams, row, mCurrentX, mCurrentY, parser, mKeyStyles);
            Key key = new Key(mResources, mParams, row, parser, mKeyStyles);
            if (DEBUG) Log.d(TAG, String.format("<%s%s keyLabel=%s code=%d moreKeys=%s />",
                    TAG_KEY, (key.isEnabled() ? "" : " disabled"), key.mLabel, key.mCode,
                    Arrays.toString(key.mMoreKeys)));
@@ -392,14 +391,14 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
            final TypedArray keyAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
                    R.styleable.Keyboard_Key);
            int keyXPos = KeyboardBuilder.getDimensionOrFraction(keyAttr,
                    R.styleable.Keyboard_Key_keyXPos, keyboardWidth, mCurrentX);
                    R.styleable.Keyboard_Key_keyXPos, keyboardWidth, row.mCurrentX);
            if (keyXPos < 0) {
                // If keyXPos is negative, the actual x-coordinate will be display_width + keyXPos.
                keyXPos += keyboardWidth;
            }

            checkEndTag(TAG_SPACER, parser);
            setSpacer(keyXPos, keyWidth);
            setSpacer(keyXPos, keyWidth, row);
        }
    }

@@ -655,28 +654,27 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
    }

    private void startRow(Row row) {
        mCurrentX = 0;
        setSpacer(mCurrentX, mParams.mHorizontalEdgesPadding);
        row.mCurrentX = 0;
        setSpacer(row.mCurrentX, mParams.mHorizontalEdgesPadding, row);
        mCurrentRow = row;
        mLeftEdge = true;
        mRightEdgeKey = null;
    }

    private void endRow() {
    private void endRow(Row row) {
        if (mCurrentRow == null)
            throw new InflateException("orphant end row tag");
        if (mRightEdgeKey != null) {
            mRightEdgeKey.addEdgeFlags(Keyboard.EDGE_RIGHT);
            mRightEdgeKey = null;
        }
        setSpacer(mCurrentX, mParams.mHorizontalEdgesPadding);
        setSpacer(row.mCurrentX, mParams.mHorizontalEdgesPadding, row);
        mCurrentY += mCurrentRow.mRowHeight;
        mCurrentRow = null;
        mTopEdge = false;
    }

    private void endKey(Key key) {
        mCurrentX = key.mX - key.mHorizontalGap / 2 + key.mWidth + key.mHorizontalGap;
        if (mLeftEdge) {
            key.addEdgeFlags(Keyboard.EDGE_LEFT);
            mLeftEdge = false;
@@ -690,8 +688,8 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
    private void endKeyboard() {
    }

    private void setSpacer(int keyXPos, int width) {
        mCurrentX = keyXPos + width;
    private void setSpacer(int keyXPos, int width, Row row) {
        row.mCurrentX = keyXPos + width;
        mLeftEdge = false;
        mRightEdgeKey = null;
    }
+8 −1
Original line number Diff line number Diff line
@@ -35,7 +35,11 @@ public class Row {
    /** Default height of a key in this row. */
    public final int mRowHeight;

    public Row(Resources res, KeyboardParams params, XmlResourceParser parser) {
    public final int mCurrentY;
    // Will be updated by {@link Key}'s constructor.
    public int mCurrentX;

    public Row(Resources res, KeyboardParams params, XmlResourceParser parser, int y) {
        final int keyboardWidth = params.mWidth;
        final int keyboardHeight = params.mHeight;
        TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser),
@@ -45,5 +49,8 @@ public class Row {
        mRowHeight = KeyboardBuilder.getDimensionOrFraction(a,
                R.styleable.Keyboard_rowHeight, keyboardHeight, params.mDefaultRowHeight);
        a.recycle();

        mCurrentY = y;
        mCurrentX = 0;
    }
}