aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2014-08-08 16:26:25 +0900
committerTadashi G. Takaoka <takaoka@google.com>2014-08-12 10:03:47 +0000
commit8fdff5a11129827e88ce9f5bc462e18f613c19a3 (patch)
tree2a64c96b20b64acf7226214a55ba12e177f6730d /java/src
parent016d6c424cf004c282db5a57e64f3d1eee672a22 (diff)
downloadlatinime-8fdff5a11129827e88ce9f5bc462e18f613c19a3.tar.gz
latinime-8fdff5a11129827e88ce9f5bc462e18f613c19a3.tar.xz
latinime-8fdff5a11129827e88ce9f5bc462e18f613c19a3.zip
(DO NOT MERGE) Show InputView even when hardware keyboard is connected
Bug: 13988700 Change-Id: I4aeb01bf3571afc97959c213474a6424d7896120 (cherry picked from commit 06514f00f43f15e702ad3d8287e0d90bff555b7f)
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java21
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java21
2 files changed, 41 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index f35126750..140e76879 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -18,6 +18,7 @@ package com.android.inputmethod.keyboard;
import android.content.Context;
import android.content.SharedPreferences;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.preference.PreferenceManager;
import android.util.Log;
@@ -233,11 +234,21 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
}
private void setMainKeyboardFrame() {
- mMainKeyboardFrame.setVisibility(View.VISIBLE);
+ mMainKeyboardFrame.setVisibility(hasHardwareKeyboard() ? View.GONE : View.VISIBLE);
mEmojiPalettesView.setVisibility(View.GONE);
mEmojiPalettesView.stopEmojiPalettes();
}
+ // TODO: Move this boolean to a member of {@link SettingsValues} and reset it
+ // at {@link LatinIME#onConfigurationChanged(Configuration)}.
+ public boolean hasHardwareKeyboard() {
+ // Copied from {@link InputMethodServce#onEvaluateInputViewShown()}.
+ final Configuration config = mLatinIME.getResources().getConfiguration();
+ final boolean noHardwareKeyboard = config.keyboard == Configuration.KEYBOARD_NOKEYS
+ || config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES;
+ return !noHardwareKeyboard;
+ }
+
// Implements {@link KeyboardState.SwitchActions}.
@Override
public void setEmojiKeyboard() {
@@ -249,6 +260,14 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
mEmojiPalettesView.setVisibility(View.VISIBLE);
}
+ public void onToggleEmojiKeyboard() {
+ if (isShowingEmojiPalettes()) {
+ setAlphabetKeyboard();
+ } else {
+ setEmojiKeyboard();
+ }
+ }
+
// Implements {@link KeyboardState.SwitchActions}.
@Override
public void setSymbolsShiftedKeyboard() {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 2e3cd6b6f..96244b504 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -145,6 +145,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// If it turns out we need several, it will get grown seamlessly.
final SparseArray<HardwareEventDecoder> mHardwareEventDecoders = new SparseArray<>(1);
+ // TODO: Move these {@link View}s to {@link KeyboardSwitcher}.
+ private View mInputView;
private View mExtractArea;
private View mKeyPreviewBackingView;
private SuggestionStripView mSuggestionStripView;
@@ -709,6 +711,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
@Override
public void setInputView(final View view) {
super.setInputView(view);
+ mInputView = view;
mExtractArea = getWindow().getWindow().getDecorView()
.findViewById(android.R.id.extractArea);
mKeyPreviewBackingView = view.findViewById(R.id.key_preview_backing);
@@ -1079,6 +1082,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (visibleKeyboardView == null || !hasSuggestionStripView()) {
return;
}
+ final boolean hasHardwareKeyboard = mKeyboardSwitcher.hasHardwareKeyboard();
+ if (hasHardwareKeyboard && visibleKeyboardView.getVisibility() == View.GONE) {
+ // If there is a hardware keyboard and a visible software keyboard view has been hidden,
+ // no visual element will be shown on the screen.
+ outInsets.touchableInsets = mInputView.getHeight();
+ outInsets.visibleTopInsets = mInputView.getHeight();
+ return;
+ }
final int adjustedBackingHeight = getAdjustedBackingViewHeight();
final boolean backingGone = (mKeyPreviewBackingView.getVisibility() == View.GONE);
final int backingHeight = backingGone ? 0 : adjustedBackingHeight;
@@ -1111,7 +1122,17 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
@Override
+ public boolean onEvaluateInputViewShown() {
+ // Always show {@link InputView}.
+ return true;
+ }
+
+ @Override
public boolean onEvaluateFullscreenMode() {
+ if (mKeyboardSwitcher.hasHardwareKeyboard()) {
+ // If there is a hardware keyboard, disable full screen mode.
+ return false;
+ }
// Reread resource value here, because this method is called by the framework as needed.
final boolean isFullscreenModeAllowed = Settings.readUseFullscreenMode(getResources());
if (super.onEvaluateFullscreenMode() && isFullscreenModeAllowed) {