1 package com.android.systemui.scene.ui.view
2 
3 import android.content.Context
4 import android.util.AttributeSet
5 import android.view.View
6 import com.android.systemui.scene.shared.model.Scene
7 import com.android.systemui.scene.shared.model.SceneContainerConfig
8 import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
9 
10 /** A root view of the main SysUI window that supports scenes. */
11 class SceneWindowRootView(
12     context: Context,
13     attrs: AttributeSet?,
14 ) :
15     WindowRootView(
16         context,
17         attrs,
18     ) {
19 
20     private lateinit var viewModel: SceneContainerViewModel
21 
22     fun init(
23         viewModel: SceneContainerViewModel,
24         containerConfig: SceneContainerConfig,
25         scenes: Set<Scene>,
26         layoutInsetController: LayoutInsetsController,
27     ) {
28         this.viewModel = viewModel
29         setLayoutInsetsController(layoutInsetController)
30         SceneWindowRootViewBinder.bind(
31             view = this@SceneWindowRootView,
32             viewModel = viewModel,
33             containerConfig = containerConfig,
34             scenes = scenes,
35             onVisibilityChangedInternal = { isVisible ->
36                 super.setVisibility(if (isVisible) View.VISIBLE else View.INVISIBLE)
37             }
38         )
39     }
40 
41     override fun setVisibility(visibility: Int) {
42         // Do nothing. We don't want external callers to invoke this. Instead, we drive our own
43         // visibility from our view-binder.
44     }
45 }
46