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

Commit 4094c84f authored by Sanry Huang's avatar Sanry Huang Committed by android-build-merger
Browse files

Merge "Fix User unable to view the keyboard input" into pi-dev am: 89d55288

am: bc21e9ef

Change-Id: I9672a83e06fa5b023daf9111ba255de51130ec7d
parents 5c6dd95c bc21e9ef
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -42,7 +42,7 @@
            android:singleLine="true"
            android:singleLine="true"
            android:ellipsize="start"
            android:ellipsize="start"
            android:inputType="textShortMessage|textAutoCorrect|textCapSentences"
            android:inputType="textShortMessage|textAutoCorrect|textCapSentences"
            android:imeOptions="actionSend" />
            android:imeOptions="actionSend|flagNoExtractUi|flagNoFullscreen" />


    <FrameLayout
    <FrameLayout
            android:layout_width="wrap_content"
            android:layout_width="wrap_content"
+3 −0
Original line number Original line Diff line number Diff line
@@ -56,6 +56,7 @@ import com.android.systemui.statusbar.phone.ScrimState;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.policy.SmartReplyConstants;
import com.android.systemui.statusbar.policy.SmartReplyConstants;


import java.util.function.Consumer;
import java.util.function.Consumer;
@@ -148,5 +149,7 @@ public class SystemUIFactory {
        providers.put(NotificationEntryManager.class, () -> new NotificationEntryManager(context));
        providers.put(NotificationEntryManager.class, () -> new NotificationEntryManager(context));
        providers.put(KeyguardDismissUtil.class, KeyguardDismissUtil::new);
        providers.put(KeyguardDismissUtil.class, KeyguardDismissUtil::new);
        providers.put(SmartReplyController.class, () -> new SmartReplyController());
        providers.put(SmartReplyController.class, () -> new SmartReplyController());
        providers.put(RemoteInputQuickSettingsDisabler.class,
                () -> new RemoteInputQuickSettingsDisabler(context));
    }
    }
}
}
+7 −0
Original line number Original line Diff line number Diff line
@@ -35,6 +35,7 @@ import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver;
import android.widget.FrameLayout.LayoutParams;
import android.widget.FrameLayout.LayoutParams;


import com.android.systemui.Dependency;
import com.android.systemui.Interpolators;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.R.id;
import com.android.systemui.R.id;
@@ -43,6 +44,7 @@ import com.android.systemui.plugins.qs.QS;
import com.android.systemui.qs.customize.QSCustomizer;
import com.android.systemui.qs.customize.QSCustomizer;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer;
import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.stack.StackStateAnimator;
import com.android.systemui.statusbar.stack.StackStateAnimator;


public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks {
public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks {
@@ -72,6 +74,9 @@ public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks {
    private float mLastQSExpansion = -1;
    private float mLastQSExpansion = -1;
    private boolean mQsDisabled;
    private boolean mQsDisabled;


    private RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler =
            Dependency.get(RemoteInputQuickSettingsDisabler.class);

    @Override
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
            Bundle savedInstanceState) {
            Bundle savedInstanceState) {
@@ -191,6 +196,8 @@ public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks {


    @Override
    @Override
    public void disable(int state1, int state2, boolean animate) {
    public void disable(int state1, int state2, boolean animate) {
        state2 = mRemoteInputQuickSettingsDisabler.adjustDisableFlags(state2);

        final boolean disabled = (state2 & DISABLE2_QUICK_SETTINGS) != 0;
        final boolean disabled = (state2 & DISABLE2_QUICK_SETTINGS) != 0;
        if (disabled == mQsDisabled) return;
        if (disabled == mQsDisabled) return;
        mQsDisabled = disabled;
        mQsDisabled = disabled;
+6 −0
Original line number Original line Diff line number Diff line
@@ -234,6 +234,7 @@ import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
import com.android.systemui.statusbar.policy.PreviewInflater;
import com.android.systemui.statusbar.policy.PreviewInflater;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
@@ -399,6 +400,9 @@ public class StatusBar extends SystemUI implements DemoMode,
    private View mPendingRemoteInputView;
    private View mPendingRemoteInputView;
    private View mPendingWorkRemoteInputView;
    private View mPendingWorkRemoteInputView;


    private RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler =
            Dependency.get(RemoteInputQuickSettingsDisabler.class);

    private View mReportRejectedTouch;
    private View mReportRejectedTouch;


    private int mMaxAllowedKeyguardNotifications;
    private int mMaxAllowedKeyguardNotifications;
@@ -1759,6 +1763,8 @@ public class StatusBar extends SystemUI implements DemoMode,
     */
     */
    @Override
    @Override
    public void disable(int state1, int state2, boolean animate) {
    public void disable(int state1, int state2, boolean animate) {
        state2 = mRemoteInputQuickSettingsDisabler.adjustDisableFlags(state2);

        animate &= mStatusBarWindowState != WINDOW_STATE_HIDDEN;
        animate &= mStatusBarWindowState != WINDOW_STATE_HIDDEN;
        final int old1 = mDisabled1;
        final int old1 = mDisabled1;
        final int diff1 = state1 ^ old1;
        final int diff1 = state1 ^ old1;
+82 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * 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.android.systemui.statusbar.policy;

import android.app.StatusBarManager;
import android.content.Context;
import android.content.res.Configuration;

import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.Dependency;
import com.android.systemui.SysUiServiceProvider;
import com.android.systemui.qs.QSFragment;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.StatusBar;

/**
 * Let {@link RemoteInputView} to control the visibility of QuickSetting.
 */
public class RemoteInputQuickSettingsDisabler
        implements ConfigurationController.ConfigurationListener {

    private Context mContext;
    @VisibleForTesting boolean mRemoteInputActive;
    @VisibleForTesting boolean misLandscape;
    private int mLastOrientation;
    @VisibleForTesting CommandQueue mCommandQueue;

    public RemoteInputQuickSettingsDisabler(Context context) {
        mContext = context;
        mCommandQueue = SysUiServiceProvider.getComponent(context, CommandQueue.class);
        mLastOrientation = mContext.getResources().getConfiguration().orientation;
        Dependency.get(ConfigurationController.class).addCallback(this);
    }

    public int adjustDisableFlags(int state) {
        if (mRemoteInputActive && misLandscape) {
            state |= StatusBarManager.DISABLE2_QUICK_SETTINGS;
        }

        return state;
    }

    public void setRemoteInputActive(boolean active){
        if(mRemoteInputActive != active){
            mRemoteInputActive = active;
            recomputeDisableFlags();
        }
    }

    @Override
    public void onConfigChanged(Configuration newConfig) {
        if (newConfig.orientation != mLastOrientation) {
            misLandscape = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE;
            mLastOrientation = newConfig.orientation;
            recomputeDisableFlags();
        }
    }

    /**
     * Reapplies the disable flags. Then the method adjustDisableFlags in this class will be invoked
     * in {@link QSFragment#disable(int, int, boolean)} and
     * {@link StatusBar#disable(int, int, boolean)}
     * to modify the disable flags according to the status of mRemoteInputActive and misLandscape.
     */
    private void recomputeDisableFlags() {
        mCommandQueue.recomputeDisableFlags(true);
    }
}
Loading