Loading packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt +68 −82 Original line number Diff line number Diff line Loading @@ -31,9 +31,6 @@ import androidx.dynamicanimation.animation.SpringAnimation import androidx.dynamicanimation.animation.SpringForce import com.android.internal.R as internalR import com.android.settingslib.Utils import com.android.systemui.lifecycle.WindowLifecycleState import com.android.systemui.lifecycle.repeatWhenAttached import com.android.systemui.lifecycle.viewModel import com.android.systemui.res.R import com.android.systemui.util.children import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope Loading @@ -45,6 +42,7 @@ import com.android.systemui.volume.dialog.ringer.ui.viewmodel.RingerViewModelSta import com.android.systemui.volume.dialog.ringer.ui.viewmodel.VolumeDialogRingerDrawerViewModel import com.android.systemui.volume.dialog.ui.utils.suspendAnimate import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach Loading @@ -55,7 +53,7 @@ private const val CLOSE_DRAWER_DELAY = 300L @VolumeDialogScope class VolumeDialogRingerViewBinder @Inject constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Factory) { constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) { private val roundnessSpringForce = SpringForce(0F).apply { stiffness = 800F Loading @@ -68,19 +66,11 @@ constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Fact } private val rgbEvaluator = ArgbEvaluator() fun bind(view: View) { with(view) { val volumeDialogBackgroundView = requireViewById<View>(R.id.volume_dialog_background) val drawerContainer = requireViewById<MotionLayout>(R.id.volume_ringer_drawer) val unselectedButtonUiModel = RingerButtonUiModel.getUnselectedButton(context) val selectedButtonUiModel = RingerButtonUiModel.getSelectedButton(context) repeatWhenAttached { viewModel( traceName = "VolumeDialogRingerViewBinder", minWindowLifecycleState = WindowLifecycleState.ATTACHED, factory = { viewModelFactory.create() }, ) { viewModel -> fun CoroutineScope.bind(view: View) { val volumeDialogBackgroundView = view.requireViewById<View>(R.id.volume_dialog_background) val drawerContainer = view.requireViewById<MotionLayout>(R.id.volume_ringer_drawer) val unselectedButtonUiModel = RingerButtonUiModel.getUnselectedButton(view.context) val selectedButtonUiModel = RingerButtonUiModel.getSelectedButton(view.context) viewModel.ringerViewModel .onEach { ringerState -> when (ringerState) { Loading @@ -102,6 +92,7 @@ constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Fact R.drawable.volume_dialog_background ) } is RingerDrawerState.Closed -> { if ( uiModel.selectedButton.ringerMode == Loading @@ -113,16 +104,14 @@ constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Fact selectedButtonUiModel, unselectedButtonUiModel, ) { drawerContainer.closeDrawer( uiModel.currentButtonIndex ) volumeDialogBackgroundView .setBackgroundResource( drawerContainer.closeDrawer(uiModel.currentButtonIndex) volumeDialogBackgroundView.setBackgroundResource( R.drawable.volume_dialog_background ) } } } is RingerDrawerState.Open -> { drawerContainer.animateAndBindDrawerButtons( viewModel, Loading @@ -135,8 +124,7 @@ constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Fact R.id.volume_dialog_ringer_drawer_open ) if ( uiModel.currentButtonIndex != uiModel.availableButtons.size - 1 uiModel.currentButtonIndex != uiModel.availableButtons.size - 1 ) { volumeDialogBackgroundView.setBackgroundResource( R.drawable.volume_dialog_background_small_radius Loading @@ -145,6 +133,7 @@ constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Fact } } } is RingerViewModelState.Unavailable -> { drawerContainer.visibility = View.GONE volumeDialogBackgroundView.setBackgroundResource( Loading @@ -155,9 +144,6 @@ constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Fact } .launchIn(this) } } } } private suspend fun MotionLayout.animateAndBindDrawerButtons( viewModel: VolumeDialogRingerDrawerViewModel, Loading packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt +4 −8 Original line number Diff line number Diff line Loading @@ -32,12 +32,12 @@ import com.android.systemui.res.R import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.volume.Events import com.android.systemui.volume.dialog.dagger.scope.VolumeDialog import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope import com.android.systemui.volume.dialog.domain.interactor.VolumeDialogVisibilityInteractor import com.android.systemui.volume.dialog.ringer.domain.VolumeDialogRingerInteractor import com.android.systemui.volume.dialog.ringer.shared.model.VolumeDialogRingerModel import com.android.systemui.volume.dialog.shared.VolumeDialogLogger import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow Loading @@ -50,8 +50,9 @@ import kotlinx.coroutines.launch private const val SHOW_RINGER_TOAST_COUNT = 12 @VolumeDialogScope class VolumeDialogRingerDrawerViewModel @AssistedInject @Inject constructor( @Application private val applicationContext: Context, @VolumeDialog private val coroutineScope: CoroutineScope, Loading Loading @@ -262,9 +263,4 @@ constructor( interactor.updateToastCount(seenToastCount) } } @AssistedFactory interface Factory { fun create(): VolumeDialogRingerDrawerViewModel } } Loading
packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt +68 −82 Original line number Diff line number Diff line Loading @@ -31,9 +31,6 @@ import androidx.dynamicanimation.animation.SpringAnimation import androidx.dynamicanimation.animation.SpringForce import com.android.internal.R as internalR import com.android.settingslib.Utils import com.android.systemui.lifecycle.WindowLifecycleState import com.android.systemui.lifecycle.repeatWhenAttached import com.android.systemui.lifecycle.viewModel import com.android.systemui.res.R import com.android.systemui.util.children import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope Loading @@ -45,6 +42,7 @@ import com.android.systemui.volume.dialog.ringer.ui.viewmodel.RingerViewModelSta import com.android.systemui.volume.dialog.ringer.ui.viewmodel.VolumeDialogRingerDrawerViewModel import com.android.systemui.volume.dialog.ui.utils.suspendAnimate import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach Loading @@ -55,7 +53,7 @@ private const val CLOSE_DRAWER_DELAY = 300L @VolumeDialogScope class VolumeDialogRingerViewBinder @Inject constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Factory) { constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) { private val roundnessSpringForce = SpringForce(0F).apply { stiffness = 800F Loading @@ -68,19 +66,11 @@ constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Fact } private val rgbEvaluator = ArgbEvaluator() fun bind(view: View) { with(view) { val volumeDialogBackgroundView = requireViewById<View>(R.id.volume_dialog_background) val drawerContainer = requireViewById<MotionLayout>(R.id.volume_ringer_drawer) val unselectedButtonUiModel = RingerButtonUiModel.getUnselectedButton(context) val selectedButtonUiModel = RingerButtonUiModel.getSelectedButton(context) repeatWhenAttached { viewModel( traceName = "VolumeDialogRingerViewBinder", minWindowLifecycleState = WindowLifecycleState.ATTACHED, factory = { viewModelFactory.create() }, ) { viewModel -> fun CoroutineScope.bind(view: View) { val volumeDialogBackgroundView = view.requireViewById<View>(R.id.volume_dialog_background) val drawerContainer = view.requireViewById<MotionLayout>(R.id.volume_ringer_drawer) val unselectedButtonUiModel = RingerButtonUiModel.getUnselectedButton(view.context) val selectedButtonUiModel = RingerButtonUiModel.getSelectedButton(view.context) viewModel.ringerViewModel .onEach { ringerState -> when (ringerState) { Loading @@ -102,6 +92,7 @@ constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Fact R.drawable.volume_dialog_background ) } is RingerDrawerState.Closed -> { if ( uiModel.selectedButton.ringerMode == Loading @@ -113,16 +104,14 @@ constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Fact selectedButtonUiModel, unselectedButtonUiModel, ) { drawerContainer.closeDrawer( uiModel.currentButtonIndex ) volumeDialogBackgroundView .setBackgroundResource( drawerContainer.closeDrawer(uiModel.currentButtonIndex) volumeDialogBackgroundView.setBackgroundResource( R.drawable.volume_dialog_background ) } } } is RingerDrawerState.Open -> { drawerContainer.animateAndBindDrawerButtons( viewModel, Loading @@ -135,8 +124,7 @@ constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Fact R.id.volume_dialog_ringer_drawer_open ) if ( uiModel.currentButtonIndex != uiModel.availableButtons.size - 1 uiModel.currentButtonIndex != uiModel.availableButtons.size - 1 ) { volumeDialogBackgroundView.setBackgroundResource( R.drawable.volume_dialog_background_small_radius Loading @@ -145,6 +133,7 @@ constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Fact } } } is RingerViewModelState.Unavailable -> { drawerContainer.visibility = View.GONE volumeDialogBackgroundView.setBackgroundResource( Loading @@ -155,9 +144,6 @@ constructor(private val viewModelFactory: VolumeDialogRingerDrawerViewModel.Fact } .launchIn(this) } } } } private suspend fun MotionLayout.animateAndBindDrawerButtons( viewModel: VolumeDialogRingerDrawerViewModel, Loading
packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt +4 −8 Original line number Diff line number Diff line Loading @@ -32,12 +32,12 @@ import com.android.systemui.res.R import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.volume.Events import com.android.systemui.volume.dialog.dagger.scope.VolumeDialog import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope import com.android.systemui.volume.dialog.domain.interactor.VolumeDialogVisibilityInteractor import com.android.systemui.volume.dialog.ringer.domain.VolumeDialogRingerInteractor import com.android.systemui.volume.dialog.ringer.shared.model.VolumeDialogRingerModel import com.android.systemui.volume.dialog.shared.VolumeDialogLogger import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow Loading @@ -50,8 +50,9 @@ import kotlinx.coroutines.launch private const val SHOW_RINGER_TOAST_COUNT = 12 @VolumeDialogScope class VolumeDialogRingerDrawerViewModel @AssistedInject @Inject constructor( @Application private val applicationContext: Context, @VolumeDialog private val coroutineScope: CoroutineScope, Loading Loading @@ -262,9 +263,4 @@ constructor( interactor.updateToastCount(seenToastCount) } } @AssistedFactory interface Factory { fun create(): VolumeDialogRingerDrawerViewModel } }