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