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

Commit 6e8b9be6 authored by Anton Potapov's avatar Anton Potapov
Browse files

Prohibit changing recording target when the recording is ongoing

Flag: com.android.systemui.new_screen_record_toolbar
Fixes: 443929230
Test: manual on foldable
Change-Id: I47c973ae3f3a6778f85868728e3447b6ca708d76
parent 39bf2614
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