Loading packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml +0 −10 Original line number Diff line number Diff line Loading @@ -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> Loading packages/SystemUI/src/com/android/systemui/qs/FooterActionsController.kt +5 −36 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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, Loading @@ -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 Loading @@ -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()) Loading @@ -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) { Loading @@ -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()) { Loading @@ -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( Loading Loading @@ -215,13 +192,5 @@ class FooterActionsController @Inject constructor( mView.setKeyguardShowing() } fun refreshVisibility(shouldBeVisible: Boolean) { if (shouldBeVisible) { showFooter() } else { hideFooter() } } private fun isTunerEnabled() = tunerService.isTunerEnabled } packages/SystemUI/src/com/android/systemui/qs/FooterActionsControllerBuilder.ktdeleted 100644 → 0 +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 packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java +1 −25 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -49,7 +46,6 @@ import java.util.List; import java.util.concurrent.Executor; import javax.inject.Inject; import javax.inject.Named; /** */ @QSScope Loading Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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]; Loading packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java +1 −4 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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}. Loading @@ -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 Loading
packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml +0 −10 Original line number Diff line number Diff line Loading @@ -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> Loading
packages/SystemUI/src/com/android/systemui/qs/FooterActionsController.kt +5 −36 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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, Loading @@ -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 Loading @@ -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()) Loading @@ -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) { Loading @@ -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()) { Loading @@ -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( Loading Loading @@ -215,13 +192,5 @@ class FooterActionsController @Inject constructor( mView.setKeyguardShowing() } fun refreshVisibility(shouldBeVisible: Boolean) { if (shouldBeVisible) { showFooter() } else { hideFooter() } } private fun isTunerEnabled() = tunerService.isTunerEnabled }
packages/SystemUI/src/com/android/systemui/qs/FooterActionsControllerBuilder.ktdeleted 100644 → 0 +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
packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java +1 −25 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -49,7 +46,6 @@ import java.util.List; import java.util.concurrent.Executor; import javax.inject.Inject; import javax.inject.Named; /** */ @QSScope Loading Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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]; Loading
packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java +1 −4 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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}. Loading @@ -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