• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2025 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.tiles.impl.modes.ui
18 
19 import android.content.res.Resources
20 import android.widget.Switch
21 import com.android.systemui.common.shared.model.Icon
22 import com.android.systemui.qs.tiles.base.shared.model.QSTileConfig
23 import com.android.systemui.qs.tiles.base.shared.model.QSTileState
24 import com.android.systemui.qs.tiles.base.ui.model.QSTileDataToStateMapper
25 import com.android.systemui.qs.tiles.impl.modes.domain.model.ModesDndTileModel
26 import com.android.systemui.res.R
27 import com.android.systemui.shade.ShadeDisplayAware
28 import javax.inject.Inject
29 
30 class ModesDndTileMapper
31 @Inject
32 constructor(@ShadeDisplayAware private val resources: Resources, val theme: Resources.Theme) :
33     QSTileDataToStateMapper<ModesDndTileModel> {
mapnull34     override fun map(config: QSTileConfig, data: ModesDndTileModel): QSTileState =
35         QSTileState.build(resources, theme, config.uiConfig) {
36             val iconResource =
37                 if (data.isActivated) R.drawable.qs_dnd_icon_on else R.drawable.qs_dnd_icon_off
38             icon =
39                 Icon.Loaded(
40                     resources.getDrawable(iconResource, theme),
41                     res = iconResource,
42                     contentDescription = null,
43                 )
44 
45             activationState =
46                 if (data.isActivated) {
47                     QSTileState.ActivationState.ACTIVE
48                 } else {
49                     QSTileState.ActivationState.INACTIVE
50                 }
51             label = resources.getString(R.string.quick_settings_dnd_label)
52             secondaryLabel = data.extraStatus
53             contentDescription = label
54             stateDescription = data.extraStatus
55             supportedActions =
56                 setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK)
57             expandedAccessibilityClass = Switch::class
58         }
59 }
60