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

Commit c9bc5c8d authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "Move language-specific keyboard setting to resources."

parents 9674f654 c899038e
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 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.
*/
-->

<resources>
    <bool name="config_require_umlaut_processing">true</bool>
</resources>
+1 −0
Original line number Diff line number Diff line
@@ -78,4 +78,5 @@
    </string-array>
    <!--  Screen metrics for logging. 0 = "mdpi", 1 = "hdpi", 2 = "xlarge" -->
    <integer name="log_screen_metrics">0</integer>
    <bool name="config_require_umlaut_processing">false</bool>
</resources>
+0 −1
Original line number Diff line number Diff line
@@ -72,7 +72,6 @@
            android:label="@string/subtype_mode_de_keyboard"
            android:imeSubtypeLocale="de"
            android:imeSubtypeMode="keyboard"
            android:imeSubtypeExtraValue="requiresGermanUmlautProcessing"
    />
<!--     <subtype android:icon="@drawable/ic_subtype_mic" -->
<!--             android:label="@string/subtype_mode_de_voice" -->
+10 −24
Original line number Diff line number Diff line
@@ -63,18 +63,12 @@ public class BinaryDictionary extends Dictionary {

    private final KeyboardSwitcher mKeyboardSwitcher = KeyboardSwitcher.getInstance();

    public static class Flag {
        public final String mName;
        public final int mValue;

        public Flag(String name, int value) {
            mName = name;
            mValue = value;
        }
    }

    public static final Flag FLAG_REQUIRES_GERMAN_UMLAUT_PROCESSING =
            new Flag("requiresGermanUmlautProcessing", 0x1);
            new Flag(R.bool.config_require_umlaut_processing, 0x1);

    // Can create a new flag from extravalue :
    // public static final Flag FLAG_MYFLAG =
    //         new Flag("my_flag", 0x02);

    private static final Flag[] ALL_FLAGS = {
        // Here should reside all flags that trigger some special processing
@@ -118,12 +112,12 @@ public class BinaryDictionary extends Dictionary {
                return null;
            }
        }
        sInstance.mFlags = initFlags(ALL_FLAGS, SubtypeSwitcher.getInstance());
        sInstance.mFlags = Flag.initFlags(ALL_FLAGS, context, SubtypeSwitcher.getInstance());
        return sInstance;
    }

    /* package for test */ static BinaryDictionary initDictionary(File dictionary, long startOffset,
            long length, int dicTypeId, Flag[] flagArray) {
    /* package for test */ static BinaryDictionary initDictionary(Context context, File dictionary,
            long startOffset, long length, int dicTypeId, Flag[] flagArray) {
        synchronized (sInstance) {
            sInstance.closeInternal();
            if (dictionary.isFile()) {
@@ -134,19 +128,10 @@ public class BinaryDictionary extends Dictionary {
                return null;
            }
        }
        sInstance.mFlags = initFlags(flagArray, null);
        sInstance.mFlags = Flag.initFlags(flagArray, context, null);
        return sInstance;
    }

    private static int initFlags(Flag[] flagArray, SubtypeSwitcher switcher) {
        int flags = 0;
        for (Flag entry : flagArray) {
            if (switcher == null || switcher.currentSubtypeContainsExtraValueKey(entry.mName))
                flags |= entry.mValue;
        }
        return flags;
    }

    static {
        Utils.loadNativeLibrary();
    }
@@ -179,6 +164,7 @@ public class BinaryDictionary extends Dictionary {
                sInstance.mDicTypeId = dicTypeId;
            }
        }
        sInstance.mFlags = Flag.initFlags(ALL_FLAGS, context, SubtypeSwitcher.getInstance());
        return sInstance;
    }

+64 −0
Original line number Diff line number Diff line
/*
 * 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.latin;

import android.content.Context;
import android.content.res.Resources;

public class Flag {
    public final String mName;
    public final int mResource;
    public final int mMask;
    public final int mSource;

    static private final int SOURCE_CONFIG = 1;
    static private final int SOURCE_EXTRAVALUE = 2;

    public Flag(int resourceId, int mask) {
        mName = null;
        mResource = resourceId;
        mSource = SOURCE_CONFIG;
        mMask = mask;
    }

    public Flag(String name, int mask) {
        mName = name;
        mResource = 0;
        mSource = SOURCE_EXTRAVALUE;
        mMask = mask;
    }

    // If context/switcher are null, set all related flags in flagArray to on.
    public static int initFlags(Flag[] flagArray, Context context, SubtypeSwitcher switcher) {
        int flags = 0;
        final Resources res = null == context ? null : context.getResources();
        for (Flag entry : flagArray) {
            switch (entry.mSource) {
                case Flag.SOURCE_CONFIG:
                    if (res == null || res.getBoolean(entry.mResource))
                        flags |= entry.mMask;
                    break;
                case Flag.SOURCE_EXTRAVALUE:
                    if (switcher == null ||
                            switcher.currentSubtypeContainsExtraValueKey(entry.mName))
                        flags |= entry.mMask;
                    break;
            }
        }
        return flags;
    }
}
Loading