Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96ca1e01 authored by Andre Le's avatar Andre Le Committed by Android (Google) Code Review
Browse files

Merge "QSDetailedView: Add ModesDetailsViewModel to modes tile" into main

parents 92d73a97 04c70729
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -49,6 +49,7 @@ import com.android.systemui.statusbar.policy.data.repository.zenModeRepository
import com.android.systemui.statusbar.policy.domain.interactor.zenModeInteractor
import com.android.systemui.statusbar.policy.domain.interactor.zenModeInteractor
import com.android.systemui.statusbar.policy.ui.dialog.ModesDialogDelegate
import com.android.systemui.statusbar.policy.ui.dialog.ModesDialogDelegate
import com.android.systemui.statusbar.policy.ui.dialog.modesDialogEventLogger
import com.android.systemui.statusbar.policy.ui.dialog.modesDialogEventLogger
import com.android.systemui.statusbar.policy.ui.dialog.viewmodel.modesDialogViewModel
import com.android.systemui.testKosmos
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.any
import com.android.systemui.util.settings.FakeSettings
import com.android.systemui.util.settings.FakeSettings
@@ -146,6 +147,7 @@ class ModesTileTest : SysuiTestCase() {
                tileDataInteractor,
                tileDataInteractor,
                mapper,
                mapper,
                userActionInteractor,
                userActionInteractor,
                kosmos.modesDialogViewModel,
            )
            )


        underTest.initialize()
        underTest.initialize()
+11 −0
Original line number Original line Diff line number Diff line
@@ -35,12 +35,14 @@ import com.android.systemui.modes.shared.ModesUiIcons
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.plugins.qs.QSTile
import com.android.systemui.plugins.qs.QSTile
import com.android.systemui.plugins.qs.TileDetailsViewModel
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.qs.QSHost
import com.android.systemui.qs.QSHost
import com.android.systemui.qs.QsEventLogger
import com.android.systemui.qs.QsEventLogger
import com.android.systemui.qs.asQSTileIcon
import com.android.systemui.qs.asQSTileIcon
import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.qs.tileimpl.QSTileImpl
import com.android.systemui.qs.tileimpl.QSTileImpl
import com.android.systemui.qs.tiles.dialog.ModesDetailsViewModel
import com.android.systemui.qs.tiles.impl.modes.domain.interactor.ModesTileDataInteractor
import com.android.systemui.qs.tiles.impl.modes.domain.interactor.ModesTileDataInteractor
import com.android.systemui.qs.tiles.impl.modes.domain.interactor.ModesTileUserActionInteractor
import com.android.systemui.qs.tiles.impl.modes.domain.interactor.ModesTileUserActionInteractor
import com.android.systemui.qs.tiles.impl.modes.domain.model.ModesTileModel
import com.android.systemui.qs.tiles.impl.modes.domain.model.ModesTileModel
@@ -48,6 +50,7 @@ import com.android.systemui.qs.tiles.impl.modes.ui.ModesTileMapper
import com.android.systemui.qs.tiles.viewmodel.QSTileConfigProvider
import com.android.systemui.qs.tiles.viewmodel.QSTileConfigProvider
import com.android.systemui.qs.tiles.viewmodel.QSTileState
import com.android.systemui.qs.tiles.viewmodel.QSTileState
import com.android.systemui.res.R
import com.android.systemui.res.R
import com.android.systemui.statusbar.policy.ui.dialog.viewmodel.ModesDialogViewModel
import javax.inject.Inject
import javax.inject.Inject
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.runBlocking


@@ -67,6 +70,7 @@ constructor(
    private val dataInteractor: ModesTileDataInteractor,
    private val dataInteractor: ModesTileDataInteractor,
    private val tileMapper: ModesTileMapper,
    private val tileMapper: ModesTileMapper,
    private val userActionInteractor: ModesTileUserActionInteractor,
    private val userActionInteractor: ModesTileUserActionInteractor,
    private val modesDialogViewModel: ModesDialogViewModel,
) :
) :
    QSTileImpl<QSTile.State>(
    QSTileImpl<QSTile.State>(
        host,
        host,
@@ -114,6 +118,13 @@ constructor(
        userActionInteractor.handleToggleClick(model)
        userActionInteractor.handleToggleClick(model)
    }
    }


    override fun getDetailsViewModel(): TileDetailsViewModel {
        return ModesDetailsViewModel(
            onSettingsClick = { userActionInteractor.handleLongClick(null) },
            viewModel = modesDialogViewModel,
        )
    }

    override fun getLongClickIntent(): Intent = userActionInteractor.longClickIntent
    override fun getLongClickIntent(): Intent = userActionInteractor.longClickIntent


    @VisibleForTesting
    @VisibleForTesting
+48 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.qs.tiles.dialog

import androidx.compose.runtime.Composable
import com.android.systemui.plugins.qs.TileDetailsViewModel
import com.android.systemui.statusbar.policy.ui.dialog.composable.ModeTileGrid
import com.android.systemui.statusbar.policy.ui.dialog.viewmodel.ModesDialogViewModel

/** The view model used for the modes details view in the Quick Settings */
class ModesDetailsViewModel(
    private val onSettingsClick: () -> Unit,
    private val viewModel: ModesDialogViewModel,
) : TileDetailsViewModel() {
    @Composable
    override fun GetContentView() {
        // TODO(b/378513940): Finish implementing this function.
        ModeTileGrid(viewModel = viewModel)
    }

    override fun clickOnSettingsButton() {
        onSettingsClick()
    }

    override fun getTitle(): String {
        // TODO(b/388321032): Replace this string with a string in a translatable xml file.
        return "Modes"
    }

    override fun getSubTitle(): String {
        // TODO(b/388321032): Replace this string with a string in a translatable xml file.
        return "Silences interruptions from people and apps in different circumstances"
    }
}
+5 −1
Original line number Original line Diff line number Diff line
@@ -54,7 +54,7 @@ constructor(
                    handleToggleClick(input.data)
                    handleToggleClick(input.data)
                }
                }
                is QSTileUserAction.LongClick -> {
                is QSTileUserAction.LongClick -> {
                    qsTileIntentUserInputHandler.handle(action.expandable, longClickIntent)
                    handleLongClick(action.expandable)
                }
                }
            }
            }
        }
        }
@@ -95,6 +95,10 @@ constructor(
        }
        }
    }
    }


    fun handleLongClick(expandable: Expandable?) {
        qsTileIntentUserInputHandler.handle(expandable, longClickIntent)
    }

    companion object {
    companion object {
        const val TAG = "ModesTileUserActionInteractor"
        const val TAG = "ModesTileUserActionInteractor"
    }
    }