Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aa4b2c71 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Always update voice key visibility

Bug: 15128166
Change-Id: Ie15724c323efa3b102f6aebddc3bda210aad1727
parent 3ca65c8f
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -115,9 +115,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
        final int keyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
        builder.setKeyboardGeometry(keyboardWidth, keyboardHeight);
        builder.setSubtype(mSubtypeSwitcher.getCurrentSubtype());
        builder.setVoiceInputKeyEnabled(mSubtypeSwitcher.isShortcutImeEnabled()
                && settingsValues.mShowsVoiceInputKey
                && !settingsValues.mInputAttributes.hasNoMicrophoneKeyOption());
        builder.setVoiceInputKeyEnabled(settingsValues.mShowsVoiceInputKey);
        builder.setLanguageSwitchKeyEnabled(mLatinIME.shouldShowLanguageSwitchKey());
        mKeyboardLayoutSet = builder.build();
        mCurrentSettingsValues = settingsValues;
+3 −2
Original line number Diff line number Diff line
@@ -738,6 +738,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        }
        Log.i(TAG, "Starting input. Cursor position = "
                + editorInfo.initialSelStart + "," + editorInfo.initialSelEnd);
        // TODO: Consolidate these checks with {@link InputAttributes}.
        if (InputAttributes.inPrivateImeOptions(null, NO_MICROPHONE_COMPAT, editorInfo)) {
            Log.w(TAG, "Deprecated private IME option specified: " + editorInfo.privateImeOptions);
            Log.w(TAG, "Use " + getPackageName() + "." + NO_MICROPHONE + " instead");
@@ -1343,11 +1344,11 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        if (!onEvaluateInputViewShown()) {
            return;
        }

        mSuggestionStripView.updateVisibility(isSuggestionStripVisible, isFullscreenMode());
        if (!isSuggestionStripVisible) {
            mSuggestionStripView.setVisibility(isFullscreenMode() ? View.GONE : View.INVISIBLE);
            return;
        }
        mSuggestionStripView.setVisibility(View.VISIBLE);

        final SettingsValues currentSettings = mSettings.getCurrent();
        final boolean showSuggestions;
+5 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import com.android.inputmethod.compat.AppWorkaroundsUtils;
import com.android.inputmethod.latin.InputAttributes;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.RichInputMethodManager;
import com.android.inputmethod.latin.SubtypeSwitcher;
import com.android.inputmethod.latin.utils.AsyncResultHolder;
import com.android.inputmethod.latin.utils.ResourceUtils;
import com.android.inputmethod.latin.utils.TargetPackageInfoGetterTask;
@@ -122,7 +123,10 @@ public final class SettingsValues {
        mKeyPreviewPopupOn = Settings.readKeyPreviewPopupEnabled(prefs, res);
        mSlidingKeyInputPreviewEnabled = prefs.getBoolean(
                DebugSettings.PREF_SLIDING_KEY_INPUT_PREVIEW, true);
        mShowsVoiceInputKey = needsToShowVoiceInputKey(prefs, res);
        mShowsVoiceInputKey = needsToShowVoiceInputKey(prefs, res)
                && !mInputAttributes.mIsPasswordField
                && !mInputAttributes.hasNoMicrophoneKeyOption()
                && SubtypeSwitcher.getInstance().isShortcutImeEnabled();
        final String autoCorrectionThresholdRawValue = prefs.getString(
                Settings.PREF_AUTO_CORRECTION_THRESHOLD,
                res.getString(R.string.auto_correction_threshold_mode_index_modest));
+17 −23
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SuggestedWords;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.settings.Settings;
import com.android.inputmethod.latin.settings.SettingsValues;
import com.android.inputmethod.latin.suggestions.MoreSuggestionsView.MoreSuggestionsListener;
import com.android.inputmethod.latin.utils.ImportantNoticeUtils;

@@ -89,19 +90,17 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
    private static class StripVisibilityGroup {
        private final View mSuggestionStripView;
        private final View mSuggestionsStrip;
        private final View mVoiceKey;
        private final View mAddToDictionaryStrip;
        private final View mImportantNoticeStrip;

        public StripVisibilityGroup(final View suggestionStripView,
                final ViewGroup suggestionsStrip, final ImageButton voiceKey,
                final ViewGroup addToDictionaryStrip, final View importantNoticeStrip) {
                final ViewGroup suggestionsStrip, final ViewGroup addToDictionaryStrip,
                final View importantNoticeStrip) {
            mSuggestionStripView = suggestionStripView;
            mSuggestionsStrip = suggestionsStrip;
            mVoiceKey = voiceKey;
            mAddToDictionaryStrip = addToDictionaryStrip;
            mImportantNoticeStrip = importantNoticeStrip;
            showSuggestionsStrip(false /* voiceKeyEnabled */);
            showSuggestionsStrip();
        }

        public void setLayoutDirection(final boolean isRtlLanguage) {
@@ -113,23 +112,20 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
            ViewCompat.setLayoutDirection(mImportantNoticeStrip, layoutDirection);
        }

        public void showSuggestionsStrip(final boolean enableVoiceKey) {
        public void showSuggestionsStrip() {
            mSuggestionsStrip.setVisibility(VISIBLE);
            mVoiceKey.setVisibility(enableVoiceKey ? VISIBLE : INVISIBLE);
            mAddToDictionaryStrip.setVisibility(INVISIBLE);
            mImportantNoticeStrip.setVisibility(INVISIBLE);
        }

        public void showAddToDictionaryStrip() {
            mSuggestionsStrip.setVisibility(INVISIBLE);
            mVoiceKey.setVisibility(INVISIBLE);
            mAddToDictionaryStrip.setVisibility(VISIBLE);
            mImportantNoticeStrip.setVisibility(INVISIBLE);
        }

        public void showImportantNoticeStrip(final boolean enableVoiceKey) {
        public void showImportantNoticeStrip() {
            mSuggestionsStrip.setVisibility(INVISIBLE);
            mVoiceKey.setVisibility(enableVoiceKey ? VISIBLE : INVISIBLE);
            mAddToDictionaryStrip.setVisibility(INVISIBLE);
            mImportantNoticeStrip.setVisibility(VISIBLE);
        }
@@ -159,7 +155,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
        mVoiceKey = (ImageButton)findViewById(R.id.suggestions_strip_voice_key);
        mAddToDictionaryStrip = (ViewGroup)findViewById(R.id.add_to_dictionary_strip);
        mImportantNoticeStrip = findViewById(R.id.important_notice_strip);
        mStripVisibilityGroup = new StripVisibilityGroup(this, mSuggestionsStrip, mVoiceKey,
        mStripVisibilityGroup = new StripVisibilityGroup(this, mSuggestionsStrip,
                mAddToDictionaryStrip, mImportantNoticeStrip);

        for (int pos = 0; pos < SuggestedWords.MAX_SUGGESTIONS; pos++) {
@@ -207,15 +203,13 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
        mMainKeyboardView = (MainKeyboardView)inputView.findViewById(R.id.keyboard_view);
    }

    private boolean isVoiceKeyEnabled() {
        if (mMainKeyboardView == null) {
            return false;
        }
        final Keyboard keyboard = mMainKeyboardView.getKeyboard();
        if (keyboard == null) {
            return false;
        }
        return keyboard.mId.mHasShortcutKey;
    public void updateVisibility(final boolean shouldBeVisible, final boolean isFullscreenMode) {
        final int visibility = shouldBeVisible ? VISIBLE : (isFullscreenMode ? GONE : INVISIBLE);
        setVisibility(visibility);
        final SettingsValues currentSettingsValues = Settings.getInstance().getCurrent();
        final boolean shouldShowVoiceKey = (currentSettingsValues != null)
                && currentSettingsValues.mShowsVoiceInputKey;
        mVoiceKey.setVisibility(shouldShowVoiceKey ? VISIBLE : INVISIBLE);
    }

    public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) {
@@ -224,7 +218,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
        mSuggestedWords = suggestedWords;
        mSuggestionsCountInStrip = mLayoutHelper.layoutAndReturnSuggestionCountInStrip(
                mSuggestedWords, mSuggestionsStrip, this);
        mStripVisibilityGroup.showSuggestionsStrip(isVoiceKeyEnabled());
        mStripVisibilityGroup.showSuggestionsStrip();
    }

    public int setMoreSuggestionsHeight(final int remainingHeight) {
@@ -271,7 +265,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
            dismissMoreSuggestionsPanel();
        }
        mLayoutHelper.layoutImportantNotice(mImportantNoticeStrip, importantNoticeTitle);
        mStripVisibilityGroup.showImportantNoticeStrip(isVoiceKeyEnabled());
        mStripVisibilityGroup.showImportantNoticeStrip();
        mImportantNoticeStrip.setOnClickListener(this);
        return true;
    }
@@ -279,7 +273,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
    public void clear() {
        mSuggestionsStrip.removeAllViews();
        removeAllDebugInfoViews();
        mStripVisibilityGroup.showSuggestionsStrip(false /* enableVoiceKey */);
        mStripVisibilityGroup.showSuggestionsStrip();
        dismissMoreSuggestionsPanel();
    }