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

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

Merge "Support keyXPos/keyWidth override in <include>"

parents 566cded5 a1e370ee
Loading
Loading
Loading
Loading
+38 −5
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
@@ -571,7 +572,7 @@ public class Keyboard {

            private final Params mParams;
            /** Default width of a key in this row. */
            public final float mDefaultKeyWidth;
            private float mDefaultKeyWidth;
            /** Default height of a key in this row. */
            public final int mRowHeight;

@@ -598,6 +599,14 @@ public class Keyboard {
                mCurrentX = 0.0f;
            }

            public float getDefaultKeyWidth() {
                return mDefaultKeyWidth;
            }

            public void setDefaultKeyWidth(float defaultKeyWidth) {
                mDefaultKeyWidth = defaultKeyWidth;
            }

            public void setXPos(float keyXPos) {
                mCurrentX = keyXPos;
            }
@@ -638,6 +647,10 @@ public class Keyboard {
                return mCurrentX;
            }

            public float getKeyWidth(TypedArray keyAttr) {
                return getKeyWidth(keyAttr, mCurrentX);
            }

            public float getKeyWidth(TypedArray keyAttr, float keyXPos) {
                final int widthType = Builder.getEnumValue(keyAttr,
                        R.styleable.Keyboard_Key_keyWidth, KEYWIDTH_NOT_ENUM);
@@ -937,17 +950,33 @@ public class Keyboard {
            if (skip) {
                XmlParseUtils.checkEndTag(TAG_INCLUDE, parser);
            } else {
                final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser),
                final AttributeSet attr = Xml.asAttributeSet(parser);
                final TypedArray keyboardAttr = mResources.obtainAttributes(attr,
                        R.styleable.Keyboard_Include);
                final TypedArray keyAttr = mResources.obtainAttributes(attr,
                        R.styleable.Keyboard_Key);
                int keyboardLayout = 0;
                float savedDefaultKeyWidth = 0;
                try {
                    XmlParseUtils.checkAttributeExists(a,
                    XmlParseUtils.checkAttributeExists(keyboardAttr,
                            R.styleable.Keyboard_Include_keyboardLayout, "keyboardLayout",
                            TAG_INCLUDE, parser);
                    keyboardLayout = a.getResourceId(
                    keyboardLayout = keyboardAttr.getResourceId(
                            R.styleable.Keyboard_Include_keyboardLayout, 0);
                    if (row != null) {
                        savedDefaultKeyWidth = row.getDefaultKeyWidth();
                        if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyXPos)) {
                            // Override current x coordinate.
                            row.setXPos(row.getKeyX(keyAttr));
                        }
                        if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyWidth)) {
                            // Override default key width.
                            row.setDefaultKeyWidth(row.getKeyWidth(keyAttr));
                        }
                    }
                } finally {
                    a.recycle();
                    keyboardAttr.recycle();
                    keyAttr.recycle();
                }

                XmlParseUtils.checkEndTag(TAG_INCLUDE, parser);
@@ -957,6 +986,10 @@ public class Keyboard {
                try {
                    parseMerge(parserForInclude, row, skip);
                } finally {
                    if (row != null) {
                        // Restore default key width.
                        row.setDefaultKeyWidth(savedDefaultKeyWidth);
                    }
                    parserForInclude.close();
                }
            }