Loading java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +16 −24 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.SubtypeSwitcher; import com.android.inputmethod.latin.SubtypeSwitcher; import com.android.inputmethod.latin.WordComposer; import com.android.inputmethod.latin.WordComposer; import com.android.inputmethod.latin.settings.Settings; import com.android.inputmethod.latin.settings.SettingsValues; import com.android.inputmethod.latin.settings.SettingsValues; import com.android.inputmethod.latin.utils.ResourceUtils; import com.android.inputmethod.latin.utils.ResourceUtils; import com.android.inputmethod.latin.utils.ScriptUtils; import com.android.inputmethod.latin.utils.ScriptUtils; Loading @@ -60,7 +61,6 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { private KeyboardLayoutSet mKeyboardLayoutSet; private KeyboardLayoutSet mKeyboardLayoutSet; // TODO: The following {@link KeyboardTextsSet} should be in {@link KeyboardLayoutSet}. // TODO: The following {@link KeyboardTextsSet} should be in {@link KeyboardLayoutSet}. private final KeyboardTextsSet mKeyboardTextsSet = new KeyboardTextsSet(); private final KeyboardTextsSet mKeyboardTextsSet = new KeyboardTextsSet(); private SettingsValues mCurrentSettingsValues; private KeyboardTheme mKeyboardTheme; private KeyboardTheme mKeyboardTheme; private Context mThemeContext; private Context mThemeContext; Loading Loading @@ -120,7 +120,6 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { builder.setVoiceInputKeyEnabled(settingsValues.mShowsVoiceInputKey); builder.setVoiceInputKeyEnabled(settingsValues.mShowsVoiceInputKey); builder.setLanguageSwitchKeyEnabled(mLatinIME.shouldShowLanguageSwitchKey()); builder.setLanguageSwitchKeyEnabled(mLatinIME.shouldShowLanguageSwitchKey()); mKeyboardLayoutSet = builder.build(); mKeyboardLayoutSet = builder.build(); mCurrentSettingsValues = settingsValues; try { try { mState.onLoadKeyboard(currentAutoCapsState, currentRecapitalizeState); mState.onLoadKeyboard(currentAutoCapsState, currentRecapitalizeState); mKeyboardTextsSet.setLocale(mSubtypeSwitcher.getCurrentSubtypeLocale(), mThemeContext); mKeyboardTextsSet.setLocale(mSubtypeSwitcher.getCurrentSubtypeLocale(), mThemeContext); Loading @@ -144,22 +143,24 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { private void setKeyboard(final Keyboard keyboard) { private void setKeyboard(final Keyboard keyboard) { // Make {@link MainKeyboardView} visible and hide {@link EmojiPalettesView}. // Make {@link MainKeyboardView} visible and hide {@link EmojiPalettesView}. setMainKeyboardFrame(); final SettingsValues currentSettingsValues = Settings.getInstance().getCurrent(); setMainKeyboardFrame(currentSettingsValues); // TODO: pass this object to setKeyboard instead of getting the current values. final MainKeyboardView keyboardView = mKeyboardView; final MainKeyboardView keyboardView = mKeyboardView; final Keyboard oldKeyboard = keyboardView.getKeyboard(); final Keyboard oldKeyboard = keyboardView.getKeyboard(); keyboardView.setKeyboard(keyboard); keyboardView.setKeyboard(keyboard); mCurrentInputView.setKeyboardTopPadding(keyboard.mTopPadding); mCurrentInputView.setKeyboardTopPadding(keyboard.mTopPadding); keyboardView.setKeyPreviewPopupEnabled( keyboardView.setKeyPreviewPopupEnabled( mCurrentSettingsValues.mKeyPreviewPopupOn, currentSettingsValues.mKeyPreviewPopupOn, mCurrentSettingsValues.mKeyPreviewPopupDismissDelay); currentSettingsValues.mKeyPreviewPopupDismissDelay); keyboardView.setKeyPreviewAnimationParams( keyboardView.setKeyPreviewAnimationParams( mCurrentSettingsValues.mHasCustomKeyPreviewAnimationParams, currentSettingsValues.mHasCustomKeyPreviewAnimationParams, mCurrentSettingsValues.mKeyPreviewShowUpStartXScale, currentSettingsValues.mKeyPreviewShowUpStartXScale, mCurrentSettingsValues.mKeyPreviewShowUpStartYScale, currentSettingsValues.mKeyPreviewShowUpStartYScale, mCurrentSettingsValues.mKeyPreviewShowUpDuration, currentSettingsValues.mKeyPreviewShowUpDuration, mCurrentSettingsValues.mKeyPreviewDismissEndXScale, currentSettingsValues.mKeyPreviewDismissEndXScale, mCurrentSettingsValues.mKeyPreviewDismissEndYScale, currentSettingsValues.mKeyPreviewDismissEndYScale, mCurrentSettingsValues.mKeyPreviewDismissDuration); currentSettingsValues.mKeyPreviewDismissDuration); keyboardView.updateShortcutKey(mSubtypeSwitcher.isShortcutImeReady()); keyboardView.updateShortcutKey(mSubtypeSwitcher.isShortcutImeReady()); final boolean subtypeChanged = (oldKeyboard == null) final boolean subtypeChanged = (oldKeyboard == null) || !keyboard.mId.mLocale.equals(oldKeyboard.mId.mLocale); || !keyboard.mId.mLocale.equals(oldKeyboard.mId.mLocale); Loading Loading @@ -236,22 +237,13 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { setKeyboard(mKeyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_SYMBOLS)); setKeyboard(mKeyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_SYMBOLS)); } } private void setMainKeyboardFrame() { private void setMainKeyboardFrame(final SettingsValues settingsValues) { mMainKeyboardFrame.setVisibility(hasHardwareKeyboard() ? View.GONE : View.VISIBLE); mMainKeyboardFrame.setVisibility( settingsValues.mHasHardwareKeyboard ? View.GONE : View.VISIBLE); mEmojiPalettesView.setVisibility(View.GONE); mEmojiPalettesView.setVisibility(View.GONE); mEmojiPalettesView.stopEmojiPalettes(); 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}. // Implements {@link KeyboardState.SwitchActions}. @Override @Override public void setEmojiKeyboard() { public void setEmojiKeyboard() { Loading java/src/com/android/inputmethod/latin/LatinIME.java +6 −3 Original line number Original line Diff line number Diff line Loading @@ -1074,12 +1074,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen @Override @Override public void onComputeInsets(final InputMethodService.Insets outInsets) { public void onComputeInsets(final InputMethodService.Insets outInsets) { super.onComputeInsets(outInsets); super.onComputeInsets(outInsets); final SettingsValues settingsValues = mSettings.getCurrent(); final View visibleKeyboardView = mKeyboardSwitcher.getVisibleKeyboardView(); final View visibleKeyboardView = mKeyboardSwitcher.getVisibleKeyboardView(); if (visibleKeyboardView == null || !hasSuggestionStripView()) { if (visibleKeyboardView == null || !hasSuggestionStripView()) { return; return; } } final int inputHeight = mInputView.getHeight(); final int inputHeight = mInputView.getHeight(); final boolean hasHardwareKeyboard = mKeyboardSwitcher.hasHardwareKeyboard(); final boolean hasHardwareKeyboard = settingsValues.mHasHardwareKeyboard; if (hasHardwareKeyboard && visibleKeyboardView.getVisibility() == View.GONE) { if (hasHardwareKeyboard && visibleKeyboardView.getVisibility() == View.GONE) { // If there is a hardware keyboard and a visible software keyboard view has been hidden, // If there is a hardware keyboard and a visible software keyboard view has been hidden, // no visual element will be shown on the screen. // no visual element will be shown on the screen. Loading Loading @@ -1115,7 +1116,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen @Override @Override public boolean onShowInputRequested(final int flags, final boolean configChange) { public boolean onShowInputRequested(final int flags, final boolean configChange) { if ((flags & InputMethod.SHOW_EXPLICIT) == 0 && mKeyboardSwitcher.hasHardwareKeyboard()) { final SettingsValues settingsValues = mSettings.getCurrent(); if ((flags & InputMethod.SHOW_EXPLICIT) == 0 && settingsValues.mHasHardwareKeyboard) { // Even when IME is implicitly shown and physical keyboard is connected, we should // Even when IME is implicitly shown and physical keyboard is connected, we should // show {@link InputView}. // show {@link InputView}. // See {@link InputMethodService#onShowInputRequested(int,boolean)}. // See {@link InputMethodService#onShowInputRequested(int,boolean)}. Loading @@ -1126,7 +1128,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen @Override @Override public boolean onEvaluateFullscreenMode() { public boolean onEvaluateFullscreenMode() { if (mKeyboardSwitcher.hasHardwareKeyboard()) { final SettingsValues settingsValues = mSettings.getCurrent(); if (settingsValues.mHasHardwareKeyboard) { // If there is a hardware keyboard, disable full screen mode. // If there is a hardware keyboard, disable full screen mode. return false; return false; } } Loading java/src/com/android/inputmethod/latin/settings/Settings.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.inputmethod.latin.settings; import android.content.Context; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.Resources; import android.os.Build; import android.os.Build; import android.preference.PreferenceManager; import android.preference.PreferenceManager; Loading Loading @@ -368,6 +369,15 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang return prefs.getBoolean(PREF_SHOW_SETUP_WIZARD_ICON, false); return prefs.getBoolean(PREF_SHOW_SETUP_WIZARD_ICON, false); } } public static boolean readHasHardwareKeyboard(final Configuration conf) { // The standard way of finding out whether we have a hardware keyboard. This code is taken // from InputMethodService#onEvaluateInputShown, which canonically determines this. // In a nutshell, we have a keyboard if the configuration says the type of hardware keyboard // is NOKEYS and if it's not hidden (e.g. folded inside the device). return conf.keyboard != Configuration.KEYBOARD_NOKEYS && conf.hardKeyboardHidden != Configuration.HARDKEYBOARDHIDDEN_YES; } public static boolean isInternal(final SharedPreferences prefs) { public static boolean isInternal(final SharedPreferences prefs) { return prefs.getBoolean(PREF_KEY_IS_INTERNAL, false); return prefs.getBoolean(PREF_KEY_IS_INTERNAL, false); } } Loading java/src/com/android/inputmethod/latin/settings/SettingsValues.java +5 −3 Original line number Original line Diff line number Diff line Loading @@ -52,7 +52,10 @@ public final class SettingsValues { public final SpacingAndPunctuations mSpacingAndPunctuations; public final SpacingAndPunctuations mSpacingAndPunctuations; public final int mDelayInMillisecondsToUpdateOldSuggestions; public final int mDelayInMillisecondsToUpdateOldSuggestions; public final long mDoubleSpacePeriodTimeout; public final long mDoubleSpacePeriodTimeout; // From configuration: public final Locale mLocale; public final boolean mHasHardwareKeyboard; public final int mDisplayOrientation; // From preferences, in the same order as xml/prefs.xml: // From preferences, in the same order as xml/prefs.xml: public final boolean mAutoCap; public final boolean mAutoCap; public final boolean mVibrateOn; public final boolean mVibrateOn; Loading @@ -73,7 +76,6 @@ public final class SettingsValues { public final boolean mSlidingKeyInputPreviewEnabled; public final boolean mSlidingKeyInputPreviewEnabled; public final boolean mPhraseGestureEnabled; public final boolean mPhraseGestureEnabled; public final int mKeyLongpressTimeout; public final int mKeyLongpressTimeout; public final Locale mLocale; public final boolean mEnableMetricsLogging; public final boolean mEnableMetricsLogging; public final boolean mShouldShowUiToAcceptTypedWord; public final boolean mShouldShowUiToAcceptTypedWord; Loading @@ -88,7 +90,6 @@ public final class SettingsValues { public final float mAutoCorrectionThreshold; public final float mAutoCorrectionThreshold; public final boolean mAutoCorrectionEnabledPerUserSettings; public final boolean mAutoCorrectionEnabledPerUserSettings; private final boolean mSuggestionsEnabledPerUserSettings; private final boolean mSuggestionsEnabledPerUserSettings; public final int mDisplayOrientation; private final AsyncResultHolder<AppWorkaroundsUtils> mAppWorkarounds; private final AsyncResultHolder<AppWorkaroundsUtils> mAppWorkarounds; // Setting values for additional features // Setting values for additional features Loading Loading @@ -152,6 +153,7 @@ public final class SettingsValues { mAutoCorrectEnabled = Settings.readAutoCorrectEnabled(autoCorrectionThresholdRawValue, res); mAutoCorrectEnabled = Settings.readAutoCorrectEnabled(autoCorrectionThresholdRawValue, res); mBigramPredictionEnabled = readBigramPredictionEnabled(prefs, res); mBigramPredictionEnabled = readBigramPredictionEnabled(prefs, res); mDoubleSpacePeriodTimeout = res.getInteger(R.integer.config_double_space_period_timeout); mDoubleSpacePeriodTimeout = res.getInteger(R.integer.config_double_space_period_timeout); mHasHardwareKeyboard = Settings.readHasHardwareKeyboard(res.getConfiguration()); mEnableMetricsLogging = prefs.getBoolean(Settings.PREF_ENABLE_METRICS_LOGGING, true); mEnableMetricsLogging = prefs.getBoolean(Settings.PREF_ENABLE_METRICS_LOGGING, true); mShouldShowUiToAcceptTypedWord = Settings.HAS_UI_TO_ACCEPT_TYPED_WORD mShouldShowUiToAcceptTypedWord = Settings.HAS_UI_TO_ACCEPT_TYPED_WORD && prefs.getBoolean(DebugSettings.PREF_SHOW_UI_TO_ACCEPT_TYPED_WORD, true); && prefs.getBoolean(DebugSettings.PREF_SHOW_UI_TO_ACCEPT_TYPED_WORD, true); Loading Loading
java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +16 −24 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.SubtypeSwitcher; import com.android.inputmethod.latin.SubtypeSwitcher; import com.android.inputmethod.latin.WordComposer; import com.android.inputmethod.latin.WordComposer; import com.android.inputmethod.latin.settings.Settings; import com.android.inputmethod.latin.settings.SettingsValues; import com.android.inputmethod.latin.settings.SettingsValues; import com.android.inputmethod.latin.utils.ResourceUtils; import com.android.inputmethod.latin.utils.ResourceUtils; import com.android.inputmethod.latin.utils.ScriptUtils; import com.android.inputmethod.latin.utils.ScriptUtils; Loading @@ -60,7 +61,6 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { private KeyboardLayoutSet mKeyboardLayoutSet; private KeyboardLayoutSet mKeyboardLayoutSet; // TODO: The following {@link KeyboardTextsSet} should be in {@link KeyboardLayoutSet}. // TODO: The following {@link KeyboardTextsSet} should be in {@link KeyboardLayoutSet}. private final KeyboardTextsSet mKeyboardTextsSet = new KeyboardTextsSet(); private final KeyboardTextsSet mKeyboardTextsSet = new KeyboardTextsSet(); private SettingsValues mCurrentSettingsValues; private KeyboardTheme mKeyboardTheme; private KeyboardTheme mKeyboardTheme; private Context mThemeContext; private Context mThemeContext; Loading Loading @@ -120,7 +120,6 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { builder.setVoiceInputKeyEnabled(settingsValues.mShowsVoiceInputKey); builder.setVoiceInputKeyEnabled(settingsValues.mShowsVoiceInputKey); builder.setLanguageSwitchKeyEnabled(mLatinIME.shouldShowLanguageSwitchKey()); builder.setLanguageSwitchKeyEnabled(mLatinIME.shouldShowLanguageSwitchKey()); mKeyboardLayoutSet = builder.build(); mKeyboardLayoutSet = builder.build(); mCurrentSettingsValues = settingsValues; try { try { mState.onLoadKeyboard(currentAutoCapsState, currentRecapitalizeState); mState.onLoadKeyboard(currentAutoCapsState, currentRecapitalizeState); mKeyboardTextsSet.setLocale(mSubtypeSwitcher.getCurrentSubtypeLocale(), mThemeContext); mKeyboardTextsSet.setLocale(mSubtypeSwitcher.getCurrentSubtypeLocale(), mThemeContext); Loading @@ -144,22 +143,24 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { private void setKeyboard(final Keyboard keyboard) { private void setKeyboard(final Keyboard keyboard) { // Make {@link MainKeyboardView} visible and hide {@link EmojiPalettesView}. // Make {@link MainKeyboardView} visible and hide {@link EmojiPalettesView}. setMainKeyboardFrame(); final SettingsValues currentSettingsValues = Settings.getInstance().getCurrent(); setMainKeyboardFrame(currentSettingsValues); // TODO: pass this object to setKeyboard instead of getting the current values. final MainKeyboardView keyboardView = mKeyboardView; final MainKeyboardView keyboardView = mKeyboardView; final Keyboard oldKeyboard = keyboardView.getKeyboard(); final Keyboard oldKeyboard = keyboardView.getKeyboard(); keyboardView.setKeyboard(keyboard); keyboardView.setKeyboard(keyboard); mCurrentInputView.setKeyboardTopPadding(keyboard.mTopPadding); mCurrentInputView.setKeyboardTopPadding(keyboard.mTopPadding); keyboardView.setKeyPreviewPopupEnabled( keyboardView.setKeyPreviewPopupEnabled( mCurrentSettingsValues.mKeyPreviewPopupOn, currentSettingsValues.mKeyPreviewPopupOn, mCurrentSettingsValues.mKeyPreviewPopupDismissDelay); currentSettingsValues.mKeyPreviewPopupDismissDelay); keyboardView.setKeyPreviewAnimationParams( keyboardView.setKeyPreviewAnimationParams( mCurrentSettingsValues.mHasCustomKeyPreviewAnimationParams, currentSettingsValues.mHasCustomKeyPreviewAnimationParams, mCurrentSettingsValues.mKeyPreviewShowUpStartXScale, currentSettingsValues.mKeyPreviewShowUpStartXScale, mCurrentSettingsValues.mKeyPreviewShowUpStartYScale, currentSettingsValues.mKeyPreviewShowUpStartYScale, mCurrentSettingsValues.mKeyPreviewShowUpDuration, currentSettingsValues.mKeyPreviewShowUpDuration, mCurrentSettingsValues.mKeyPreviewDismissEndXScale, currentSettingsValues.mKeyPreviewDismissEndXScale, mCurrentSettingsValues.mKeyPreviewDismissEndYScale, currentSettingsValues.mKeyPreviewDismissEndYScale, mCurrentSettingsValues.mKeyPreviewDismissDuration); currentSettingsValues.mKeyPreviewDismissDuration); keyboardView.updateShortcutKey(mSubtypeSwitcher.isShortcutImeReady()); keyboardView.updateShortcutKey(mSubtypeSwitcher.isShortcutImeReady()); final boolean subtypeChanged = (oldKeyboard == null) final boolean subtypeChanged = (oldKeyboard == null) || !keyboard.mId.mLocale.equals(oldKeyboard.mId.mLocale); || !keyboard.mId.mLocale.equals(oldKeyboard.mId.mLocale); Loading Loading @@ -236,22 +237,13 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { setKeyboard(mKeyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_SYMBOLS)); setKeyboard(mKeyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_SYMBOLS)); } } private void setMainKeyboardFrame() { private void setMainKeyboardFrame(final SettingsValues settingsValues) { mMainKeyboardFrame.setVisibility(hasHardwareKeyboard() ? View.GONE : View.VISIBLE); mMainKeyboardFrame.setVisibility( settingsValues.mHasHardwareKeyboard ? View.GONE : View.VISIBLE); mEmojiPalettesView.setVisibility(View.GONE); mEmojiPalettesView.setVisibility(View.GONE); mEmojiPalettesView.stopEmojiPalettes(); 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}. // Implements {@link KeyboardState.SwitchActions}. @Override @Override public void setEmojiKeyboard() { public void setEmojiKeyboard() { Loading
java/src/com/android/inputmethod/latin/LatinIME.java +6 −3 Original line number Original line Diff line number Diff line Loading @@ -1074,12 +1074,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen @Override @Override public void onComputeInsets(final InputMethodService.Insets outInsets) { public void onComputeInsets(final InputMethodService.Insets outInsets) { super.onComputeInsets(outInsets); super.onComputeInsets(outInsets); final SettingsValues settingsValues = mSettings.getCurrent(); final View visibleKeyboardView = mKeyboardSwitcher.getVisibleKeyboardView(); final View visibleKeyboardView = mKeyboardSwitcher.getVisibleKeyboardView(); if (visibleKeyboardView == null || !hasSuggestionStripView()) { if (visibleKeyboardView == null || !hasSuggestionStripView()) { return; return; } } final int inputHeight = mInputView.getHeight(); final int inputHeight = mInputView.getHeight(); final boolean hasHardwareKeyboard = mKeyboardSwitcher.hasHardwareKeyboard(); final boolean hasHardwareKeyboard = settingsValues.mHasHardwareKeyboard; if (hasHardwareKeyboard && visibleKeyboardView.getVisibility() == View.GONE) { if (hasHardwareKeyboard && visibleKeyboardView.getVisibility() == View.GONE) { // If there is a hardware keyboard and a visible software keyboard view has been hidden, // If there is a hardware keyboard and a visible software keyboard view has been hidden, // no visual element will be shown on the screen. // no visual element will be shown on the screen. Loading Loading @@ -1115,7 +1116,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen @Override @Override public boolean onShowInputRequested(final int flags, final boolean configChange) { public boolean onShowInputRequested(final int flags, final boolean configChange) { if ((flags & InputMethod.SHOW_EXPLICIT) == 0 && mKeyboardSwitcher.hasHardwareKeyboard()) { final SettingsValues settingsValues = mSettings.getCurrent(); if ((flags & InputMethod.SHOW_EXPLICIT) == 0 && settingsValues.mHasHardwareKeyboard) { // Even when IME is implicitly shown and physical keyboard is connected, we should // Even when IME is implicitly shown and physical keyboard is connected, we should // show {@link InputView}. // show {@link InputView}. // See {@link InputMethodService#onShowInputRequested(int,boolean)}. // See {@link InputMethodService#onShowInputRequested(int,boolean)}. Loading @@ -1126,7 +1128,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen @Override @Override public boolean onEvaluateFullscreenMode() { public boolean onEvaluateFullscreenMode() { if (mKeyboardSwitcher.hasHardwareKeyboard()) { final SettingsValues settingsValues = mSettings.getCurrent(); if (settingsValues.mHasHardwareKeyboard) { // If there is a hardware keyboard, disable full screen mode. // If there is a hardware keyboard, disable full screen mode. return false; return false; } } Loading
java/src/com/android/inputmethod/latin/settings/Settings.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.inputmethod.latin.settings; import android.content.Context; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.Resources; import android.os.Build; import android.os.Build; import android.preference.PreferenceManager; import android.preference.PreferenceManager; Loading Loading @@ -368,6 +369,15 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang return prefs.getBoolean(PREF_SHOW_SETUP_WIZARD_ICON, false); return prefs.getBoolean(PREF_SHOW_SETUP_WIZARD_ICON, false); } } public static boolean readHasHardwareKeyboard(final Configuration conf) { // The standard way of finding out whether we have a hardware keyboard. This code is taken // from InputMethodService#onEvaluateInputShown, which canonically determines this. // In a nutshell, we have a keyboard if the configuration says the type of hardware keyboard // is NOKEYS and if it's not hidden (e.g. folded inside the device). return conf.keyboard != Configuration.KEYBOARD_NOKEYS && conf.hardKeyboardHidden != Configuration.HARDKEYBOARDHIDDEN_YES; } public static boolean isInternal(final SharedPreferences prefs) { public static boolean isInternal(final SharedPreferences prefs) { return prefs.getBoolean(PREF_KEY_IS_INTERNAL, false); return prefs.getBoolean(PREF_KEY_IS_INTERNAL, false); } } Loading
java/src/com/android/inputmethod/latin/settings/SettingsValues.java +5 −3 Original line number Original line Diff line number Diff line Loading @@ -52,7 +52,10 @@ public final class SettingsValues { public final SpacingAndPunctuations mSpacingAndPunctuations; public final SpacingAndPunctuations mSpacingAndPunctuations; public final int mDelayInMillisecondsToUpdateOldSuggestions; public final int mDelayInMillisecondsToUpdateOldSuggestions; public final long mDoubleSpacePeriodTimeout; public final long mDoubleSpacePeriodTimeout; // From configuration: public final Locale mLocale; public final boolean mHasHardwareKeyboard; public final int mDisplayOrientation; // From preferences, in the same order as xml/prefs.xml: // From preferences, in the same order as xml/prefs.xml: public final boolean mAutoCap; public final boolean mAutoCap; public final boolean mVibrateOn; public final boolean mVibrateOn; Loading @@ -73,7 +76,6 @@ public final class SettingsValues { public final boolean mSlidingKeyInputPreviewEnabled; public final boolean mSlidingKeyInputPreviewEnabled; public final boolean mPhraseGestureEnabled; public final boolean mPhraseGestureEnabled; public final int mKeyLongpressTimeout; public final int mKeyLongpressTimeout; public final Locale mLocale; public final boolean mEnableMetricsLogging; public final boolean mEnableMetricsLogging; public final boolean mShouldShowUiToAcceptTypedWord; public final boolean mShouldShowUiToAcceptTypedWord; Loading @@ -88,7 +90,6 @@ public final class SettingsValues { public final float mAutoCorrectionThreshold; public final float mAutoCorrectionThreshold; public final boolean mAutoCorrectionEnabledPerUserSettings; public final boolean mAutoCorrectionEnabledPerUserSettings; private final boolean mSuggestionsEnabledPerUserSettings; private final boolean mSuggestionsEnabledPerUserSettings; public final int mDisplayOrientation; private final AsyncResultHolder<AppWorkaroundsUtils> mAppWorkarounds; private final AsyncResultHolder<AppWorkaroundsUtils> mAppWorkarounds; // Setting values for additional features // Setting values for additional features Loading Loading @@ -152,6 +153,7 @@ public final class SettingsValues { mAutoCorrectEnabled = Settings.readAutoCorrectEnabled(autoCorrectionThresholdRawValue, res); mAutoCorrectEnabled = Settings.readAutoCorrectEnabled(autoCorrectionThresholdRawValue, res); mBigramPredictionEnabled = readBigramPredictionEnabled(prefs, res); mBigramPredictionEnabled = readBigramPredictionEnabled(prefs, res); mDoubleSpacePeriodTimeout = res.getInteger(R.integer.config_double_space_period_timeout); mDoubleSpacePeriodTimeout = res.getInteger(R.integer.config_double_space_period_timeout); mHasHardwareKeyboard = Settings.readHasHardwareKeyboard(res.getConfiguration()); mEnableMetricsLogging = prefs.getBoolean(Settings.PREF_ENABLE_METRICS_LOGGING, true); mEnableMetricsLogging = prefs.getBoolean(Settings.PREF_ENABLE_METRICS_LOGGING, true); mShouldShowUiToAcceptTypedWord = Settings.HAS_UI_TO_ACCEPT_TYPED_WORD mShouldShowUiToAcceptTypedWord = Settings.HAS_UI_TO_ACCEPT_TYPED_WORD && prefs.getBoolean(DebugSettings.PREF_SHOW_UI_TO_ACCEPT_TYPED_WORD, true); && prefs.getBoolean(DebugSettings.PREF_SHOW_UI_TO_ACCEPT_TYPED_WORD, true); Loading