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; 329f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 339f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public static final Parcelable.Creator<KeyboardLayout> CREATOR = 349f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown new Parcelable.Creator<KeyboardLayout>() { 359f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public KeyboardLayout createFromParcel(Parcel source) { 369f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown return new KeyboardLayout(source); 379f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 389f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public KeyboardLayout[] newArray(int size) { 399f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown return new KeyboardLayout[size]; 409f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 419f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown }; 429f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 43d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown public KeyboardLayout(String descriptor, String label, String collection) { 449f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown mDescriptor = descriptor; 459f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown mLabel = label; 46d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown mCollection = collection; 479f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 489f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 499f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown private KeyboardLayout(Parcel source) { 509f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown mDescriptor = source.readString(); 519f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown mLabel = source.readString(); 52d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown mCollection = source.readString(); 539f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 549f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 559f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown /** 569f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * Gets the keyboard layout descriptor, which can be used to retrieve 579f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * the keyboard layout again later using 589f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * {@link InputManager#getKeyboardLayout(String)}. 599f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * 609f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * @return The keyboard layout descriptor. 619f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown */ 629f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public String getDescriptor() { 639f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown return mDescriptor; 649f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 659f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 669f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown /** 679f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * Gets the keyboard layout descriptive label to show in the user interface. 689f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown * @return The keyboard layout descriptive label. 699f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown */ 709f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public String getLabel() { 719f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown return mLabel; 729f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 739f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 74d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown /** 75d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown * Gets the name of the collection to which the keyboard layout belongs. This is 76d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown * the label of the broadcast receiver or application that provided the keyboard layout. 77d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown * @return The keyboard layout collection name. 78d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown */ 79d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown public String getCollection() { 80d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown return mCollection; 81d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown } 82d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown 839f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown @Override 849f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public int describeContents() { 859f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown return 0; 869f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 879f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 889f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown @Override 899f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public void writeToParcel(Parcel dest, int flags) { 909f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown dest.writeString(mDescriptor); 919f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown dest.writeString(mLabel); 92d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown dest.writeString(mCollection); 939f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 949f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 959f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown @Override 969f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public int compareTo(KeyboardLayout another) { 97d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown int result = mLabel.compareToIgnoreCase(another.mLabel); 98d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown if (result == 0) { 99d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown result = mCollection.compareToIgnoreCase(another.mCollection); 100d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown } 101d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown return result; 1029f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 1039f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown 1049f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown @Override 1059f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown public String toString() { 106d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown if (mCollection.isEmpty()) { 107d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown return mLabel; 108d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown } 109d9fec5d317c09da6bcc7a54df4e0190a76d21eaeJeff Brown return mLabel + " - " + mCollection; 1109f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown } 1119f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown}