1 /* 2 * Copyright (C) 2023 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.dagger 18 19 import com.android.systemui.flags.FeatureFlags 20 import com.android.systemui.flags.Flags 21 import com.android.systemui.qs.QSHost 22 import com.android.systemui.qs.QSHostAdapter 23 import com.android.systemui.qs.QSTileHost 24 import com.android.systemui.qs.QsEventLogger 25 import com.android.systemui.qs.QsEventLoggerImpl 26 import com.android.systemui.qs.pipeline.data.repository.CustomTileAddedRepository 27 import com.android.systemui.qs.pipeline.data.repository.CustomTileAddedSharedPrefsRepository 28 import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractor 29 import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractorImpl 30 import dagger.Binds 31 import dagger.Module 32 import dagger.Provides 33 34 @Module 35 interface QSHostModule { 36 37 @Binds fun provideQsHost(controllerImpl: QSHostAdapter): QSHost 38 39 @Binds fun provideEventLogger(impl: QsEventLoggerImpl): QsEventLogger 40 41 @Module 42 companion object { 43 private const val MAX_QS_INSTANCE_ID = 1 shl 20 44 45 @Provides 46 @JvmStatic 47 fun providePanelInteractor( 48 featureFlags: FeatureFlags, 49 qsHost: QSTileHost, 50 panelInteractorImpl: PanelInteractorImpl 51 ): PanelInteractor { 52 return if (featureFlags.isEnabled(Flags.QS_PIPELINE_NEW_HOST)) { 53 panelInteractorImpl 54 } else { 55 qsHost 56 } 57 } 58 59 @Provides 60 @JvmStatic 61 fun provideCustomTileAddedRepository( 62 featureFlags: FeatureFlags, 63 qsHost: QSTileHost, 64 customTileAddedRepository: CustomTileAddedSharedPrefsRepository 65 ): CustomTileAddedRepository { 66 return if (featureFlags.isEnabled(Flags.QS_PIPELINE_NEW_HOST)) { 67 customTileAddedRepository 68 } else { 69 qsHost 70 } 71 } 72 } 73 } 74