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

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

Merge "Add allowRedundantMoreKeys attribute"

parents 2828d9ed 0be4e6e5
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -518,6 +518,8 @@
        <attr name="enableProximityCharsCorrection" format="boolean" />
        <!-- Indicates if the keyboard layout supports being split or not. false by default -->
        <attr name="supportsSplitLayout" format="boolean" />
        <!-- Allow redundant more keys when they are in the base layout. true by default. -->
        <attr name="allowRedundantMoreKeys" format="boolean" />
    </declare-styleable>

    <declare-styleable name="KeyboardLayoutSet_Feature">
+2 −1
Original line number Diff line number Diff line
@@ -23,7 +23,8 @@
    <Element
        latin:elementName="alphabet"
        latin:elementKeyboard="@xml/kbd_nordic"
        latin:enableProximityCharsCorrection="true" />
        latin:enableProximityCharsCorrection="true"
        latin:allowRedundantMoreKeys="true" />
    <Element
        latin:elementName="symbols"
        latin:elementKeyboard="@xml/kbd_symbols" />
+2 −1
Original line number Diff line number Diff line
@@ -23,7 +23,8 @@
    <Element
        latin:elementName="alphabet"
        latin:elementKeyboard="@xml/kbd_swiss"
        latin:enableProximityCharsCorrection="true" />
        latin:enableProximityCharsCorrection="true"
        latin:allowRedundantMoreKeys="true" />
    <Element
        latin:elementName="symbols"
        latin:elementKeyboard="@xml/kbd_symbols" />
+47 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2014 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.compat;

import java.lang.reflect.Method;

public final class CharacterCompat {
    // Note that Character.isAlphabetic(int), has been introduced in API level 19
    // (Build.VERSION_CODE.KITKAT).
    private static final Method METHOD_isAlphabetic = CompatUtils.getMethod(
            Character.class, "isAlphabetic", int.class);

    private CharacterCompat() {
        // This utility class is not publicly instantiable.
    }

    public static boolean isAlphabetic(final int code) {
        if (METHOD_isAlphabetic != null) {
            return (Boolean)CompatUtils.invoke(null, false, METHOD_isAlphabetic, code);
        }
        switch (Character.getType(code)) {
        case Character.UPPERCASE_LETTER:
        case Character.LOWERCASE_LETTER:
        case Character.TITLECASE_LETTER:
        case Character.MODIFIER_LETTER:
        case Character.OTHER_LETTER:
        case Character.LETTER_NUMBER:
            return true;
        default:
            return false;
        }
    }
}
+13 −1
Original line number Diff line number Diff line
@@ -395,6 +395,10 @@ public class Key implements Comparable<Key> {
     * @param key the original key.
     */
    protected Key(final Key key) {
        this(key, key.mMoreKeys);
    }

    private Key(final Key key, final MoreKeySpec[] moreKeys) {
        // Final attributes.
        mCode = key.mCode;
        mLabel = key.mLabel;
@@ -408,7 +412,7 @@ public class Key implements Comparable<Key> {
        mX = key.mX;
        mY = key.mY;
        mHitBox.set(key.mHitBox);
        mMoreKeys = key.mMoreKeys;
        mMoreKeys = moreKeys;
        mMoreKeysColumnAndFlags = key.mMoreKeysColumnAndFlags;
        mBackgroundType = key.mBackgroundType;
        mActionFlags = key.mActionFlags;
@@ -420,6 +424,14 @@ public class Key implements Comparable<Key> {
        mEnabled = key.mEnabled;
    }

    public static Key removeRedundantMoreKeys(final Key key,
            final MoreKeySpec.LettersOnBaseLayout lettersOnBaseLayout) {
        final MoreKeySpec[] moreKeys = key.getMoreKeys();
        final MoreKeySpec[] filteredMoreKeys = MoreKeySpec.removeRedundantMoreKeys(
                moreKeys, lettersOnBaseLayout);
        return (filteredMoreKeys == moreKeys) ? key : new Key(key, filteredMoreKeys);
    }

    private static boolean needsToUpperCase(final int labelFlags, final int keyboardElementId) {
        if ((labelFlags & LABEL_FLAGS_PRESERVE_CASE) != 0) return false;
        switch (keyboardElementId) {
Loading