Loading packages/SystemUI/src/com/android/systemui/screencapture/common/shared/model/ScreenCaptureUiParameters.kt +11 −1 Original line number Diff line number Diff line Loading @@ -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, ) packages/SystemUI/src/com/android/systemui/screencapture/domain/interactor/ScreenCaptureKeyboardShortcutInteractor.kt +11 −1 Original line number Diff line number Diff line Loading @@ -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. */ Loading @@ -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, ), ) ) } } Loading packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/shared/model/ScreenCaptureRegion.kt 0 → 100644 +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, } packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/shared/model/ScreenCaptureType.kt 0 → 100644 +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, } packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/ui/compose/PreCaptureUI.kt +5 −5 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) { Loading @@ -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 } ), Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/screencapture/common/shared/model/ScreenCaptureUiParameters.kt +11 −1 Original line number Diff line number Diff line Loading @@ -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, )
packages/SystemUI/src/com/android/systemui/screencapture/domain/interactor/ScreenCaptureKeyboardShortcutInteractor.kt +11 −1 Original line number Diff line number Diff line Loading @@ -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. */ Loading @@ -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, ), ) ) } } Loading
packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/shared/model/ScreenCaptureRegion.kt 0 → 100644 +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, }
packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/shared/model/ScreenCaptureType.kt 0 → 100644 +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, }
packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/ui/compose/PreCaptureUI.kt +5 −5 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) { Loading @@ -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 } ), Loading @@ -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