Loading packages/SystemUI/src/com/android/systemui/screencapture/common/ScreenCaptureComponent.kt +5 −8 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.systemui.screencapture.common import com.android.systemui.screencapture.common.shared.model.ScreenCaptureActivityIntentParameters import com.android.systemui.screencapture.common.ui.compose.ScreenCaptureContent import com.android.systemui.screencapture.ui.ScreenCaptureActivity import dagger.BindsInstance import dagger.Subcomponent import kotlinx.coroutines.CoroutineScope Loading @@ -33,8 +32,6 @@ import kotlinx.coroutines.CoroutineScope @Subcomponent(modules = [CommonModule::class, FallbackModule::class]) interface ScreenCaptureComponent { val screenCaptureContent: ScreenCaptureContent /** * Dagger Subcomponent Builder for [ScreenCaptureComponent]. * Loading @@ -45,14 +42,12 @@ interface ScreenCaptureComponent { interface Builder { /** The [CoroutineScope] to use coroutines limited to Screen Capture sessions. */ @BindsInstance fun setScope(@ScreenCapture scope: CoroutineScope): Builder @BindsInstance @ScreenCapture fun setScope(scope: CoroutineScope): Builder /** [ScreenCaptureActivityIntentParameters] that has been used to start capture flow. */ @BindsInstance fun setParameters(@ScreenCapture parameters: ScreenCaptureActivityIntentParameters): Builder @BindsInstance fun setScreenCaptureActivity(@ScreenCapture activity: ScreenCaptureActivity): Builder @ScreenCapture fun setParameters(parameters: ScreenCaptureActivityIntentParameters): Builder /** * Builds this [ScreenCaptureComponent]. Actual Subcomponent Builders should override this Loading @@ -60,4 +55,6 @@ interface ScreenCaptureComponent { */ fun build(): ScreenCaptureComponent } val screenCaptureContent: ScreenCaptureContent } packages/SystemUI/src/com/android/systemui/screencapture/common/ui/compose/PrimaryButton.kt +4 −11 Original line number Diff line number Diff line Loading @@ -16,21 +16,16 @@ package com.android.systemui.screencapture.common.ui.compose import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.size import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.android.compose.PlatformButton import com.android.systemui.common.shared.model.Icon as IconModel import com.android.systemui.common.ui.compose.Icon private val ButtonPaddings = PaddingValues(horizontal = 16.dp, vertical = 8.dp) /** Component for a primary button containing text and an optional leading icon. */ @Composable fun PrimaryButton( Loading @@ -38,14 +33,12 @@ fun PrimaryButton( onClick: () -> Unit, modifier: Modifier = Modifier, icon: IconModel? = null, contentPadding: PaddingValues = ButtonPaddings, iconPadding: Dp = 5.dp, ) { PlatformButton(onClick = onClick, modifier = modifier, contentPadding = contentPadding) { PlatformButton(modifier = modifier, onClick = onClick) { if (icon != null) { Icon(icon = icon, modifier = Modifier.size(20.dp).align(Alignment.CenterVertically)) Spacer(Modifier.size(iconPadding)) Icon(icon = icon, modifier = Modifier.size(20.dp)) Spacer(Modifier.size(5.dp)) } Text(text = text, maxLines = 1, modifier = Modifier.align(Alignment.CenterVertically)) Text(text = text, maxLines = 1) } } packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/ui/compose/PreCaptureUI.kt +1 −7 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import com.android.systemui.res.R import com.android.systemui.screencapture.common.ui.compose.PrimaryButton import com.android.systemui.screencapture.common.ui.compose.loadIcon import com.android.systemui.screencapture.record.largescreen.ui.viewmodel.PreCaptureViewModel import com.android.systemui.screencapture.record.largescreen.ui.viewmodel.ScreenCaptureRegion Loading Loading @@ -59,12 +58,7 @@ fun PreCaptureUI(viewModel: PreCaptureViewModel) { modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.Center).zIndex(0f) ) { PrimaryButton( icon = loadIcon( viewModel = viewModel, resId = R.drawable.ic_screen_capture_camera, contentDescription = null, ), icon = viewModel.icons?.screenshotButton, text = stringResource(R.string.screen_capture_fullscreen_screenshot_button), onClick = { viewModel.takeFullscreenScreenshot() }, ) Loading packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/ui/compose/RegionBox.kt +7 −11 Original line number Diff line number Diff line Loading @@ -39,10 +39,9 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.android.systemui.common.shared.model.Icon as IconModel import com.android.systemui.res.R import com.android.systemui.screencapture.common.ui.compose.PrimaryButton import com.android.systemui.screencapture.common.ui.compose.loadIcon import com.android.systemui.screencapture.common.ui.viewmodel.DrawableLoaderViewModel /** * Determines which zone (corner or edge) of a box is being touched based on the press offset. Loading Loading @@ -97,7 +96,6 @@ fun RegionBox( initialWidth: Dp, initialHeight: Dp, onDragEnd: (offset: Offset, width: Dp, height: Dp) -> Unit, drawableLoaderViewModel: DrawableLoaderViewModel, initialOffset: Offset = Offset.Zero, modifier: Modifier = Modifier, ) { Loading Loading @@ -145,7 +143,6 @@ fun RegionBox( with(density) { rect.height.toDp() }, ) }, drawableLoaderViewModel = drawableLoaderViewModel, modifier = modifier, ) } Loading @@ -166,9 +163,13 @@ private fun ResizableRectangle( onResizeDrag: (dragAmount: Offset, zone: ResizeZone, maxWidth: Float, maxHeight: Float) -> Unit, onBoxDrag: (dragAmount: Offset, maxWidth: Float, maxHeight: Float) -> Unit, onDragEnd: () -> Unit, drawableLoaderViewModel: DrawableLoaderViewModel, modifier: Modifier = Modifier, ) { // TODO(b/422855266): Preload icons in the view model to avoid loading icons in UI thread and // improve performance val screenshotIcon = IconModel.Resource(res = R.drawable.ic_screen_capture_camera, contentDescription = null) // The width of the border stroke around the region box. val borderStrokeWidth = 4.dp // The touch area for detecting an edge or corner resize drag. Loading Loading @@ -244,12 +245,7 @@ private fun ResizableRectangle( onClick = { // TODO(b/417534202): trigger a screenshot of the selected area. }, icon = loadIcon( viewModel = drawableLoaderViewModel, resId = R.drawable.ic_screen_capture_camera, contentDescription = null, ), icon = screenshotIcon, ) } } Loading packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/ui/viewmodel/PreCaptureViewModel.kt +1 −4 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.lifecycle.HydratedActivatable import com.android.systemui.res.R import com.android.systemui.screencapture.common.ui.viewmodel.DrawableLoaderViewModel import com.android.systemui.screencapture.common.ui.viewmodel.DrawableLoaderViewModelImpl import com.android.systemui.screencapture.record.largescreen.domain.interactor.ScreenCaptureRecordLargeScreenFeaturesInteractor import com.android.systemui.screencapture.record.largescreen.domain.interactor.ScreenshotInteractor import dagger.assisted.AssistedFactory Loading Loading @@ -55,8 +53,7 @@ constructor( private val iconProvider: ScreenCaptureIconProvider, private val screenshotInteractor: ScreenshotInteractor, private val featuresInteractor: ScreenCaptureRecordLargeScreenFeaturesInteractor, private val drawableLoaderViewModelImpl: DrawableLoaderViewModelImpl, ) : HydratedActivatable(), DrawableLoaderViewModel by drawableLoaderViewModelImpl { ) : HydratedActivatable() { private val captureTypeSource = MutableStateFlow(ScreenCaptureType.SCREENSHOT) private val captureRegionSource = MutableStateFlow(ScreenCaptureRegion.FULLSCREEN) Loading Loading
packages/SystemUI/src/com/android/systemui/screencapture/common/ScreenCaptureComponent.kt +5 −8 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.systemui.screencapture.common import com.android.systemui.screencapture.common.shared.model.ScreenCaptureActivityIntentParameters import com.android.systemui.screencapture.common.ui.compose.ScreenCaptureContent import com.android.systemui.screencapture.ui.ScreenCaptureActivity import dagger.BindsInstance import dagger.Subcomponent import kotlinx.coroutines.CoroutineScope Loading @@ -33,8 +32,6 @@ import kotlinx.coroutines.CoroutineScope @Subcomponent(modules = [CommonModule::class, FallbackModule::class]) interface ScreenCaptureComponent { val screenCaptureContent: ScreenCaptureContent /** * Dagger Subcomponent Builder for [ScreenCaptureComponent]. * Loading @@ -45,14 +42,12 @@ interface ScreenCaptureComponent { interface Builder { /** The [CoroutineScope] to use coroutines limited to Screen Capture sessions. */ @BindsInstance fun setScope(@ScreenCapture scope: CoroutineScope): Builder @BindsInstance @ScreenCapture fun setScope(scope: CoroutineScope): Builder /** [ScreenCaptureActivityIntentParameters] that has been used to start capture flow. */ @BindsInstance fun setParameters(@ScreenCapture parameters: ScreenCaptureActivityIntentParameters): Builder @BindsInstance fun setScreenCaptureActivity(@ScreenCapture activity: ScreenCaptureActivity): Builder @ScreenCapture fun setParameters(parameters: ScreenCaptureActivityIntentParameters): Builder /** * Builds this [ScreenCaptureComponent]. Actual Subcomponent Builders should override this Loading @@ -60,4 +55,6 @@ interface ScreenCaptureComponent { */ fun build(): ScreenCaptureComponent } val screenCaptureContent: ScreenCaptureContent }
packages/SystemUI/src/com/android/systemui/screencapture/common/ui/compose/PrimaryButton.kt +4 −11 Original line number Diff line number Diff line Loading @@ -16,21 +16,16 @@ package com.android.systemui.screencapture.common.ui.compose import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.size import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.android.compose.PlatformButton import com.android.systemui.common.shared.model.Icon as IconModel import com.android.systemui.common.ui.compose.Icon private val ButtonPaddings = PaddingValues(horizontal = 16.dp, vertical = 8.dp) /** Component for a primary button containing text and an optional leading icon. */ @Composable fun PrimaryButton( Loading @@ -38,14 +33,12 @@ fun PrimaryButton( onClick: () -> Unit, modifier: Modifier = Modifier, icon: IconModel? = null, contentPadding: PaddingValues = ButtonPaddings, iconPadding: Dp = 5.dp, ) { PlatformButton(onClick = onClick, modifier = modifier, contentPadding = contentPadding) { PlatformButton(modifier = modifier, onClick = onClick) { if (icon != null) { Icon(icon = icon, modifier = Modifier.size(20.dp).align(Alignment.CenterVertically)) Spacer(Modifier.size(iconPadding)) Icon(icon = icon, modifier = Modifier.size(20.dp)) Spacer(Modifier.size(5.dp)) } Text(text = text, maxLines = 1, modifier = Modifier.align(Alignment.CenterVertically)) Text(text = text, maxLines = 1) } }
packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/ui/compose/PreCaptureUI.kt +1 −7 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import com.android.systemui.res.R import com.android.systemui.screencapture.common.ui.compose.PrimaryButton import com.android.systemui.screencapture.common.ui.compose.loadIcon import com.android.systemui.screencapture.record.largescreen.ui.viewmodel.PreCaptureViewModel import com.android.systemui.screencapture.record.largescreen.ui.viewmodel.ScreenCaptureRegion Loading Loading @@ -59,12 +58,7 @@ fun PreCaptureUI(viewModel: PreCaptureViewModel) { modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.Center).zIndex(0f) ) { PrimaryButton( icon = loadIcon( viewModel = viewModel, resId = R.drawable.ic_screen_capture_camera, contentDescription = null, ), icon = viewModel.icons?.screenshotButton, text = stringResource(R.string.screen_capture_fullscreen_screenshot_button), onClick = { viewModel.takeFullscreenScreenshot() }, ) Loading
packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/ui/compose/RegionBox.kt +7 −11 Original line number Diff line number Diff line Loading @@ -39,10 +39,9 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.android.systemui.common.shared.model.Icon as IconModel import com.android.systemui.res.R import com.android.systemui.screencapture.common.ui.compose.PrimaryButton import com.android.systemui.screencapture.common.ui.compose.loadIcon import com.android.systemui.screencapture.common.ui.viewmodel.DrawableLoaderViewModel /** * Determines which zone (corner or edge) of a box is being touched based on the press offset. Loading Loading @@ -97,7 +96,6 @@ fun RegionBox( initialWidth: Dp, initialHeight: Dp, onDragEnd: (offset: Offset, width: Dp, height: Dp) -> Unit, drawableLoaderViewModel: DrawableLoaderViewModel, initialOffset: Offset = Offset.Zero, modifier: Modifier = Modifier, ) { Loading Loading @@ -145,7 +143,6 @@ fun RegionBox( with(density) { rect.height.toDp() }, ) }, drawableLoaderViewModel = drawableLoaderViewModel, modifier = modifier, ) } Loading @@ -166,9 +163,13 @@ private fun ResizableRectangle( onResizeDrag: (dragAmount: Offset, zone: ResizeZone, maxWidth: Float, maxHeight: Float) -> Unit, onBoxDrag: (dragAmount: Offset, maxWidth: Float, maxHeight: Float) -> Unit, onDragEnd: () -> Unit, drawableLoaderViewModel: DrawableLoaderViewModel, modifier: Modifier = Modifier, ) { // TODO(b/422855266): Preload icons in the view model to avoid loading icons in UI thread and // improve performance val screenshotIcon = IconModel.Resource(res = R.drawable.ic_screen_capture_camera, contentDescription = null) // The width of the border stroke around the region box. val borderStrokeWidth = 4.dp // The touch area for detecting an edge or corner resize drag. Loading Loading @@ -244,12 +245,7 @@ private fun ResizableRectangle( onClick = { // TODO(b/417534202): trigger a screenshot of the selected area. }, icon = loadIcon( viewModel = drawableLoaderViewModel, resId = R.drawable.ic_screen_capture_camera, contentDescription = null, ), icon = screenshotIcon, ) } } Loading
packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/ui/viewmodel/PreCaptureViewModel.kt +1 −4 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.lifecycle.HydratedActivatable import com.android.systemui.res.R import com.android.systemui.screencapture.common.ui.viewmodel.DrawableLoaderViewModel import com.android.systemui.screencapture.common.ui.viewmodel.DrawableLoaderViewModelImpl import com.android.systemui.screencapture.record.largescreen.domain.interactor.ScreenCaptureRecordLargeScreenFeaturesInteractor import com.android.systemui.screencapture.record.largescreen.domain.interactor.ScreenshotInteractor import dagger.assisted.AssistedFactory Loading Loading @@ -55,8 +53,7 @@ constructor( private val iconProvider: ScreenCaptureIconProvider, private val screenshotInteractor: ScreenshotInteractor, private val featuresInteractor: ScreenCaptureRecordLargeScreenFeaturesInteractor, private val drawableLoaderViewModelImpl: DrawableLoaderViewModelImpl, ) : HydratedActivatable(), DrawableLoaderViewModel by drawableLoaderViewModelImpl { ) : HydratedActivatable() { private val captureTypeSource = MutableStateFlow(ScreenCaptureType.SCREENSHOT) private val captureRegionSource = MutableStateFlow(ScreenCaptureRegion.FULLSCREEN) Loading