1 /* 2 * Copyright (C) 2021 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.systemui.qs 18 19 import android.os.UserManager 20 import com.android.internal.logging.MetricsLogger 21 import com.android.internal.logging.UiEventLogger 22 import com.android.systemui.globalactions.GlobalActionsDialogLite 23 import com.android.systemui.plugins.ActivityStarter 24 import com.android.systemui.plugins.FalsingManager 25 import com.android.systemui.qs.FooterActionsController.ExpansionState 26 import com.android.systemui.qs.dagger.QSFlagsModule 27 import com.android.systemui.statusbar.phone.MultiUserSwitchController 28 import com.android.systemui.statusbar.policy.DeviceProvisionedController 29 import com.android.systemui.statusbar.policy.UserInfoController 30 import com.android.systemui.tuner.TunerService 31 import javax.inject.Inject 32 import javax.inject.Named 33 34 class FooterActionsControllerBuilder @Inject constructor( 35 private val qsPanelController: QSPanelController, 36 private val activityStarter: ActivityStarter, 37 private val userManager: UserManager, 38 private val userInfoController: UserInfoController, 39 private val multiUserSwitchControllerFactory: MultiUserSwitchController.Factory, 40 private val deviceProvisionedController: DeviceProvisionedController, 41 private val falsingManager: FalsingManager, 42 private val metricsLogger: MetricsLogger, 43 private val tunerService: TunerService, 44 private val globalActionsDialog: GlobalActionsDialogLite, 45 private val uiEventLogger: UiEventLogger, 46 @Named(QSFlagsModule.PM_LITE_ENABLED) private val showPMLiteButton: Boolean 47 ) { 48 private lateinit var view: FooterActionsView 49 private lateinit var buttonsVisibleState: ExpansionState 50 51 fun withView(view: FooterActionsView): FooterActionsControllerBuilder { 52 this.view = view 53 return this 54 } 55 56 fun withButtonsVisibleWhen(state: ExpansionState): FooterActionsControllerBuilder { 57 buttonsVisibleState = state 58 return this 59 } 60 61 fun build(): FooterActionsController { 62 return FooterActionsController(view, qsPanelController, activityStarter, userManager, 63 userInfoController, multiUserSwitchControllerFactory.create(view), 64 deviceProvisionedController, falsingManager, metricsLogger, tunerService, 65 globalActionsDialog, uiEventLogger, showPMLiteButton, buttonsVisibleState) 66 } 67 }