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

Commit 1d36f711 authored by Jiaming Cheng's avatar Jiaming Cheng Committed by Android (Google) Code Review
Browse files

Merge "[QSDetailedView] Make details title/sub-title mutable states of string" into main

parents 2e85cb09 48a702f3
Loading
Loading
Loading
Loading
+29 −33
Original line number Diff line number Diff line
@@ -16,11 +16,9 @@

package com.android.systemui.qs.panels.ui.viewmodel


import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.qs.FakeQSTile
import com.android.systemui.qs.pipeline.data.repository.tileSpecRepository
@@ -48,12 +46,10 @@ class DetailsViewModelTest : SysuiTestCase() {
    }

    @Test
    fun changeTileDetailsViewModel() = with(kosmos) {
    fun changeTileDetailsViewModel() =
        with(kosmos) {
            testScope.runTest {
            val specs = listOf(
                spec,
                specNoDetails,
            )
                val specs = listOf(spec, specNoDetails)
                tileSpecRepository.setTiles(0, specs)
                runCurrent()

@@ -68,7 +64,7 @@ class DetailsViewModelTest : SysuiTestCase() {
                // Click on the tile who has the `spec`.
                assertThat(underTest.onTileClicked(spec)).isTrue()
                assertThat(underTest.activeTileDetails).isNotNull()
            assertThat(underTest.activeTileDetails?.getTitle()).isEqualTo("internet")
                assertThat(underTest.activeTileDetails?.title).isEqualTo("internet")

                // Click on a tile who dose not have a valid spec.
                assertThat(underTest.onTileClicked(null)).isFalse()
@@ -77,7 +73,7 @@ class DetailsViewModelTest : SysuiTestCase() {
                // Click again on the tile who has the `spec`.
                assertThat(underTest.onTileClicked(spec)).isTrue()
                assertThat(underTest.activeTileDetails).isNotNull()
            assertThat(underTest.activeTileDetails?.getTitle()).isEqualTo("internet")
                assertThat(underTest.activeTileDetails?.title).isEqualTo("internet")

                // Click on a tile who dose not have a detailed view.
                assertThat(underTest.onTileClicked(specNoDetails)).isFalse()
+2 −2
Original line number Diff line number Diff line
@@ -691,11 +691,11 @@ class CurrentTilesInteractorImplTest : SysuiTestCase() {
                var currentModel: TileDetailsViewModel? = null
                val setCurrentModel = { model: TileDetailsViewModel? -> currentModel = model }
                tiles!![0].tile.getDetailsViewModel(setCurrentModel)
                assertThat(currentModel?.getTitle()).isEqualTo("a")
                assertThat(currentModel?.title).isEqualTo("a")

                currentModel = null
                tiles!![1].tile.getDetailsViewModel(setCurrentModel)
                assertThat(currentModel?.getTitle()).isEqualTo("b")
                assertThat(currentModel?.title).isEqualTo("b")

                currentModel = null
                tiles!![2].tile.getDetailsViewModel(setCurrentModel)
+5 −7
Original line number Diff line number Diff line
@@ -16,15 +16,13 @@

package com.android.systemui.plugins.qs

/**
 * The base view model class for rendering the Tile's TileDetailsView.
 */
abstract class TileDetailsViewModel {
/** The view model interface for rendering the Tile's TileDetailsView. */
interface TileDetailsViewModel {
    // The callback when the settings button is clicked. Currently this is the same as the on tile
    // long press callback
    abstract fun clickOnSettingsButton()
    fun clickOnSettingsButton()

    abstract fun getTitle(): String
    val title: String

    abstract fun getSubTitle(): String
    val subTitle: String
}
+5 −9
Original line number Diff line number Diff line
@@ -21,18 +21,14 @@ import com.android.systemui.plugins.qs.TileDetailsViewModel
class BluetoothDetailsViewModel(
    private val onSettingsClick: () -> Unit,
    val detailsContentViewModel: BluetoothDetailsContentViewModel,
) : TileDetailsViewModel() {
) : TileDetailsViewModel {
    override fun clickOnSettingsButton() {
        onSettingsClick()
    }

    override fun getTitle(): String {
    // TODO: b/378513956 Update the placeholder text
        return "Bluetooth"
    }
    override val title = "Bluetooth"

    override fun getSubTitle(): String {
    // TODO: b/378513956 Update the placeholder text
        return "Tap to connect or disconnect a device"
    }
    override val subTitle = "Tap to connect or disconnect a device"
}
+5 −2
Original line number Diff line number Diff line
@@ -61,6 +61,9 @@ fun TileDetails(modifier: Modifier = Modifier, detailsViewModel: DetailsViewMode

    DisposableEffect(Unit) { onDispose { detailsViewModel.closeDetailedView() } }

    val title = tileDetailedViewModel.title
    val subTitle = tileDetailedViewModel.subTitle

    Column(
        modifier =
            modifier
@@ -90,7 +93,7 @@ fun TileDetails(modifier: Modifier = Modifier, detailsViewModel: DetailsViewMode
                    )
                }
                Text(
                    text = tileDetailedViewModel.getTitle(),
                    text = title,
                    modifier = Modifier.align(Alignment.CenterVertically),
                    textAlign = TextAlign.Center,
                    style = MaterialTheme.typography.titleLarge,
@@ -110,7 +113,7 @@ fun TileDetails(modifier: Modifier = Modifier, detailsViewModel: DetailsViewMode
                }
            }
            Text(
                text = tileDetailedViewModel.getSubTitle(),
                text = subTitle,
                modifier = Modifier.fillMaxWidth(),
                textAlign = TextAlign.Center,
                style = MaterialTheme.typography.titleSmall,
Loading