summaryrefslogtreecommitdiff
path: root/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2013-01-29 16:11:52 +0900
committerTadashi G. Takaoka <takaoka@google.com>2013-01-29 18:32:04 +0900
commit17dae3057c234d9aed83c1ba31dbbc3aceb790ca (patch)
tree25734321a51b4eb3ecf8e084ac4dca7844838306 /java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
parent56012e5ab952ecae965818d89b9ee51ef1f84ddb (diff)
Remove {max,min}keyboardHeight attribute from Keyboard
This change removes a DisplayMetrics reference from KeyboardBuilder. Change-Id: I512694274e69e5281d5be47c3f938bcfd6571152
Diffstat (limited to 'java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java')
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java42
1 files changed, 37 insertions, 5 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
index f060ad083..f28bc9471 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
@@ -28,9 +28,11 @@ import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.text.InputType;
+import android.text.TextUtils;
import android.util.Log;
import android.util.SparseArray;
import android.util.Xml;
+import android.view.ViewDebug.HierarchyTraceType;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodSubtype;
@@ -44,6 +46,7 @@ import com.android.inputmethod.latin.InputAttributes;
import com.android.inputmethod.latin.InputTypeUtils;
import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.ResourceUtils;
import com.android.inputmethod.latin.SubtypeLocale;
import com.android.inputmethod.latin.SubtypeSwitcher;
import com.android.inputmethod.latin.XmlParseUtils;
@@ -106,7 +109,8 @@ public final class KeyboardLayoutSet {
InputMethodSubtype mSubtype;
int mDeviceFormFactor;
int mOrientation;
- int mWidth;
+ int mKeyboardWidth;
+ int mKeyboardHeight;
// Sparse array of KeyboardLayoutSet element parameters indexed by element's id.
final SparseArray<ElementParams> mKeyboardLayoutSetElementIdToParamsMap =
CollectionUtils.newSparseArray();
@@ -214,15 +218,43 @@ public final class KeyboardLayoutSet {
mPackageName, NO_SETTINGS_KEY, mEditorInfo);
}
- public Builder setScreenGeometry(final int deviceFormFactor, final int orientation,
- final int widthPixels) {
+ public Builder setScreenGeometry(final int deviceFormFactor, final int widthPixels,
+ final int heightPixels) {
final Params params = mParams;
params.mDeviceFormFactor = deviceFormFactor;
- params.mOrientation = orientation;
- params.mWidth = widthPixels;
+ params.mOrientation = (heightPixels > widthPixels)
+ ? Configuration.ORIENTATION_PORTRAIT : Configuration.ORIENTATION_LANDSCAPE;
+ setDefaultKeyboardSize(widthPixels, heightPixels);
return this;
}
+ private void setDefaultKeyboardSize(final int widthPixels, final int heightPixels) {
+ final String keyboardHeightString = ResourceUtils.getDeviceOverrideValue(
+ mResources, R.array.keyboard_heights);
+ final float keyboardHeight;
+ if (TextUtils.isEmpty(keyboardHeightString)) {
+ keyboardHeight = mResources.getDimension(R.dimen.keyboardHeight);
+ } else {
+ keyboardHeight = Float.parseFloat(keyboardHeightString)
+ * mResources.getDisplayMetrics().density;
+ }
+ final float maxKeyboardHeight = mResources.getFraction(
+ R.fraction.maxKeyboardHeight, heightPixels, heightPixels);
+ float minKeyboardHeight = mResources.getFraction(
+ R.fraction.minKeyboardHeight, heightPixels, heightPixels);
+ if (minKeyboardHeight < 0.0f) {
+ // Specified fraction was negative, so it should be calculated against display
+ // width.
+ minKeyboardHeight = -mResources.getFraction(
+ R.fraction.minKeyboardHeight, widthPixels, widthPixels);
+ }
+ // Keyboard height will not exceed maxKeyboardHeight and will not be less than
+ // minKeyboardHeight.
+ mParams.mKeyboardHeight = (int)Math.max(
+ Math.min(keyboardHeight, maxKeyboardHeight), minKeyboardHeight);
+ mParams.mKeyboardWidth = widthPixels;
+ }
+
public Builder setSubtype(final InputMethodSubtype subtype) {
final boolean asciiCapable = subtype.containsExtraValueKey(ASCII_CAPABLE);
@SuppressWarnings("deprecation")