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

Commit 1cbf6001 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Remove QQS Footer Actions

Test: manual in handheld and split shade
Test: atest SystemUITests
Bug: 216302612
Change-Id: I4e4cda397ab0e8d0e8b6c19214c893ce5a3e69d9
parent 7315b727
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -57,16 +57,6 @@
            android:focusable="true"
            android:paddingBottom="24dp"
            android:importantForAccessibility="yes">

            <include
                layout="@layout/footer_actions"
                android:id="@+id/qqs_footer_actions"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/qqs_layout_margin_top"
                android:layout_marginStart="@dimen/qs_footer_margin"
                android:layout_marginEnd="@dimen/qs_footer_margin"
                />
        </com.android.systemui.qs.QuickQSPanel>
    </RelativeLayout>

+5 −36
Original line number Diff line number Diff line
@@ -34,8 +34,6 @@ import com.android.systemui.animation.ActivityLaunchAnimator
import com.android.systemui.globalactions.GlobalActionsDialogLite
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.qs.FooterActionsController.ExpansionState.COLLAPSED
import com.android.systemui.qs.FooterActionsController.ExpansionState.EXPANDED
import com.android.systemui.qs.dagger.QSFlagsModule.PM_LITE_ENABLED
import com.android.systemui.settings.UserTracker
import com.android.systemui.statusbar.phone.MultiUserSwitchController
@@ -56,11 +54,11 @@ import javax.inject.Named
 */
class FooterActionsController @Inject constructor(
    view: FooterActionsView,
    multiUserSwitchControllerFactory: MultiUserSwitchController.Factory,
    private val activityStarter: ActivityStarter,
    private val userManager: UserManager,
    private val userTracker: UserTracker,
    private val userInfoController: UserInfoController,
    private val multiUserSwitchController: MultiUserSwitchController,
    private val deviceProvisionedController: DeviceProvisionedController,
    private val falsingManager: FalsingManager,
    private val metricsLogger: MetricsLogger,
@@ -68,13 +66,10 @@ class FooterActionsController @Inject constructor(
    private val globalActionsDialog: GlobalActionsDialogLite,
    private val uiEventLogger: UiEventLogger,
    @Named(PM_LITE_ENABLED) private val showPMLiteButton: Boolean,
    private val buttonsVisibleState: ExpansionState,
    private val globalSetting: GlobalSettings,
    private val handler: Handler
) : ViewController<FooterActionsView>(view) {

    enum class ExpansionState { COLLAPSED, EXPANDED }

    private var listening: Boolean = false

    var expanded = false
@@ -82,6 +77,7 @@ class FooterActionsController @Inject constructor(
    private val settingsButton: SettingsButton = view.findViewById(R.id.settings_button)
    private val settingsButtonContainer: View? = view.findViewById(R.id.settings_button_container)
    private val powerMenuLite: View = view.findViewById(R.id.pm_lite)
    private val multiUserSwitchController = multiUserSwitchControllerFactory.create(view)

    private val onUserInfoChangedListener = OnUserInfoChangedListener { _, picture, _ ->
        val isGuestUser: Boolean = userManager.isGuestUser(KeyguardUpdateMonitor.getCurrentUser())
@@ -99,9 +95,8 @@ class FooterActionsController @Inject constructor(
            }

    private val onClickListener = View.OnClickListener { v ->
        // Don't do anything until views are unhidden. Don't do anything if the tap looks
        // suspicious.
        if (!buttonsVisible() || falsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
        // Don't do anything if the tap looks suspicious.
        if (!expanded || falsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
            return@OnClickListener
        }
        if (v === settingsButton) {
@@ -110,9 +105,7 @@ class FooterActionsController @Inject constructor(
                activityStarter.postQSRunnableDismissingKeyguard {}
                return@OnClickListener
            }
            metricsLogger.action(
                    if (expanded) MetricsProto.MetricsEvent.ACTION_QS_EXPANDED_SETTINGS_LAUNCH
                    else MetricsProto.MetricsEvent.ACTION_QS_COLLAPSED_SETTINGS_LAUNCH)
            metricsLogger.action(MetricsProto.MetricsEvent.ACTION_QS_EXPANDED_SETTINGS_LAUNCH)
            if (settingsButton.isTunerClick) {
                activityStarter.postQSRunnableDismissingKeyguard {
                    if (isTunerEnabled()) {
@@ -135,26 +128,10 @@ class FooterActionsController @Inject constructor(
        }
    }

    private fun buttonsVisible(): Boolean {
        return when (buttonsVisibleState) {
            EXPANDED -> expanded
            COLLAPSED -> !expanded
        }
    }

    override fun onInit() {
        multiUserSwitchController.init()
    }

    fun hideFooter() {
        mView.visibility = View.GONE
    }

    fun showFooter() {
        mView.visibility = View.VISIBLE
        updateView()
    }

    private fun startSettingsActivity() {
        val animationController = settingsButtonContainer?.let {
            ActivityLaunchAnimator.Controller.fromView(
@@ -215,13 +192,5 @@ class FooterActionsController @Inject constructor(
        mView.setKeyguardShowing()
    }

    fun refreshVisibility(shouldBeVisible: Boolean) {
        if (shouldBeVisible) {
            showFooter()
        } else {
            hideFooter()
        }
    }

    private fun isTunerEnabled() = tunerService.isTunerEnabled
}
+0 −74
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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.qs

import android.os.Handler
import android.os.UserManager
import com.android.internal.logging.MetricsLogger
import com.android.internal.logging.UiEventLogger
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.globalactions.GlobalActionsDialogLite
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.qs.FooterActionsController.ExpansionState
import com.android.systemui.qs.dagger.QSFlagsModule
import com.android.systemui.settings.UserTracker
import com.android.systemui.statusbar.phone.MultiUserSwitchController
import com.android.systemui.statusbar.policy.DeviceProvisionedController
import com.android.systemui.statusbar.policy.UserInfoController
import com.android.systemui.tuner.TunerService
import com.android.systemui.util.settings.GlobalSettings
import javax.inject.Inject
import javax.inject.Named

class FooterActionsControllerBuilder @Inject constructor(
    private val activityStarter: ActivityStarter,
    private val userManager: UserManager,
    private val userTracker: UserTracker,
    private val userInfoController: UserInfoController,
    private val multiUserSwitchControllerFactory: MultiUserSwitchController.Factory,
    private val deviceProvisionedController: DeviceProvisionedController,
    private val falsingManager: FalsingManager,
    private val metricsLogger: MetricsLogger,
    private val tunerService: TunerService,
    private val globalActionsDialog: GlobalActionsDialogLite,
    private val uiEventLogger: UiEventLogger,
    @Named(QSFlagsModule.PM_LITE_ENABLED) private val showPMLiteButton: Boolean,
    private val globalSettings: GlobalSettings,
    @Main private val handler: Handler
) {
    private lateinit var view: FooterActionsView
    private lateinit var buttonsVisibleState: ExpansionState

    fun withView(view: FooterActionsView): FooterActionsControllerBuilder {
        this.view = view
        return this
    }

    fun withButtonsVisibleWhen(state: ExpansionState): FooterActionsControllerBuilder {
        buttonsVisibleState = state
        return this
    }

    fun build(): FooterActionsController {
        return FooterActionsController(view, activityStarter, userManager,
                userTracker, userInfoController, multiUserSwitchControllerFactory.create(view),
                deviceProvisionedController, falsingManager, metricsLogger, tunerService,
                globalActionsDialog, uiEventLogger, showPMLiteButton, buttonsVisibleState,
                globalSettings, handler)
    }
}
 No newline at end of file
+1 −25
Original line number Diff line number Diff line
@@ -14,9 +14,6 @@

package com.android.systemui.qs;

import static com.android.systemui.qs.dagger.QSFragmentModule.QQS_FOOTER;
import static com.android.systemui.qs.dagger.QSFragmentModule.QS_FOOTER;

import android.animation.TimeInterpolator;
import android.animation.ValueAnimator;
import android.util.Log;
@@ -49,7 +46,6 @@ import java.util.List;
import java.util.concurrent.Executor;

import javax.inject.Inject;
import javax.inject.Named;

/** */
@QSScope
@@ -88,8 +84,6 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
    private final QSFgsManagerFooter mFgsManagerFooter;
    private final QSSecurityFooter mSecurityFooter;
    private final QS mQs;
    private final View mQSFooterActions;
    private final View mQQSFooterActions;

    @Nullable
    private PagedTileLayout mPagedLayout;
@@ -154,16 +148,12 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
            QuickQSPanelController quickQSPanelController, QSTileHost qsTileHost,
            QSFgsManagerFooter fgsManagerFooter, QSSecurityFooter securityFooter,
            @Main Executor executor, TunerService tunerService,
            QSExpansionPathInterpolator qsExpansionPathInterpolator,
            @Named(QS_FOOTER) FooterActionsView qsFooterActionsView,
            @Named(QQS_FOOTER) FooterActionsView qqsFooterActionsView) {
            QSExpansionPathInterpolator qsExpansionPathInterpolator) {
        mQs = qs;
        mQuickQsPanel = quickPanel;
        mQsPanelController = qsPanelController;
        mQuickQSPanelController = quickQSPanelController;
        mQuickStatusBarHeader = quickStatusBarHeader;
        mQQSFooterActions = qqsFooterActionsView;
        mQSFooterActions = qsFooterActionsView;
        mFgsManagerFooter = fgsManagerFooter;
        mSecurityFooter = securityFooter;
        mHost = qsTileHost;
@@ -476,12 +466,6 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
                    .setListener(this)
                    .build();

            if (mQQSFooterActions.getVisibility() != View.GONE) {
                // only when qqs footer is present (which means split shade mode) it needs to
                // be animated
                updateQQSFooterAnimation();
            }

            // Fade in the security footer and the divider as we reach the final position
            Builder builder = new Builder().setStartDelay(EXPANDED_TILE_DELAY);
            builder.addFloat(mFgsManagerFooter.getView(), "alpha", 0, 1);
@@ -627,14 +611,6 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
        }
    }

    private void updateQQSFooterAnimation() {
        int translationY = getRelativeTranslationY(mQSFooterActions, mQQSFooterActions);
        mQQSFooterActionsAnimator = new TouchAnimator.Builder()
                .addFloat(mQQSFooterActions, "translationY", 0, translationY)
                .build();
        mAnimatedQsViews.add(mQSFooterActions);
    }

    private int getRelativeTranslationY(View view1, View view2) {
        int[] qsPosition = new int[2];
        int[] qqsPosition = new int[2];
+1 −4
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.systemui.qs;

import static com.android.systemui.qs.dagger.QSFragmentModule.QS_FOOTER;

import android.content.ClipData;
import android.content.ClipboardManager;
import android.text.TextUtils;
@@ -33,7 +31,6 @@ import com.android.systemui.settings.UserTracker;
import com.android.systemui.util.ViewController;

import javax.inject.Inject;
import javax.inject.Named;

/**
 * Controller for {@link QSFooterView}.
@@ -58,7 +55,7 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme
            ActivityStarter activityStarter,
            QSPanelController qsPanelController,
            QuickQSPanelController quickQSPanelController,
            @Named(QS_FOOTER) FooterActionsController footerActionsController) {
            FooterActionsController footerActionsController) {
        super(view);
        mUserTracker = userTracker;
        mQsPanelController = qsPanelController;
Loading