diff --git a/app/src/main/java/org/mydomain/myscan/MainActivity.kt b/app/src/main/java/org/mydomain/myscan/MainActivity.kt index 33a341e..f04f0cb 100644 --- a/app/src/main/java/org/mydomain/myscan/MainActivity.kt +++ b/app/src/main/java/org/mydomain/myscan/MainActivity.kt @@ -26,10 +26,7 @@ import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.activity.viewModels import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Scaffold import androidx.compose.runtime.getValue -import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.core.content.FileProvider import androidx.lifecycle.compose.collectAsStateWithLifecycle @@ -54,35 +51,32 @@ class MainActivity : ComponentActivity() { val pageIds by viewModel.pageIds.collectAsStateWithLifecycle() val context = LocalContext.current MyScanTheme { - - Column { - when (val screen = currentScreen) { - is Screen.Camera -> { - Scaffold { innerPadding-> - CameraScreen( - viewModel, liveAnalysisState, - onImageAnalyzed = { image -> viewModel.liveAnalysis(image) }, - onFinalizePressed = { viewModel.navigateTo(Screen.FinalizeDocument()) }, - modifier = Modifier.padding(innerPadding) - ) - } - } - is Screen.FinalizeDocument -> { - DocumentScreen ( - pageIds, - initialPage = screen.initialPage, - imageLoader = { id -> viewModel.getBitmap(id) }, - toCameraScreen = { viewModel.navigateTo(Screen.Camera) }, - onSavePressed = savePdf(viewModel, context), - onSharePressed = sharePdf(viewModel, context), - onStartNew = { - viewModel.startNewDocument() - viewModel.navigateTo(Screen.Camera) }, - onDeleteImage = { id -> viewModel.deletePage(id) } - ) - } + Column { + when (val screen = currentScreen) { + is Screen.Camera -> { + CameraScreen( + viewModel, + liveAnalysisState, + onImageAnalyzed = { image -> viewModel.liveAnalysis(image) }, + onFinalizePressed = { viewModel.navigateTo(Screen.FinalizeDocument()) }, + ) + } + is Screen.FinalizeDocument -> { + DocumentScreen ( + pageIds, + initialPage = screen.initialPage, + imageLoader = { id -> viewModel.getBitmap(id) }, + toCameraScreen = { viewModel.navigateTo(Screen.Camera) }, + onSavePressed = savePdf(viewModel, context), + onSharePressed = sharePdf(viewModel, context), + onStartNew = { + viewModel.startNewDocument() + viewModel.navigateTo(Screen.Camera) }, + onDeleteImage = { id -> viewModel.deletePage(id) } + ) } } + } } } } diff --git a/app/src/main/java/org/mydomain/myscan/view/CameraScreen.kt b/app/src/main/java/org/mydomain/myscan/view/CameraScreen.kt index 2038bf7..69fa4f8 100644 --- a/app/src/main/java/org/mydomain/myscan/view/CameraScreen.kt +++ b/app/src/main/java/org/mydomain/myscan/view/CameraScreen.kt @@ -40,6 +40,7 @@ import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Button import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -77,7 +78,6 @@ fun CameraScreen( liveAnalysisState: LiveAnalysisState, onImageAnalyzed: (ImageProxy) -> Unit, onFinalizePressed: () -> Unit, - modifier: Modifier, ) { var previewView by remember { mutableStateOf(null) } val pageIds by viewModel.pageIds.collectAsStateWithLifecycle() @@ -101,9 +101,7 @@ fun CameraScreen( listState.animateScrollToItem(pageIds.lastIndex) } } - - CameraScreenContent( - modifier, + CameraScreenScaffold( cameraPreview = { CameraPreview( onImageAnalyzed = onImageAnalyzed, @@ -132,42 +130,44 @@ fun CameraScreen( } @Composable -private fun CameraScreenContent( - modifier: Modifier, +private fun CameraScreenScaffold( cameraPreview: @Composable () -> Unit, pageList: @Composable () -> Unit, cameraUiState: CameraUiState, onCapture: () -> Unit, onFinalizePressed: () -> Unit, ) { - Box(modifier = modifier.fillMaxSize()) { - CameraPreviewWithOverlay(cameraPreview, cameraUiState) - MessageBox(cameraUiState.liveAnalysisState.inferenceTime) + Scaffold { innerPadding -> + Box(modifier = Modifier.padding(innerPadding).fillMaxSize()) { + CameraPreviewWithOverlay(cameraPreview, cameraUiState) + MessageBox(cameraUiState.liveAnalysisState.inferenceTime) - Column (Modifier.align(Alignment.BottomCenter)) { - CaptureButton( - onClick = onCapture, - modifier = Modifier - .align(Alignment.CenterHorizontally) - .padding(16.dp) - ) - CameraScreenFooter( - pageList = pageList, - pageCount = cameraUiState.pageCount, - onFinalizePressed = onFinalizePressed, - modifier = Modifier, - ) - } - cameraUiState.captureState.processedImage?.let { - Surface ( - color = Color.Black.copy(alpha = 0.3f), - modifier = Modifier.fillMaxSize()) - {} - Image( - bitmap = it.asImageBitmap(), - contentDescription = null, - modifier = Modifier.fillMaxSize().padding(24.dp) - ) + Column(Modifier.align(Alignment.BottomCenter)) { + CaptureButton( + onClick = onCapture, + modifier = Modifier + .align(Alignment.CenterHorizontally) + .padding(16.dp) + ) + CameraScreenFooter( + pageList = pageList, + pageCount = cameraUiState.pageCount, + onFinalizePressed = onFinalizePressed, + modifier = Modifier, + ) + } + cameraUiState.captureState.processedImage?.let { + Surface( + color = Color.Black.copy(alpha = 0.3f), + modifier = Modifier.fillMaxSize() + ) + {} + Image( + bitmap = it.asImageBitmap(), + contentDescription = null, + modifier = Modifier.fillMaxSize().padding(24.dp) + ) + } } } } @@ -292,8 +292,7 @@ fun CameraScreenPreviewWithProcessedImage() { private fun ScreenPreview(captureState: CaptureState) { val context = LocalContext.current MyScanTheme { - CameraScreenContent( - modifier = Modifier, + CameraScreenScaffold( cameraPreview = { Box( modifier = Modifier