diff options
Diffstat (limited to 'display/BrailleDisplayProperties.java')
-rw-r--r-- | display/BrailleDisplayProperties.java | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/display/BrailleDisplayProperties.java b/display/BrailleDisplayProperties.java new file mode 100644 index 0000000..606476f --- /dev/null +++ b/display/BrailleDisplayProperties.java @@ -0,0 +1,128 @@ +/* + * Copyright (C) 2012 Google Inc. + * + * 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.googlecode.eyesfree.braille.display; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +/** + * Properties of a braille display such as dimensions and keyboard + * configuration. + */ +public class BrailleDisplayProperties implements Parcelable { + private final int mNumTextCells; + private final int mNumStatusCells; + private final BrailleKeyBinding[] mKeyBindings; + private final Map<String, String> mFriendlyKeyNames; + + public BrailleDisplayProperties(int numTextCells, int numStatusCells, + BrailleKeyBinding[] keyBindings, + Map<String, String> friendlyKeyNames) { + mNumTextCells = numTextCells; + mNumStatusCells = numStatusCells; + mKeyBindings = keyBindings; + mFriendlyKeyNames = friendlyKeyNames; + } + + /** + * Returns the number of cells on the main display intended for display of + * text or other content. + */ + public int getNumTextCells() { + return mNumTextCells; + } + + /** + * Returns the number of status cells that are separated from the main + * display. This value will be {@code 0} for displays without any separate + * status cells. + */ + public int getNumStatusCells() { + return mNumStatusCells; + } + + /** + * Returns the list of key bindings for this display. + */ + public BrailleKeyBinding[] getKeyBindings() { + return mKeyBindings; + } + + /** + * Returns an unmodifiable map mapping key names in {@link BrailleKeyBinding} + * objects to localized user-friendly key names. + */ + public Map<String, String> getFriendlyKeyNames() { + return mFriendlyKeyNames; + } + + @Override + public String toString() { + return String.format( + "BrailleDisplayProperties [numTextCells: %d, numStatusCells: %d, " + + "keyBindings: %d]", + mNumTextCells, mNumStatusCells, mKeyBindings.length); + } + + // For Parcelable support. + + public static final Parcelable.Creator<BrailleDisplayProperties> CREATOR = + new Parcelable.Creator<BrailleDisplayProperties>() { + @Override + public BrailleDisplayProperties createFromParcel(Parcel in) { + return new BrailleDisplayProperties(in); + } + + @Override + public BrailleDisplayProperties[] newArray(int size) { + return new BrailleDisplayProperties[size]; + } + }; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel out, int flags) { + out.writeInt(mNumTextCells); + out.writeInt(mNumStatusCells); + out.writeTypedArray(mKeyBindings, flags); + out.writeInt(mFriendlyKeyNames.size()); + for (Map.Entry<String, String> entry : mFriendlyKeyNames.entrySet()) { + out.writeString(entry.getKey()); + out.writeString(entry.getValue()); + } + } + + private BrailleDisplayProperties(Parcel in) { + mNumTextCells = in.readInt(); + mNumStatusCells = in.readInt(); + mKeyBindings = in.createTypedArray(BrailleKeyBinding.CREATOR); + int size = in.readInt(); + Map<String, String> names = new HashMap<String, String>(size); + for (int i = 0; i < size; ++i) { + names.put(in.readString(), in.readString()); + } + mFriendlyKeyNames = Collections.unmodifiableMap(names); + } +} |