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

Commit d6196fe1 authored by Jiaming Cheng's avatar Jiaming Cheng
Browse files

[QSDetailedView] Implement the cast details subtitle showing logic

Hide the subtitle from the xml view.

When adapter list is not empty anymore, remove the subtitle. (set
the subtitle to "").

Bug: 378513588
Flag: com.android.systemui.qs_tile_detailed_view
Test: Existing unit tests still pass.
Change-Id: I3f8573018dbff035b0fb507cbc3d88bfcae4e5f1
parent 83e0b5ee
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -38,7 +38,8 @@
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center" />
        <TextView android:layout_width="wrap_content"
        <TextView android:id="@+id/empty_subtitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:paddingStart="16dp"
+1 −0
Original line number Diff line number Diff line
@@ -1748,6 +1748,7 @@
  <java-symbol type="layout" name="media_route_controller_dialog" />
  <java-symbol type="layout" name="media_route_list_item" />
  <java-symbol type="id" name="media_route_list" />
  <java-symbol type="id" name="empty_subtitle" />
  <java-symbol type="id" name="media_route_volume_layout" />
  <java-symbol type="id" name="media_route_volume_slider" />
  <java-symbol type="id" name="media_route_extended_settings_button" />
+13 −2
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.qs.tiles.dialog
import android.content.Context
import android.database.DataSetObserver
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.ListAdapter
@@ -52,7 +53,7 @@ fun CastDetailsContent(castDetailsViewModel: CastDetailsViewModel) {
        val contentManager: MediaRouteChooserContentManager = remember {
            castDetailsViewModel.createChooserContentManager()
        }
        CastChooserView(contentManager)
        CastChooserView(contentManager, castDetailsViewModel)
        return
    }

@@ -75,7 +76,10 @@ fun CastDetailsContent(castDetailsViewModel: CastDetailsViewModel) {
}

@Composable
fun CastChooserView(contentManager: MediaRouteChooserContentManager) {
fun CastChooserView(
    contentManager: MediaRouteChooserContentManager,
    castDetailsViewModel: CastDetailsViewModel,
) {
    var dataObserver: DataSetObserver? = null
    var adapter: ListAdapter? = null

@@ -102,12 +106,19 @@ fun CastChooserView(contentManager: MediaRouteChooserContentManager) {

            customizeView(listView)

            // Hide the subtitle TextView in the empty view.
            val emptyViewSubtitle = view.findViewById<TextView>(R.id.empty_subtitle)
            emptyViewSubtitle.visibility = View.GONE

            // Listen to the adapter data change and `customizeView` when changes occur.
            adapter = listView.adapter
            dataObserver =
                object : DataSetObserver() {
                    override fun onChanged() {
                        super.onChanged()
                        if (adapter?.count != 0) {
                            castDetailsViewModel.setMediaRouteDeviceSubTitle("")
                        }
                        customizeView(listView)
                    }
                }
+6 −1
Original line number Diff line number Diff line
@@ -44,7 +44,8 @@ constructor(
    MediaRouteControllerContentManager.Delegate,
    TileDetailsViewModel {
    private var detailsViewTitle by mutableStateOf(DEFAULT_TITLE)
    private val detailsViewSubTitle = if (shouldShowChooserDialog()) DEFAULT_SUBTITLE else ""
    private var detailsViewSubTitle by
        mutableStateOf(if (shouldShowChooserDialog()) DEFAULT_SUBTITLE else "")
    var deviceIcon: Drawable? by mutableStateOf(null)

    @AssistedFactory
@@ -66,6 +67,10 @@ constructor(
        return MediaRouteControllerContentManager(context, this)
    }

    fun setMediaRouteDeviceSubTitle(title: CharSequence?) {
        detailsViewSubTitle = title.toString()
    }

    override fun clickOnSettingsButton() {
        qsTileIntentUserActionHandler.handle(
            /* expandable= */ null,