Skip to content

Commit c49a271

Browse files
committed
Refactoring: introduce CameraUiState
1 parent dcb48b8 commit c49a271

File tree

1 file changed

+25
-23
lines changed

1 file changed

+25
-23
lines changed

app/src/main/java/org/mydomain/myscan/view/CameraScreen.kt

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ import org.mydomain.myscan.MainViewModel.CaptureState
6767
import org.mydomain.myscan.Screen
6868
import org.mydomain.myscan.ui.theme.MyScanTheme
6969

70+
data class CameraUiState(
71+
val pageCount: Int,
72+
val liveAnalysisState: LiveAnalysisState,
73+
val captureState: CaptureState
74+
)
75+
7076
@Composable
7177
fun CameraScreen(
7278
viewModel: MainViewModel,
@@ -98,14 +104,16 @@ fun CameraScreen(
98104
onImageAnalyzed = onImageAnalyzed,
99105
captureController = captureController,
100106
onPreviewViewReady = { view -> previewView = view }
101-
) },
102-
pageList = { CameraCapturedPagesRow(
103-
pageIds = pageIds,
104-
imageLoader = { id -> viewModel.getBitmap(id) },
105-
onPageClick = { index -> viewModel.navigateTo(Screen.FinalizeDocument(index)) }
106-
) },
107-
pageCount = pageIds.size,
108-
liveAnalysisState = liveAnalysisState,
107+
)
108+
},
109+
pageList = {
110+
CameraCapturedPagesRow(
111+
pageIds = pageIds,
112+
imageLoader = { id -> viewModel.getBitmap(id) },
113+
onPageClick = { index -> viewModel.navigateTo(Screen.FinalizeDocument(index)) }
114+
)
115+
},
116+
cameraUiState = CameraUiState(pageIds.size, liveAnalysisState, captureState),
109117
onCapture = {
110118
Log.i("MyScan", "Pressed <Capture>")
111119
viewModel.onCapturePressed(previewView?.bitmap)
@@ -114,7 +122,6 @@ fun CameraScreen(
114122
)
115123
},
116124
onFinalizePressed = onFinalizePressed,
117-
captureState = captureState
118125
)
119126
}
120127

@@ -123,15 +130,13 @@ private fun CameraScreenContent(
123130
modifier: Modifier,
124131
cameraPreview: @Composable () -> Unit,
125132
pageList: @Composable () -> Unit,
126-
pageCount: Int,
127-
liveAnalysisState: LiveAnalysisState,
133+
cameraUiState: CameraUiState,
128134
onCapture: () -> Unit,
129135
onFinalizePressed: () -> Unit,
130-
captureState: CaptureState
131136
) {
132137
Box(modifier = modifier.fillMaxSize()) {
133-
CameraPreviewWithOverlay(cameraPreview, liveAnalysisState, captureState)
134-
MessageBox(liveAnalysisState.inferenceTime)
138+
CameraPreviewWithOverlay(cameraPreview, cameraUiState)
139+
MessageBox(cameraUiState.liveAnalysisState.inferenceTime)
135140

136141
Column (Modifier.align(Alignment.BottomCenter)) {
137142
CaptureButton(
@@ -142,12 +147,12 @@ private fun CameraScreenContent(
142147
)
143148
CameraScreenFooter(
144149
pageList = pageList,
145-
pageCount = pageCount,
150+
pageCount = cameraUiState.pageCount,
146151
onFinalizePressed = onFinalizePressed,
147152
modifier = Modifier,
148153
)
149154
}
150-
captureState.processedImage?.let {
155+
cameraUiState.captureState.processedImage?.let {
151156
Surface (
152157
color = Color.Black.copy(alpha = 0.3f),
153158
modifier = Modifier.fillMaxSize())
@@ -194,8 +199,7 @@ fun CaptureButton(onClick: () -> Unit, modifier: Modifier) {
194199
@Composable
195200
private fun CameraPreviewWithOverlay(
196201
cameraPreview: @Composable () -> Unit,
197-
liveAnalysisState: LiveAnalysisState,
198-
captureState: CaptureState
202+
cameraUiState: CameraUiState
199203
) {
200204
val width = LocalConfiguration.current.screenWidthDp
201205
val height = width / 3 * 4
@@ -205,8 +209,8 @@ private fun CameraPreviewWithOverlay(
205209
.height(height.dp)
206210
) {
207211
cameraPreview()
208-
AnalysisOverlay(liveAnalysisState)
209-
captureState.frozenImage?.let {
212+
AnalysisOverlay(cameraUiState.liveAnalysisState)
213+
cameraUiState.captureState.frozenImage?.let {
210214
Image(
211215
bitmap = it.asImageBitmap(),
212216
contentDescription = null,
@@ -346,11 +350,9 @@ private fun ScreenPreview(captureState: CaptureState) {
346350
onPageClick = {}
347351
)
348352
},
349-
pageCount = 4,
350-
liveAnalysisState = LiveAnalysisState(),
353+
cameraUiState = CameraUiState(pageCount = 4, LiveAnalysisState(), captureState),
351354
onCapture = {},
352355
onFinalizePressed = {},
353-
captureState = captureState,
354356
)
355357
}
356358
}

0 commit comments

Comments
 (0)