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

Commit 163f2715 authored by Wes Okuhara's avatar Wes Okuhara Committed by Android (Google) Code Review
Browse files

Merge "Desktop screenshots: Allow default selections in pre-capture UI" into main

parents 550184c2 1c549149
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -19,12 +19,22 @@ package com.android.systemui.screencapture.common.shared.model
import android.os.IBinder
import android.os.ResultReceiver
import android.os.UserHandle
import com.android.systemui.screencapture.record.largescreen.shared.model.ScreenCaptureRegion as LargeScreenCaptureRegion
import com.android.systemui.screencapture.record.largescreen.shared.model.ScreenCaptureType as LargeScreenCaptureType

data class ScreenCaptureUiParameters(
data class LargeScreenCaptureUiParameters(
    val defaultCaptureType: LargeScreenCaptureType? = null,
    val defaultCaptureRegion: LargeScreenCaptureRegion? = null,
)

data class ScreenCaptureUiParameters
@JvmOverloads
constructor(
    val screenCaptureType: ScreenCaptureType,
    val isUserConsentRequired: Boolean = false,
    val resultReceiver: ResultReceiver? = null,
    val mediaProjection: IBinder? = null,
    val hostAppUserHandle: UserHandle = UserHandle.CURRENT,
    val hostAppUid: Int = 0,
    val largeScreenParameters: LargeScreenCaptureUiParameters? = null,
)
+11 −1
Original line number Diff line number Diff line
@@ -17,9 +17,12 @@
package com.android.systemui.screencapture.domain.interactor

import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.screencapture.common.shared.model.LargeScreenCaptureUiParameters
import com.android.systemui.screencapture.common.shared.model.ScreenCaptureType
import com.android.systemui.screencapture.common.shared.model.ScreenCaptureUiParameters
import com.android.systemui.screencapture.record.domain.interactor.ScreenCaptureRecordFeaturesInteractor
import com.android.systemui.screencapture.record.largescreen.shared.model.ScreenCaptureRegion
import com.android.systemui.screencapture.record.largescreen.shared.model.ScreenCaptureType as LargeScreenCaptureType
import javax.inject.Inject

/** Handles the resulting actions of screen capture related keyboard shortcuts. */
@@ -33,7 +36,14 @@ constructor(private val screenCaptureUiInteractor: ScreenCaptureUiInteractor) {
        // default to taking a fullscreen screenshot.
        if (ScreenCaptureRecordFeaturesInteractor.isLargeScreenScreencaptureEnabled) {
            screenCaptureUiInteractor.show(
                ScreenCaptureUiParameters(screenCaptureType = ScreenCaptureType.RECORD)
                ScreenCaptureUiParameters(
                    screenCaptureType = ScreenCaptureType.RECORD,
                    largeScreenParameters =
                        LargeScreenCaptureUiParameters(
                            defaultCaptureType = LargeScreenCaptureType.SCREENSHOT,
                            defaultCaptureRegion = ScreenCaptureRegion.PARTIAL,
                        ),
                )
            )
        }
    }
+27 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.screencapture.record.largescreen.shared.model

/**
 * An enum describing the types of capture regions available in large-screen screenshots & screen
 * recording.
 */
enum class ScreenCaptureRegion {
    FULLSCREEN,
    PARTIAL,
    APP_WINDOW,
}
+26 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.screencapture.record.largescreen.shared.model

/**
 * An enum describing the types of capture regions available in large-screen screenshots & screen
 * recording.
 */
enum class ScreenCaptureType {
    SCREENSHOT,
    RECORDING,
}
+5 −5
Original line number Diff line number Diff line
@@ -34,9 +34,9 @@ import com.android.systemui.res.R
import com.android.systemui.screencapture.common.ui.compose.PrimaryButton
import com.android.systemui.screencapture.common.ui.compose.ScreenCaptureColors
import com.android.systemui.screencapture.common.ui.compose.loadIcon
import com.android.systemui.screencapture.record.largescreen.shared.model.ScreenCaptureRegion
import com.android.systemui.screencapture.record.largescreen.shared.model.ScreenCaptureType
import com.android.systemui.screencapture.record.largescreen.ui.viewmodel.PreCaptureViewModel
import com.android.systemui.screencapture.record.largescreen.ui.viewmodel.ScreenCaptureRegion
import com.android.systemui.screencapture.record.largescreen.ui.viewmodel.ScreenCaptureType

/** Main component for the pre-capture UI. */
@Composable
@@ -59,7 +59,7 @@ fun PreCaptureUI(viewModel: PreCaptureViewModel) {
        val iconResourceId =
            when (viewModel.captureType) {
                ScreenCaptureType.SCREENSHOT -> R.drawable.ic_screen_capture_camera
                ScreenCaptureType.SCREEN_RECORD -> R.drawable.ic_screenrecord
                ScreenCaptureType.RECORDING -> R.drawable.ic_screenrecord
            }

        when (viewModel.captureRegion) {
@@ -85,7 +85,7 @@ fun PreCaptureUI(viewModel: PreCaptureViewModel) {
                                when (viewModel.captureType) {
                                    ScreenCaptureType.SCREENSHOT ->
                                        R.string.screen_capture_fullscreen_screenshot_button
                                    ScreenCaptureType.SCREEN_RECORD ->
                                    ScreenCaptureType.RECORDING ->
                                        R.string.screen_capture_fullscreen_record_button
                                }
                            ),
@@ -110,7 +110,7 @@ fun PreCaptureUI(viewModel: PreCaptureViewModel) {
                                when (viewModel.captureType) {
                                    ScreenCaptureType.SCREENSHOT ->
                                        R.string.screen_capture_region_selection_button
                                    ScreenCaptureType.SCREEN_RECORD ->
                                    ScreenCaptureType.RECORDING ->
                                        R.string.screen_capture_record_region_selection_button
                                }
                        ),
Loading