19f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown/* 29f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * Copyright (C) 2012 The Android Open Source Project 39f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * 49f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 59f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * you may not use this file except in compliance with the License. 69f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * You may obtain a copy of the License at 79f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * 89f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * http://www.apache.org/licenses/LICENSE-2.0 99f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * 109f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * Unless required by applicable law or agreed to in writing, software 119f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 129f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * See the License for the specific language governing permissions and 149f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * limitations under the License. 159f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown */ 169f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 179f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brownpackage android.hardware.input; 189f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 199f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brownimport android.os.Parcel; 209f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brownimport android.os.Parcelable; 219f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 229f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown/** 239f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * Describes a keyboard layout. 249f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * 259f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * @hide 269f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown */ 279f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brownpublic final class KeyboardLayout implements Parcelable, 289f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown Comparable<KeyboardLayout> { 299f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown private final String mDescriptor; 309f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown private final String mLabel; 31d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown private final String mCollection; 328ebac231966e27364e5d463b63540a0527d40c4bMichael Wright private final int mPriority; 339f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 349f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public static final Parcelable.Creator<KeyboardLayout> CREATOR = 359f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown new Parcelable.Creator<KeyboardLayout>() { 369f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public KeyboardLayout createFromParcel(Parcel source) { 379f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown return new KeyboardLayout(source); 389f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 399f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public KeyboardLayout[] newArray(int size) { 409f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown return new KeyboardLayout[size]; 419f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 429f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown }; 439f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 448ebac231966e27364e5d463b63540a0527d40c4bMichael Wright public KeyboardLayout(String descriptor, String label, String collection, int priority) { 459f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown mDescriptor = descriptor; 469f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown mLabel = label; 47d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown mCollection = collection; 488ebac231966e27364e5d463b63540a0527d40c4bMichael Wright mPriority = priority; 499f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 509f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 519f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown private KeyboardLayout(Parcel source) { 529f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown mDescriptor = source.readString(); 539f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown mLabel = source.readString(); 54d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown mCollection = source.readString(); 558ebac231966e27364e5d463b63540a0527d40c4bMichael Wright mPriority = source.readInt(); 569f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 579f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 589f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown /** 599f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * Gets the keyboard layout descriptor, which can be used to retrieve 609f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * the keyboard layout again later using 619f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * {@link InputManager#getKeyboardLayout(String)}. 629f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * 639f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * @return The keyboard layout descriptor. 649f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown */ 659f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public String getDescriptor() { 669f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown return mDescriptor; 679f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 689f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 699f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown /** 709f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * Gets the keyboard layout descriptive label to show in the user interface. 719f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * @return The keyboard layout descriptive label. 729f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown */ 739f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public String getLabel() { 749f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown return mLabel; 759f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 769f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 77d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown /** 78d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown * Gets the name of the collection to which the keyboard layout belongs. This is 79d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown * the label of the broadcast receiver or application that provided the keyboard layout. 80d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown * @return The keyboard layout collection name. 81d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown */ 82d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown public String getCollection() { 83d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown return mCollection; 84d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown } 85d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown 869f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown @Override 879f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public int describeContents() { 889f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown return 0; 899f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 909f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 919f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown @Override 929f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public void writeToParcel(Parcel dest, int flags) { 939f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown dest.writeString(mDescriptor); 949f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown dest.writeString(mLabel); 95d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown dest.writeString(mCollection); 968ebac231966e27364e5d463b63540a0527d40c4bMichael Wright dest.writeInt(mPriority); 979f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 989f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 999f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown @Override 1009f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public int compareTo(KeyboardLayout another) { 1018ebac231966e27364e5d463b63540a0527d40c4bMichael Wright // Note that these arguments are intentionally flipped since you want higher priority 1028ebac231966e27364e5d463b63540a0527d40c4bMichael Wright // keyboards to be listed before lower priority keyboards. 1038ebac231966e27364e5d463b63540a0527d40c4bMichael Wright int result = Integer.compare(another.mPriority, mPriority); 1048ebac231966e27364e5d463b63540a0527d40c4bMichael Wright if (result == 0) { 1058ebac231966e27364e5d463b63540a0527d40c4bMichael Wright result = mLabel.compareToIgnoreCase(another.mLabel); 1068ebac231966e27364e5d463b63540a0527d40c4bMichael Wright } 107d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown if (result == 0) { 108d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown result = mCollection.compareToIgnoreCase(another.mCollection); 109d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown } 110d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown return result; 1119f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 1129f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 1139f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown @Override 1149f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public String toString() { 115d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown if (mCollection.isEmpty()) { 116d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown return mLabel; 117d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown } 118d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown return mLabel + " - " + mCollection; 1199f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 1208ebac231966e27364e5d463b63540a0527d40c4bMichael Wright} 121