1 package com.android.systemui.battery 2 3 import com.android.systemui.qs.QsEventLogger 4 import com.android.systemui.qs.pipeline.shared.TileSpec 5 import com.android.systemui.qs.shared.model.TileCategory 6 import com.android.systemui.qs.tileimpl.QSTileImpl 7 import com.android.systemui.qs.tiles.BatterySaverTile 8 import com.android.systemui.qs.tiles.base.interactor.QSTileAvailabilityInteractor 9 import com.android.systemui.qs.tiles.base.viewmodel.QSTileViewModelFactory 10 import com.android.systemui.qs.tiles.impl.battery.domain.interactor.BatterySaverTileDataInteractor 11 import com.android.systemui.qs.tiles.impl.battery.domain.interactor.BatterySaverTileUserActionInteractor 12 import com.android.systemui.qs.tiles.impl.battery.domain.model.BatterySaverTileModel 13 import com.android.systemui.qs.tiles.impl.battery.ui.BatterySaverTileMapper 14 import com.android.systemui.qs.tiles.viewmodel.QSTileConfig 15 import com.android.systemui.qs.tiles.viewmodel.QSTileUIConfig 16 import com.android.systemui.qs.tiles.viewmodel.QSTileViewModel 17 import com.android.systemui.res.R 18 import dagger.Binds 19 import dagger.Module 20 import dagger.Provides 21 import dagger.multibindings.IntoMap 22 import dagger.multibindings.StringKey 23 24 @Module 25 interface BatterySaverModule { 26 27 /** Inject BatterySaverTile into tileMap in QSModule */ 28 @Binds 29 @IntoMap 30 @StringKey(BatterySaverTile.TILE_SPEC) bindBatterySaverTilenull31 fun bindBatterySaverTile(batterySaverTile: BatterySaverTile): QSTileImpl<*> 32 33 @Binds 34 @IntoMap 35 @StringKey(BATTERY_SAVER_TILE_SPEC) 36 fun provideBatterySaverAvailabilityInteractor( 37 impl: BatterySaverTileDataInteractor 38 ): QSTileAvailabilityInteractor 39 40 companion object { 41 private const val BATTERY_SAVER_TILE_SPEC = "battery" 42 43 @Provides 44 @IntoMap 45 @StringKey(BATTERY_SAVER_TILE_SPEC) 46 fun provideBatterySaverTileConfig(uiEventLogger: QsEventLogger): QSTileConfig = 47 QSTileConfig( 48 tileSpec = TileSpec.create(BATTERY_SAVER_TILE_SPEC), 49 uiConfig = 50 QSTileUIConfig.Resource( 51 iconRes = R.drawable.qs_battery_saver_icon_off, 52 labelRes = R.string.battery_detail_switch_title, 53 ), 54 instanceId = uiEventLogger.getNewInstanceId(), 55 category = TileCategory.UTILITIES, 56 ) 57 58 /** Inject BatterySaverTile into tileViewModelMap in QSModule */ 59 @Provides 60 @IntoMap 61 @StringKey(BATTERY_SAVER_TILE_SPEC) 62 fun provideBatterySaverTileViewModel( 63 factory: QSTileViewModelFactory.Static<BatterySaverTileModel>, 64 mapper: BatterySaverTileMapper, 65 stateInteractor: BatterySaverTileDataInteractor, 66 userActionInteractor: BatterySaverTileUserActionInteractor 67 ): QSTileViewModel = 68 factory.create( 69 TileSpec.create(BATTERY_SAVER_TILE_SPEC), 70 userActionInteractor, 71 stateInteractor, 72 mapper, 73 ) 74 } 75 } 76