@@ -32,18 +32,14 @@ import androidx.compose.material.icons.Icons
3232import androidx.compose.material.icons.automirrored.filled.RotateLeft
3333import androidx.compose.material.icons.automirrored.filled.RotateRight
3434import androidx.compose.material.icons.filled.Add
35- import androidx.compose.material.icons.filled.Close
3635import androidx.compose.material.icons.filled.PictureAsPdf
3736import androidx.compose.material.icons.outlined.Delete
38- import androidx.compose.material3.AlertDialog
3937import androidx.compose.material3.ExperimentalMaterial3Api
4038import androidx.compose.material3.MaterialTheme
4139import androidx.compose.material3.Text
42- import androidx.compose.material3.TextButton
4340import androidx.compose.runtime.Composable
4441import androidx.compose.runtime.LaunchedEffect
4542import androidx.compose.runtime.MutableIntState
46- import androidx.compose.runtime.MutableState
4743import androidx.compose.runtime.mutableIntStateOf
4844import androidx.compose.runtime.mutableStateOf
4945import androidx.compose.runtime.saveable.rememberSaveable
@@ -53,16 +49,12 @@ import androidx.compose.ui.geometry.Size
5349import androidx.compose.ui.graphics.asImageBitmap
5450import androidx.compose.ui.platform.LocalContext
5551import androidx.compose.ui.res.stringResource
56- import androidx.compose.ui.text.font.FontWeight
5752import androidx.compose.ui.tooling.preview.Preview
5853import androidx.compose.ui.unit.dp
59- import kotlinx.coroutines.flow.MutableStateFlow
6054import net.engawapg.lib.zoomable.rememberZoomState
6155import net.engawapg.lib.zoomable.zoomable
6256import org.fairscan.app.Navigation
63- import org.fairscan.app.PdfGenerationActions
6457import org.fairscan.app.R
65- import org.fairscan.app.ui.PdfGenerationUiState
6658import org.fairscan.app.ui.theme.MyScanTheme
6759
6860@OptIn(ExperimentalMaterial3Api ::class )
@@ -71,15 +63,11 @@ fun DocumentScreen(
7163 document : DocumentUiModel ,
7264 initialPage : Int ,
7365 navigation : Navigation ,
74- pdfActions : PdfGenerationActions ,
75- onStartNew : () -> Unit ,
7666 onDeleteImage : (String ) -> Unit ,
7767 onRotateImage : (String , Boolean ) -> Unit ,
7868) {
7969 // TODO Check how often images are loaded
80- val showNewDocDialog = rememberSaveable { mutableStateOf(false ) }
8170 val showDeletePageDialog = rememberSaveable { mutableStateOf(false ) }
82- val showPdfDialog = rememberSaveable { mutableStateOf(false ) }
8371 val currentPageIndex = rememberSaveable { mutableIntStateOf(initialPage) }
8472 if (currentPageIndex.intValue >= document.pageCount()) {
8573 currentPageIndex.intValue = document.pageCount() - 1
@@ -105,7 +93,7 @@ fun DocumentScreen(
10593 ),
10694 onBack = navigation.back,
10795 bottomBar = {
108- BottomBar (showPdfDialog, showNewDocDialog )
96+ BottomBar (navigation )
10997 },
11098 pageListButton = {
11199 SecondaryActionButton (
@@ -121,22 +109,13 @@ fun DocumentScreen(
121109 { showDeletePageDialog.value = true },
122110 onRotateImage,
123111 modifier)
124- if (showNewDocDialog.value) {
125- NewDocumentDialog (onConfirm = onStartNew, showNewDocDialog, stringResource(R .string.close_document))
126- }
127112 if (showDeletePageDialog.value) {
128113 ConfirmationDialog (
129114 title = stringResource(R .string.delete_page),
130115 message = stringResource(R .string.delete_page_warning),
131116 showDialog = showDeletePageDialog
132117 ) { onDeleteImage(document.pageId(currentPageIndex.intValue)) }
133118 }
134- if (showPdfDialog.value) {
135- PdfGenerationBottomSheetWrapper (
136- onDismiss = { showPdfDialog.value = false },
137- pdfActions = pdfActions,
138- )
139- }
140119 }
141120}
142121
@@ -226,61 +205,21 @@ fun RotationButtons(
226205
227206@Composable
228207private fun BottomBar (
229- showPdfDialog : MutableState <Boolean >,
230- showNewDocDialog : MutableState <Boolean >,
208+ navigation : Navigation ,
231209) {
232210 Row (
233211 modifier = Modifier .fillMaxWidth(),
234212 verticalAlignment = Alignment .CenterVertically ,
235213 horizontalArrangement = Arrangement .End
236214 ) {
237215 MainActionButton (
238- onClick = { showPdfDialog.value = true } ,
216+ onClick = navigation.toExportScreen ,
239217 icon = Icons .Default .PictureAsPdf ,
240218 text = stringResource(R .string.export_pdf),
241219 )
242- Spacer (modifier = Modifier .width(8 .dp))
243- SecondaryActionButton (
244- icon = Icons .Default .Close ,
245- contentDescription = stringResource(R .string.close_document),
246- onClick = { showNewDocDialog.value = true },
247- modifier = Modifier .padding(vertical = 8 .dp)
248- )
249220 }
250221}
251222
252- @Composable
253- fun NewDocumentDialog (onConfirm : () -> Unit , showDialog : MutableState <Boolean >, title : String ) {
254- ConfirmationDialog (title, stringResource(R .string.new_document_warning), showDialog, onConfirm)
255- }
256-
257- @Composable
258- private fun ConfirmationDialog (
259- title : String ,
260- message : String ,
261- showDialog : MutableState <Boolean >,
262- onConfirm : () -> Unit ,
263- ) {
264- AlertDialog (
265- title = { Text (title) },
266- text = { Text (message) },
267- confirmButton = {
268- TextButton (onClick = {
269- showDialog.value = false
270- onConfirm()
271- }) {
272- Text (stringResource(R .string.yes), fontWeight = FontWeight .Bold )
273- }
274- },
275- dismissButton = {
276- TextButton (onClick = { showDialog.value = false }) {
277- Text (stringResource(R .string.cancel), fontWeight = FontWeight .Bold )
278- }
279- },
280- onDismissRequest = { showDialog.value = false },
281- )
282- }
283-
284223@Composable
285224@Preview
286225fun DocumentScreenPreview () {
@@ -291,11 +230,6 @@ fun DocumentScreenPreview() {
291230 LocalContext .current),
292231 initialPage = 1 ,
293232 navigation = dummyNavigation(),
294- pdfActions = PdfGenerationActions (
295- {}, {}, {},
296- MutableStateFlow (PdfGenerationUiState ()),
297- {}, {}, {}),
298- onStartNew = {},
299233 onDeleteImage = { _ -> },
300234 onRotateImage = { _,_ -> },
301235 )
0 commit comments