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

Commit 58fefa31 authored by Anton Potapov's avatar Anton Potapov Committed by Android (Google) Code Review
Browse files

Merge "Prohibit changing recording target when the recording is ongoing" into main

parents e3605f67 6e8b9be6
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ fun RecordDetailsSettings(
            horizontalAlignment = Alignment.CenterHorizontally,
            modifier = Modifier.padding(vertical = 12.dp).fillMaxWidth(),
        ) {
            AnimatedVisibility(visible = targetViewModel.canChangeTarget) {
                CaptureTargetSelector(
                    items = targetViewModel.items,
                    selectedItemIndex = targetViewModel.selectedIndex,
@@ -71,6 +72,7 @@ fun RecordDetailsSettings(
                    viewModel = drawableLoaderViewModel,
                    modifier = Modifier.padding(vertical = 12.dp),
                )
            }
            AnimatedVisibility(visible = targetViewModel.shouldShowAppSelector) {
                AppSelectorButton(
                    appLabel = targetViewModel.selectedAppName?.getOrNull()?.toString(),
+12 −0
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@ import com.android.systemui.screencapture.common.domain.interactor.ScreenCapture
import com.android.systemui.screencapture.common.domain.interactor.ScreenCaptureRecentTaskInteractor
import com.android.systemui.screencapture.common.domain.model.ScreenCaptureRecentTask
import com.android.systemui.screencapture.common.shared.model.ScreenCaptureTarget
import com.android.systemui.screenrecord.domain.interactor.ScreenRecordingServiceInteractor
import com.android.systemui.screenrecord.domain.interactor.Status
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import kotlinx.coroutines.coroutineScope
@@ -74,6 +76,7 @@ class RecordDetailsTargetViewModel
@AssistedInject
constructor(
    @ScreenCaptureUi private val display: Display,
    private val screenRecordingServiceInteractor: ScreenRecordingServiceInteractor,
    private val screenCaptureRecentTaskInteractor: ScreenCaptureRecentTaskInteractor,
    private val labelInteractor: ScreenCaptureLabelInteractor,
) : HydratedActivatable() {
@@ -83,6 +86,13 @@ constructor(
        MutableStateFlow(null)
    private val _currentTarget = MutableStateFlow<RecordDetailsTargetItemViewModel?>(null)

    val canChangeTarget: Boolean by
        screenRecordingServiceInteractor.status
            .map { it.canChangeTarget() }
            .hydratedStateOf(
                traceName = "RecordDetailsTargetViewModel#canChangeTarget",
                initialValue = screenRecordingServiceInteractor.status.value.canChangeTarget(),
            )
    val currentTarget: RecordDetailsTargetItemViewModel? by
        _currentTarget.hydratedStateOf(traceName = "RecordDetailsTargetViewModel#currentTarget")
    val items: List<RecordDetailsTargetItemViewModel>? by
@@ -158,3 +168,5 @@ constructor(
        fun create(): RecordDetailsTargetViewModel
    }
}

private fun Status.canChangeTarget(): Boolean = this is Status.Stopped || this is Status.Initial