@@ -268,6 +268,7 @@ private fun Activity.MainScreen(
268
268
exit = fadeOut() + slideOutVertically { - it },
269
269
) {
270
270
var onPickColorCallback by remember { mutableStateOf< ((Color ) -> Unit )? > (null ) }
271
+ var showZoomLimitDialog by remember { mutableStateOf(false ) }
271
272
272
273
PdfToolBar (
273
274
title = title,
@@ -277,9 +278,10 @@ private fun Activity.MainScreen(
277
278
showEditor = true ,
278
279
dropDownMenu = { onDismiss, defaultMenus ->
279
280
ExtendedTooBarMenus (
280
- pdfState,
281
- onDismiss,
282
- defaultMenus
281
+ pdfState = pdfState,
282
+ showZoomLimitDialog = { showZoomLimitDialog = it },
283
+ onDismiss = onDismiss,
284
+ defaultMenus = defaultMenus
283
285
)
284
286
},
285
287
pickColor = { onPickColor ->
@@ -298,6 +300,12 @@ private fun Activity.MainScreen(
298
300
onPickColorCallback = null
299
301
}
300
302
)
303
+
304
+ if (showZoomLimitDialog)
305
+ ZoomLimitDialog (
306
+ state = pdfState,
307
+ onDismiss = { showZoomLimitDialog = false }
308
+ )
301
309
}
302
310
},
303
311
pdfScrollBar = { parentSize ->
@@ -329,20 +337,19 @@ private fun Activity.MainScreen(
329
337
@OptIn(PdfUnstableApi ::class )
330
338
@Composable
331
339
private fun Activity.ExtendedTooBarMenus (
332
- state : PdfState ,
340
+ pdfState : PdfState ,
341
+ showZoomLimitDialog : (Boolean ) -> Unit ,
333
342
onDismiss : () -> Unit ,
334
- defaultMenus : @Composable (filter : ( PdfToolBarMenuItem ) -> Boolean ) -> Unit
343
+ defaultMenus : @Composable (filtered : List < PdfToolBarMenuItem > ) -> Unit
335
344
) {
336
- var showZoomLimitDialog by remember { mutableStateOf(false ) }
337
345
val dropDownModifier = Modifier .padding(start = 6 .dp, end = 18 .dp)
338
346
val authority = " ${BuildConfig .APPLICATION_ID } .file.provider"
339
347
340
- if (state .pdfViewer?.createSharableUri(authority) != null ) {
348
+ if (pdfState .pdfViewer?.createSharableUri(authority) != null ) {
341
349
DropdownMenuItem (
342
350
text = { Text (text = " Share" , modifier = dropDownModifier) },
343
351
onClick = {
344
- onDismiss()
345
- state.pdfViewer
352
+ pdfState.pdfViewer
346
353
?.createSharableUri(authority)
347
354
?.let {
348
355
val shareIntent = Intent (Intent .ACTION_SEND ).apply {
@@ -352,54 +359,55 @@ private fun Activity.ExtendedTooBarMenus(
352
359
}
353
360
startActivity(Intent .createChooser(shareIntent, " Share PDF using" ))
354
361
} ? : toast(" Unable to share pdf!" )
362
+ onDismiss()
355
363
}
356
364
)
357
365
DropdownMenuItem (
358
366
text = { Text (text = " Open With" , modifier = dropDownModifier) },
359
367
onClick = {
360
- onDismiss()
361
- state.pdfViewer
368
+ pdfState.pdfViewer
362
369
?.createSharableUri(authority)
363
370
?.let {
364
371
startActivity(Intent (Intent .ACTION_VIEW , it).apply {
365
372
addFlags(Intent .FLAG_GRANT_READ_URI_PERMISSION )
366
373
})
367
374
} ? : toast(" Unable to open pdf with other apps!" )
375
+ onDismiss()
368
376
}
369
377
)
370
378
}
371
379
372
380
DropdownMenuItem (
373
381
text = { Text (text = " Print" , modifier = dropDownModifier) },
374
382
onClick = {
383
+ pdfState.pdfViewer?.printFile()
375
384
onDismiss()
376
- state.pdfViewer?.printFile()
377
385
}
378
386
)
379
387
DropdownMenuItem (
380
388
text = { Text (text = " Zoom Limit" , modifier = dropDownModifier) },
381
- onClick = { showZoomLimitDialog = true }
389
+ onClick = {
390
+ showZoomLimitDialog(true )
391
+ onDismiss()
392
+ }
382
393
)
383
394
DropdownMenuItem (
384
395
text = {
385
396
Text (
386
397
text = (
387
- if (state .pdfViewer?.scrollSpeedLimit == PdfViewer .ScrollSpeedLimit .None ) " Enable"
398
+ if (pdfState .pdfViewer?.scrollSpeedLimit == PdfViewer .ScrollSpeedLimit .None ) " Enable"
388
399
else " Disable"
389
400
) + " scroll speed limit" , modifier = dropDownModifier
390
401
)
391
402
},
392
403
onClick = {
393
- if (state .pdfViewer?.scrollSpeedLimit == PdfViewer .ScrollSpeedLimit .None )
394
- state .pdfViewer?.scrollSpeedLimit = PdfViewer .ScrollSpeedLimit .AdaptiveFling ()
395
- else state .pdfViewer?.scrollSpeedLimit = PdfViewer .ScrollSpeedLimit .None
404
+ if (pdfState .pdfViewer?.scrollSpeedLimit == PdfViewer .ScrollSpeedLimit .None )
405
+ pdfState .pdfViewer?.scrollSpeedLimit = PdfViewer .ScrollSpeedLimit .AdaptiveFling ()
406
+ else pdfState .pdfViewer?.scrollSpeedLimit = PdfViewer .ScrollSpeedLimit .None
396
407
onDismiss()
397
408
}
398
409
)
399
- defaultMenus { true }
400
-
401
- if (showZoomLimitDialog)
402
- ZoomLimitDialog (state = state, onDismiss = { showZoomLimitDialog = false ; onDismiss() })
410
+ defaultMenus(PdfToolBarMenuItem .entries)
403
411
}
404
412
405
413
@OptIn(ExperimentalMaterial3Api ::class )
0 commit comments