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