mirror of
https://github.com/T8RIN/ImageToolbox.git
synced 2025-05-17 13:35:58 +08:00
Code refactor
This commit is contained in:
@ -52,6 +52,7 @@ import androidx.compose.material3.rememberBottomSheetScaffoldState
|
||||
import androidx.compose.material3.rememberStandardBottomSheetState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
@ -66,6 +67,7 @@ import kotlinx.coroutines.launch
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSettingsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.animation.fancySlideTransition
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalScreenSize
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.ProvideContainerDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.dialogs.ExitBackHandler
|
||||
@ -81,7 +83,6 @@ fun AdaptiveBottomScaffoldLayoutScreen(
|
||||
title: @Composable () -> Unit,
|
||||
onGoBack: () -> Unit,
|
||||
shouldDisableBackHandler: Boolean,
|
||||
isPortrait: Boolean,
|
||||
actions: @Composable RowScope.(BottomSheetScaffoldState) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
topAppBarPersistentActions: @Composable RowScope.(BottomSheetScaffoldState) -> Unit = {},
|
||||
@ -96,6 +97,7 @@ fun AdaptiveBottomScaffoldLayoutScreen(
|
||||
autoClearFocus: Boolean = true,
|
||||
enableNoDataScroll: Boolean = true
|
||||
) {
|
||||
val isPortrait by isPortraitOrientationAsState()
|
||||
val screenWidthPx = LocalScreenSize.current.widthPx
|
||||
|
||||
val settingsState = LocalSettingsState.current
|
||||
|
@ -73,6 +73,7 @@ import kotlinx.coroutines.launch
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSettingsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.animation.fancySlideTransition
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalScreenSize
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.dialogs.ExitBackHandler
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedIconButton
|
||||
@ -97,7 +98,6 @@ fun AdaptiveLayoutScreen(
|
||||
noDataControls: @Composable () -> Unit = {},
|
||||
canShowScreenData: Boolean,
|
||||
forceImagePreviewToMax: Boolean = false,
|
||||
isPortrait: Boolean,
|
||||
contentPadding: Dp = 20.dp,
|
||||
showImagePreviewAsStickyHeader: Boolean = true,
|
||||
autoClearFocus: Boolean = true,
|
||||
@ -111,6 +111,7 @@ fun AdaptiveLayoutScreen(
|
||||
)
|
||||
)
|
||||
) {
|
||||
val isPortrait by isPortraitOrientationAsState()
|
||||
val settingsState = LocalSettingsState.current
|
||||
|
||||
var imageState by rememberImageState()
|
||||
|
@ -59,6 +59,7 @@ import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
@ -69,14 +70,14 @@ import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.takeColorFromScheme
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke
|
||||
|
||||
//TODO: Refactor from pair
|
||||
@Composable
|
||||
fun BottomButtonsBlock(
|
||||
targetState: Pair<Boolean, Boolean>,
|
||||
isNoData: Boolean,
|
||||
onSecondaryButtonClick: () -> Unit,
|
||||
onSecondaryButtonLongClick: (() -> Unit)? = null,
|
||||
secondaryButtonIcon: ImageVector = Icons.Rounded.AddPhotoAlternate,
|
||||
@ -93,13 +94,14 @@ fun BottomButtonsBlock(
|
||||
isPrimaryButtonEnabled: Boolean = true,
|
||||
showColumnarFabInRow: Boolean = false,
|
||||
) {
|
||||
val isPortrait by isPortraitOrientationAsState()
|
||||
AnimatedContent(
|
||||
targetState = targetState,
|
||||
targetState = isNoData to isPortrait,
|
||||
transitionSpec = {
|
||||
fadeIn() + slideInVertically { it / 2 } togetherWith fadeOut() + slideOutVertically { it / 2 }
|
||||
}
|
||||
) { (isNull, inside) ->
|
||||
if (isNull) {
|
||||
) { (isEmptyState, inside) ->
|
||||
if (isEmptyState) {
|
||||
val button = @Composable {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
@ -119,14 +121,19 @@ fun BottomButtonsBlock(
|
||||
onLongClick = onSecondaryButtonLongClick,
|
||||
content = {
|
||||
Spacer(Modifier.width(16.dp))
|
||||
Icon(secondaryButtonIcon, null)
|
||||
Icon(
|
||||
imageVector = secondaryButtonIcon,
|
||||
contentDescription = null
|
||||
)
|
||||
Spacer(Modifier.width(16.dp))
|
||||
Text(secondaryButtonText)
|
||||
Spacer(Modifier.width(16.dp))
|
||||
}
|
||||
)
|
||||
if (showColumnarFabInRow && columnarFab != null) {
|
||||
Column { columnarFab() }
|
||||
Column(
|
||||
content = columnarFab
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -423,7 +423,7 @@ fun ApngToolsContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.type == null) to isPortrait,
|
||||
isNoData = component.type == null,
|
||||
onSecondaryButtonClick = {
|
||||
when (component.type) {
|
||||
is Screen.ApngTools.Type.ApngToImage -> pickSingleApngLauncher.pickFile()
|
||||
@ -527,7 +527,6 @@ fun ApngToolsContent(
|
||||
}
|
||||
}
|
||||
},
|
||||
isPortrait = isPortrait,
|
||||
canShowScreenData = component.type != null
|
||||
)
|
||||
|
||||
|
@ -264,7 +264,7 @@ fun AudioCoverExtractorContent(
|
||||
}
|
||||
|
||||
BottomButtonsBlock(
|
||||
targetState = covers.isEmpty() to isPortrait,
|
||||
isNoData = covers.isEmpty(),
|
||||
isPrimaryButtonEnabled = canSave,
|
||||
onSecondaryButtonClick = audioPicker::pickFile,
|
||||
isPrimaryButtonVisible = covers.isNotEmpty(),
|
||||
@ -286,8 +286,7 @@ fun AudioCoverExtractorContent(
|
||||
onSaveRequest = save
|
||||
)
|
||||
},
|
||||
canShowScreenData = covers.isNotEmpty(),
|
||||
isPortrait = isPortrait
|
||||
canShowScreenData = covers.isNotEmpty()
|
||||
)
|
||||
|
||||
ExitWithoutSavingDialog(
|
||||
|
@ -214,7 +214,7 @@ fun Base64ToolsContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.base64String.isEmpty() && isPortrait) to isPortrait,
|
||||
isNoData = component.base64String.isEmpty() && isPortrait,
|
||||
isPrimaryButtonVisible = isPortrait || component.base64String.isNotEmpty(),
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onSecondaryButtonLongClick = {
|
||||
@ -243,8 +243,7 @@ fun Base64ToolsContent(
|
||||
visible = showOneTimeImagePickingDialog
|
||||
)
|
||||
},
|
||||
canShowScreenData = true,
|
||||
isPortrait = isPortrait,
|
||||
canShowScreenData = true
|
||||
)
|
||||
|
||||
LoadingDialog(
|
||||
|
@ -40,7 +40,6 @@ import androidx.compose.material3.Badge
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
@ -50,7 +49,6 @@ import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ru.tech.imageresizershrinker.core.domain.model.HashingType
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.plus
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen
|
||||
@ -73,8 +71,6 @@ fun ChecksumToolsContent(
|
||||
val essentials = rememberLocalEssentials()
|
||||
val showConfetti: () -> Unit = essentials::showConfetti
|
||||
|
||||
val isPortrait by isPortraitOrientationAsState()
|
||||
|
||||
val pagerState = rememberPagerState { ChecksumPage.ENTRIES_COUNT }
|
||||
|
||||
AdaptiveLayoutScreen(
|
||||
@ -114,7 +110,6 @@ fun ChecksumToolsContent(
|
||||
addHorizontalCutoutPaddingIfNoPreview = false,
|
||||
showImagePreviewAsStickyHeader = false,
|
||||
canShowScreenData = true,
|
||||
isPortrait = isPortrait,
|
||||
underTopAppBarContent = {
|
||||
ChecksumToolsTabs(pagerState)
|
||||
},
|
||||
|
@ -144,7 +144,7 @@ fun CipherContent(
|
||||
actions = {},
|
||||
buttons = {
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.uri == null) to isPortrait,
|
||||
isNoData = component.uri == null,
|
||||
onSecondaryButtonClick = filePicker::pickFile,
|
||||
secondaryButtonIcon = Icons.Rounded.FileOpen,
|
||||
secondaryButtonText = stringResource(R.string.pick_file),
|
||||
@ -194,7 +194,6 @@ fun CipherContent(
|
||||
imagePreview = {},
|
||||
showImagePreviewAsStickyHeader = false,
|
||||
placeImagePreview = false,
|
||||
isPortrait = isPortrait,
|
||||
showActionsInTopAppBar = false
|
||||
)
|
||||
|
||||
|
@ -183,7 +183,6 @@ fun CollageMakerContent(
|
||||
)
|
||||
},
|
||||
onGoBack = onBack,
|
||||
isPortrait = isPortrait,
|
||||
shouldDisableBackHandler = !component.haveChanges,
|
||||
actions = { scaffoldState ->
|
||||
var editSheetData by remember {
|
||||
@ -455,7 +454,7 @@ fun CollageMakerContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.uris.isNullOrEmpty()) to isPortrait,
|
||||
isNoData = component.uris.isNullOrEmpty(),
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onPrimaryButtonClick = {
|
||||
saveBitmaps(null)
|
||||
|
@ -126,7 +126,6 @@ fun ColorToolsContent(
|
||||
},
|
||||
buttons = {},
|
||||
placeImagePreview = false,
|
||||
canShowScreenData = true,
|
||||
isPortrait = isPortrait
|
||||
canShowScreenData = true
|
||||
)
|
||||
}
|
@ -152,7 +152,6 @@ fun CropContent(
|
||||
)
|
||||
},
|
||||
onGoBack = onBack,
|
||||
isPortrait = isPortrait,
|
||||
shouldDisableBackHandler = component.bitmap == null,
|
||||
actions = {
|
||||
var job by remember { mutableStateOf<Job?>(null) }
|
||||
@ -314,7 +313,7 @@ fun CropContent(
|
||||
}
|
||||
var job by remember { mutableStateOf<Job?>(null) }
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.bitmap == null) to isPortrait,
|
||||
isNoData = component.bitmap == null,
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onSecondaryButtonLongClick = {
|
||||
showOneTimeImagePickingDialog = true
|
||||
|
@ -234,7 +234,7 @@ fun DeleteExifContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.uris.isNullOrEmpty()) to isPortrait,
|
||||
isNoData = component.uris.isNullOrEmpty(),
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onPrimaryButtonClick = {
|
||||
saveBitmaps(null)
|
||||
@ -264,8 +264,7 @@ fun DeleteExifContent(
|
||||
noDataControls = {
|
||||
ImageNotPickedWidget(onPickImage = pickImage)
|
||||
},
|
||||
canShowScreenData = !component.uris.isNullOrEmpty(),
|
||||
isPortrait = isPortrait
|
||||
canShowScreenData = !component.uris.isNullOrEmpty()
|
||||
)
|
||||
|
||||
LoadingDialog(
|
||||
|
@ -288,7 +288,7 @@ fun DocumentScannerContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = component.uris.isEmpty() to isPortrait,
|
||||
isNoData = component.uris.isEmpty(),
|
||||
onSecondaryButtonClick = {
|
||||
runCatching {
|
||||
documentScanner.scan()
|
||||
@ -320,8 +320,7 @@ fun DocumentScannerContent(
|
||||
formatForFilenameSelection = component.getFormatForFilenameSelection()
|
||||
)
|
||||
},
|
||||
canShowScreenData = component.uris.isNotEmpty(),
|
||||
isPortrait = isPortrait
|
||||
canShowScreenData = component.uris.isNotEmpty()
|
||||
)
|
||||
|
||||
ExitWithoutSavingDialog(
|
||||
|
@ -207,7 +207,6 @@ fun DrawContent(
|
||||
)
|
||||
},
|
||||
onGoBack = onBack,
|
||||
isPortrait = isPortrait,
|
||||
shouldDisableBackHandler = component.drawBehavior is DrawBehavior.None,
|
||||
actions = {
|
||||
secondaryControls()
|
||||
@ -331,7 +330,7 @@ fun DrawContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.drawBehavior is DrawBehavior.None) to isPortrait,
|
||||
isNoData = component.drawBehavior is DrawBehavior.None,
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onSecondaryButtonLongClick = {
|
||||
showOneTimeImagePickingDialog = true
|
||||
|
@ -85,7 +85,6 @@ fun EditExifContent(
|
||||
|
||||
AutoContentBasedColors(component.uri)
|
||||
|
||||
var showOriginal by rememberSaveable { mutableStateOf(false) }
|
||||
var showExitDialog by rememberSaveable { mutableStateOf(false) }
|
||||
|
||||
val imagePicker = rememberImagePicker(onSuccess = component::setUri)
|
||||
@ -231,7 +230,7 @@ fun EditExifContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.uri == Uri.EMPTY) to isPortrait,
|
||||
isNoData = component.uri == Uri.EMPTY,
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onSecondaryButtonLongClick = {
|
||||
showOneTimeImagePickingDialog = true
|
||||
@ -263,9 +262,7 @@ fun EditExifContent(
|
||||
if (!component.isImageLoading) {
|
||||
ImageNotPickedWidget(onPickImage = pickImage)
|
||||
}
|
||||
},
|
||||
forceImagePreviewToMax = showOriginal,
|
||||
isPortrait = isPortrait
|
||||
}
|
||||
)
|
||||
|
||||
ExitWithoutSavingDialog(
|
||||
|
@ -221,7 +221,6 @@ fun EraseBackgroundContent(
|
||||
)
|
||||
},
|
||||
onGoBack = onBack,
|
||||
isPortrait = isPortrait,
|
||||
shouldDisableBackHandler = !component.haveChanges,
|
||||
actions = {
|
||||
secondaryControls()
|
||||
@ -451,7 +450,7 @@ fun EraseBackgroundContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.bitmap == null) to isPortrait,
|
||||
isNoData = component.bitmap == null,
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onSecondaryButtonLongClick = {
|
||||
showOneTimeImagePickingDialog = true
|
||||
|
@ -263,14 +263,13 @@ fun FiltersContent(
|
||||
)
|
||||
},
|
||||
forceImagePreviewToMax = showOriginal,
|
||||
isPortrait = isPortrait,
|
||||
controls = {
|
||||
FiltersContentControls(component)
|
||||
},
|
||||
buttons = { actions ->
|
||||
buttons = { bottomActions ->
|
||||
FiltersContentActionButtons(
|
||||
component = component,
|
||||
actions = actions,
|
||||
actions = bottomActions,
|
||||
imagePicker = imagePicker,
|
||||
pickSingleImagePicker = pickSingleImagePicker,
|
||||
selectionFilterPicker = selectionFilterPicker
|
||||
|
@ -79,7 +79,7 @@ internal fun FiltersContentActionButtons(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.basicFilterState.uris.isNullOrEmpty() && component.maskingFilterState.uri == null) to isPortrait,
|
||||
isNoData = component.basicFilterState.uris.isNullOrEmpty() && component.maskingFilterState.uri == null,
|
||||
onSecondaryButtonClick = {
|
||||
when (filterType) {
|
||||
is Screen.Filter.Type.Basic -> imagePicker.pickImage()
|
||||
|
@ -237,7 +237,7 @@ fun FormatConversionContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.uris.isNullOrEmpty()) to isPortrait,
|
||||
isNoData = component.uris.isNullOrEmpty(),
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onPrimaryButtonClick = {
|
||||
saveBitmaps(null)
|
||||
@ -284,8 +284,7 @@ fun FormatConversionContent(
|
||||
if (!component.isImageLoading) {
|
||||
ImageNotPickedWidget(onPickImage = pickImage)
|
||||
}
|
||||
},
|
||||
isPortrait = isPortrait
|
||||
}
|
||||
)
|
||||
|
||||
val transformations by remember(component.imageInfo) {
|
||||
|
@ -269,7 +269,7 @@ fun GeneratePaletteContent(
|
||||
}
|
||||
|
||||
BottomButtonsBlock(
|
||||
targetState = (useMaterialYouPalette == null || component.bitmap == null) to isPortrait,
|
||||
isNoData = useMaterialYouPalette == null || component.bitmap == null,
|
||||
onSecondaryButtonClick = pickImage,
|
||||
isPrimaryButtonVisible = false,
|
||||
onPrimaryButtonClick = {},
|
||||
@ -297,8 +297,7 @@ fun GeneratePaletteContent(
|
||||
noDataControls = {
|
||||
preferences()
|
||||
},
|
||||
canShowScreenData = useMaterialYouPalette != null && component.bitmap != null,
|
||||
isPortrait = isPortrait
|
||||
canShowScreenData = useMaterialYouPalette != null && component.bitmap != null
|
||||
)
|
||||
|
||||
var colorPickerValue by rememberSaveable(stateSaver = ColorSaver) {
|
||||
|
@ -248,7 +248,7 @@ fun GifToolsContent(
|
||||
}
|
||||
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.type == null) to isPortrait,
|
||||
isNoData = component.type == null,
|
||||
onSecondaryButtonClick = {
|
||||
when (component.type) {
|
||||
is Screen.GifTools.Type.GifToImage -> pickSingleGifLauncher.pickFile()
|
||||
@ -302,7 +302,6 @@ fun GifToolsContent(
|
||||
}
|
||||
)
|
||||
},
|
||||
isPortrait = isPortrait,
|
||||
canShowScreenData = component.type != null
|
||||
)
|
||||
|
||||
|
@ -32,7 +32,6 @@ import androidx.compose.ui.unit.dp
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen
|
||||
@ -82,11 +81,8 @@ fun GradientMakerContent(
|
||||
|
||||
val pickImage = imagePicker::pickImage
|
||||
|
||||
val isPortrait by isPortraitOrientationAsState()
|
||||
|
||||
AdaptiveLayoutScreen(
|
||||
shouldDisableBackHandler = !component.haveChanges,
|
||||
isPortrait = isPortrait,
|
||||
canShowScreenData = allowPickingImage != null,
|
||||
title = {
|
||||
TopAppBarTitle(
|
||||
|
@ -57,7 +57,7 @@ internal fun GradientMakerBottomButtons(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.allowPickingImage == null) to isPortrait,
|
||||
isNoData = component.allowPickingImage == null,
|
||||
onSecondaryButtonClick = imagePicker::pickImage,
|
||||
isSecondaryButtonVisible = component.allowPickingImage == true,
|
||||
isPrimaryButtonVisible = component.brush != null,
|
||||
|
@ -215,7 +215,7 @@ fun ImageCutterContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.uris.isNullOrEmpty()) to isPortrait,
|
||||
isNoData = component.uris.isNullOrEmpty(),
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onPrimaryButtonClick = {
|
||||
saveBitmaps(null)
|
||||
@ -307,8 +307,7 @@ fun ImageCutterContent(
|
||||
if (!component.isImageLoading) {
|
||||
ImageNotPickedWidget(onPickImage = pickImage)
|
||||
}
|
||||
},
|
||||
isPortrait = isPortrait
|
||||
}
|
||||
)
|
||||
|
||||
ExitWithoutSavingDialog(
|
||||
|
@ -199,7 +199,7 @@ fun ImageSplitterContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.uris.isEmpty()) to isPortrait,
|
||||
isNoData = component.uris.isEmpty(),
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onPrimaryButtonClick = {
|
||||
saveBitmaps(null)
|
||||
@ -234,8 +234,7 @@ fun ImageSplitterContent(
|
||||
if (!component.isImageLoading) {
|
||||
ImageNotPickedWidget(onPickImage = pickImage)
|
||||
}
|
||||
},
|
||||
isPortrait = isPortrait
|
||||
}
|
||||
)
|
||||
|
||||
ExitWithoutSavingDialog(
|
||||
|
@ -273,8 +273,8 @@ fun ImageStackingContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
isNoData = component.stackImages.isEmpty(),
|
||||
isPrimaryButtonVisible = component.stackImages.isNotEmpty(),
|
||||
targetState = (component.stackImages.isEmpty()) to isPortrait,
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onPrimaryButtonClick = {
|
||||
saveBitmaps(null)
|
||||
@ -307,8 +307,7 @@ fun ImageStackingContent(
|
||||
ImageNotPickedWidget(onPickImage = pickImage)
|
||||
}
|
||||
},
|
||||
canShowScreenData = component.stackImages.isNotEmpty(),
|
||||
isPortrait = isPortrait
|
||||
canShowScreenData = component.stackImages.isNotEmpty()
|
||||
)
|
||||
|
||||
LoadingDialog(
|
||||
|
@ -266,8 +266,8 @@ fun ImageStitchingContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
isNoData = component.uris.isNullOrEmpty(),
|
||||
isPrimaryButtonVisible = component.previewBitmap != null,
|
||||
targetState = (component.uris.isNullOrEmpty()) to isPortrait,
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onPrimaryButtonClick = {
|
||||
saveBitmaps(null)
|
||||
@ -300,8 +300,7 @@ fun ImageStitchingContent(
|
||||
ImageNotPickedWidget(onPickImage = pickImage)
|
||||
}
|
||||
},
|
||||
canShowScreenData = !component.uris.isNullOrEmpty(),
|
||||
isPortrait = isPortrait
|
||||
canShowScreenData = !component.uris.isNullOrEmpty()
|
||||
)
|
||||
|
||||
LoadingDialog(
|
||||
|
@ -33,7 +33,6 @@ import ru.tech.imageresizershrinker.core.resources.icons.Jxl
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberFilePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isJxl
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
|
||||
@ -175,8 +174,6 @@ fun JxlToolsContent(
|
||||
else component.onGoBack()
|
||||
}
|
||||
|
||||
val isPortrait by isPortraitOrientationAsState()
|
||||
|
||||
AdaptiveLayoutScreen(
|
||||
shouldDisableBackHandler = !component.haveChanges,
|
||||
title = {
|
||||
@ -239,7 +236,6 @@ fun JxlToolsContent(
|
||||
noDataControls = {
|
||||
JxlToolsNoDataControls(::pickImage)
|
||||
},
|
||||
isPortrait = isPortrait,
|
||||
canShowScreenData = component.type != null
|
||||
)
|
||||
|
||||
|
@ -30,7 +30,6 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.ImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock
|
||||
@ -54,7 +53,6 @@ internal fun JxlToolsButtons(
|
||||
null -> null
|
||||
} ?: emptyList()
|
||||
|
||||
val isPortrait by isPortraitOrientationAsState()
|
||||
val essentials = rememberLocalEssentials()
|
||||
|
||||
val save: (oneTimeSaveLocationUri: String?) -> Unit = {
|
||||
@ -70,7 +68,7 @@ internal fun JxlToolsButtons(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.type == null) to isPortrait,
|
||||
isNoData = component.type == null,
|
||||
onSecondaryButtonClick = onPickImage,
|
||||
isPrimaryButtonVisible = component.canSave,
|
||||
onPrimaryButtonClick = {
|
||||
|
@ -246,8 +246,8 @@ fun LimitsResizeContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
isNoData = component.uris.isNullOrEmpty(),
|
||||
isPrimaryButtonVisible = component.canSave,
|
||||
targetState = (component.uris.isNullOrEmpty()) to isPortrait,
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onPrimaryButtonClick = {
|
||||
saveBitmaps(null)
|
||||
@ -280,8 +280,7 @@ fun LimitsResizeContent(
|
||||
TopAppBarEmoji()
|
||||
}
|
||||
},
|
||||
canShowScreenData = component.bitmap != null,
|
||||
isPortrait = isPortrait
|
||||
canShowScreenData = component.bitmap != null
|
||||
)
|
||||
|
||||
LoadingDialog(
|
||||
|
@ -20,11 +20,9 @@ package ru.tech.imageresizershrinker.feature.load_net_image.presentation
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.dialogs.LoadingDialog
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TopAppBarTitle
|
||||
@ -43,8 +41,6 @@ fun LoadNetImageContent(
|
||||
) {
|
||||
AutoContentBasedColors(component.bitmap)
|
||||
|
||||
val isPortrait by isPortraitOrientationAsState()
|
||||
|
||||
AdaptiveLayoutScreen(
|
||||
shouldDisableBackHandler = true,
|
||||
title = {
|
||||
@ -79,8 +75,7 @@ fun LoadNetImageContent(
|
||||
actions = actions
|
||||
)
|
||||
},
|
||||
canShowScreenData = true,
|
||||
isPortrait = isPortrait
|
||||
canShowScreenData = true
|
||||
)
|
||||
|
||||
LoadingDialog(
|
||||
|
@ -27,7 +27,7 @@ import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.setValue
|
||||
import ru.tech.imageresizershrinker.core.resources.icons.ImageEdit
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isLandscapeOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.dialogs.OneTimeSaveLocationSelectionDialog
|
||||
@ -39,7 +39,7 @@ internal fun LoadNetImageActionButtons(
|
||||
component: LoadNetImageComponent,
|
||||
actions: @Composable RowScope.() -> Unit
|
||||
) {
|
||||
val isLandscape by isLandscapeOrientationAsState()
|
||||
val isPortrait by isPortraitOrientationAsState()
|
||||
val essentials = rememberLocalEssentials()
|
||||
|
||||
val saveBitmap: (oneTimeSaveLocationUri: String?) -> Unit = {
|
||||
@ -56,7 +56,7 @@ internal fun LoadNetImageActionButtons(
|
||||
mutableStateOf(listOf<Uri>())
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = false to !isLandscape,
|
||||
isNoData = false,
|
||||
onSecondaryButtonClick = {
|
||||
component.cacheImages {
|
||||
editSheetData = it
|
||||
@ -72,7 +72,7 @@ internal fun LoadNetImageActionButtons(
|
||||
showFolderSelectionDialog = true
|
||||
},
|
||||
actions = {
|
||||
if (!isLandscape) actions()
|
||||
if (isPortrait) actions()
|
||||
}
|
||||
)
|
||||
OneTimeSaveLocationSelectionDialog(
|
||||
|
@ -207,7 +207,6 @@ fun MarkupLayersContent(
|
||||
}
|
||||
},
|
||||
onGoBack = onBack,
|
||||
isPortrait = isPortrait,
|
||||
shouldDisableBackHandler = component.backgroundBehavior is BackgroundBehavior.None,
|
||||
actions = {
|
||||
MarkupLayersActions(
|
||||
@ -356,7 +355,7 @@ fun MarkupLayersContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.backgroundBehavior is BackgroundBehavior.None) to isPortrait,
|
||||
isNoData = component.backgroundBehavior is BackgroundBehavior.None,
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onSecondaryButtonLongClick = {
|
||||
showOneTimeImagePickingDialog = true
|
||||
|
@ -42,7 +42,6 @@ import ru.tech.imageresizershrinker.core.domain.image.model.ImageInfo
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.animation.animate
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.state.derivedValueOf
|
||||
@ -72,8 +71,6 @@ fun NoiseGenerationContent(
|
||||
val essentials = rememberLocalEssentials()
|
||||
val showConfetti: () -> Unit = essentials::showConfetti
|
||||
|
||||
val isPortrait by isPortraitOrientationAsState()
|
||||
|
||||
val saveBitmap: (oneTimeSaveLocationUri: String?) -> Unit = {
|
||||
component.saveNoise(
|
||||
oneTimeSaveLocationUri = it,
|
||||
@ -174,7 +171,7 @@ fun NoiseGenerationContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = false to isPortrait,
|
||||
isNoData = false,
|
||||
isSecondaryButtonVisible = false,
|
||||
onSecondaryButtonClick = {},
|
||||
onPrimaryButtonClick = {
|
||||
@ -194,8 +191,7 @@ fun NoiseGenerationContent(
|
||||
formatForFilenameSelection = component.getFormatForFilenameSelection()
|
||||
)
|
||||
},
|
||||
canShowScreenData = true,
|
||||
isPortrait = isPortrait
|
||||
canShowScreenData = true
|
||||
)
|
||||
|
||||
LoadingDialog(
|
||||
|
@ -321,7 +321,6 @@ fun RecognizeTextContent(
|
||||
if (component.type == null) 12.dp
|
||||
else 20.dp
|
||||
).value,
|
||||
isPortrait = isPortrait,
|
||||
canShowScreenData = type != null
|
||||
)
|
||||
|
||||
|
@ -77,7 +77,7 @@ internal fun RecognizeTextButtons(
|
||||
)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (type == null) to isPortrait,
|
||||
isNoData = type == null,
|
||||
onSecondaryButtonClick = multipleImagePicker::pickImage,
|
||||
onSecondaryButtonLongClick = {
|
||||
showOneTimeImagePickingDialog = true
|
||||
|
@ -336,7 +336,7 @@ fun ResizeAndConvertContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.uris.isNullOrEmpty()) to isPortrait,
|
||||
isNoData = component.uris.isNullOrEmpty(),
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onPrimaryButtonClick = {
|
||||
saveBitmaps(null)
|
||||
@ -383,8 +383,7 @@ fun ResizeAndConvertContent(
|
||||
if (!component.isImageLoading) {
|
||||
ImageNotPickedWidget(onPickImage = pickImage)
|
||||
}
|
||||
},
|
||||
isPortrait = isPortrait
|
||||
}
|
||||
)
|
||||
|
||||
ResetDialog(
|
||||
|
@ -50,7 +50,7 @@ import ru.tech.imageresizershrinker.core.ui.theme.takeColorFromScheme
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isLandscapeOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberBarcodeScanner
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
|
||||
@ -127,7 +127,7 @@ fun ScanQrCodeContent(
|
||||
)
|
||||
}
|
||||
|
||||
val isLandscape by isLandscapeOrientationAsState()
|
||||
val isPortrait by isPortraitOrientationAsState()
|
||||
|
||||
AdaptiveLayoutScreen(
|
||||
shouldDisableBackHandler = true,
|
||||
@ -185,7 +185,7 @@ fun ScanQrCodeContent(
|
||||
},
|
||||
showImagePreviewAsStickyHeader = false,
|
||||
imagePreview = {
|
||||
if (isLandscape) {
|
||||
if (!isPortrait) {
|
||||
QrCodePreview(
|
||||
captureController = captureController,
|
||||
isLandscape = true,
|
||||
@ -194,7 +194,7 @@ fun ScanQrCodeContent(
|
||||
}
|
||||
},
|
||||
controls = {
|
||||
if (!isLandscape) {
|
||||
if (isPortrait) {
|
||||
Spacer(modifier = Modifier.height(20.dp))
|
||||
QrCodePreview(
|
||||
captureController = captureController,
|
||||
@ -215,7 +215,7 @@ fun ScanQrCodeContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (params.content.isEmpty() && !isLandscape) to !isLandscape,
|
||||
isNoData = params.content.isEmpty() && isPortrait,
|
||||
secondaryButtonIcon = Icons.Outlined.QrCodeScanner,
|
||||
secondaryButtonText = stringResource(R.string.start_scanning),
|
||||
onSecondaryButtonClick = scanner::scan,
|
||||
@ -229,10 +229,10 @@ fun ScanQrCodeContent(
|
||||
showFolderSelectionDialog = true
|
||||
},
|
||||
actions = {
|
||||
if (!isLandscape) actions()
|
||||
if (isPortrait) actions()
|
||||
},
|
||||
showColumnarFabInRow = true,
|
||||
isPrimaryButtonVisible = !isLandscape || params.content.isNotEmpty(),
|
||||
isPrimaryButtonVisible = isPortrait || params.content.isNotEmpty(),
|
||||
columnarFab = {
|
||||
EnhancedFloatingActionButton(
|
||||
onClick = analyzerImagePicker::pickImage,
|
||||
@ -269,8 +269,7 @@ fun ScanQrCodeContent(
|
||||
visible = showOneTimeImagePickingDialog
|
||||
)
|
||||
},
|
||||
canShowScreenData = true,
|
||||
isPortrait = !isLandscape
|
||||
canShowScreenData = true
|
||||
)
|
||||
|
||||
LoadingDialog(
|
||||
|
@ -319,7 +319,7 @@ fun SingleEditContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.uri == Uri.EMPTY) to isPortrait,
|
||||
isNoData = component.uri == Uri.EMPTY,
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onSecondaryButtonLongClick = {
|
||||
showOneTimeImagePickingDialog = true
|
||||
@ -353,8 +353,7 @@ fun SingleEditContent(
|
||||
ImageNotPickedWidget(onPickImage = pickImage)
|
||||
}
|
||||
},
|
||||
forceImagePreviewToMax = showOriginal,
|
||||
isPortrait = isPortrait
|
||||
forceImagePreviewToMax = showOriginal
|
||||
)
|
||||
|
||||
ResetDialog(
|
||||
|
@ -170,7 +170,7 @@ fun SvgMakerContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = component.uris.isEmpty() to isPortrait,
|
||||
isNoData = component.uris.isEmpty(),
|
||||
onSecondaryButtonClick = imagePicker::pickImage,
|
||||
isPrimaryButtonVisible = component.uris.isNotEmpty(),
|
||||
onPrimaryButtonClick = {
|
||||
@ -198,8 +198,7 @@ fun SvgMakerContent(
|
||||
visible = showOneTimeImagePickingDialog
|
||||
)
|
||||
},
|
||||
canShowScreenData = component.uris.isNotEmpty(),
|
||||
isPortrait = isPortrait
|
||||
canShowScreenData = component.uris.isNotEmpty()
|
||||
)
|
||||
|
||||
ResetDialog(
|
||||
|
@ -248,7 +248,7 @@ fun WatermarkingContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.uris.isEmpty()) to isPortrait,
|
||||
isNoData = component.uris.isEmpty(),
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onPrimaryButtonClick = {
|
||||
saveBitmaps(null)
|
||||
@ -279,7 +279,6 @@ fun WatermarkingContent(
|
||||
noDataControls = {
|
||||
ImageNotPickedWidget(onPickImage = pickImage)
|
||||
},
|
||||
isPortrait = isPortrait,
|
||||
canShowScreenData = component.uris.isNotEmpty()
|
||||
)
|
||||
|
||||
|
@ -336,7 +336,7 @@ fun WebpToolsContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.type == null) to isPortrait,
|
||||
isNoData = component.type == null,
|
||||
onSecondaryButtonClick = {
|
||||
when (component.type) {
|
||||
is Screen.WebpTools.Type.WebpToImage -> pickSingleWebpLauncher.pickFile()
|
||||
@ -426,7 +426,6 @@ fun WebpToolsContent(
|
||||
}
|
||||
}
|
||||
},
|
||||
isPortrait = isPortrait,
|
||||
canShowScreenData = component.type != null
|
||||
)
|
||||
|
||||
|
@ -296,7 +296,7 @@ fun WeightResizeContent(
|
||||
mutableStateOf(false)
|
||||
}
|
||||
BottomButtonsBlock(
|
||||
targetState = (component.uris.isNullOrEmpty()) to isPortrait,
|
||||
isNoData = component.uris.isNullOrEmpty(),
|
||||
onSecondaryButtonClick = pickImage,
|
||||
onPrimaryButtonClick = {
|
||||
saveBitmaps(null)
|
||||
@ -333,8 +333,7 @@ fun WeightResizeContent(
|
||||
if (!component.isImageLoading) {
|
||||
ImageNotPickedWidget(onPickImage = pickImage)
|
||||
}
|
||||
},
|
||||
isPortrait = isPortrait
|
||||
}
|
||||
)
|
||||
|
||||
LoadingDialog(
|
||||
|
@ -32,7 +32,6 @@ import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberFilePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock
|
||||
@ -68,8 +67,6 @@ fun ZipContent(
|
||||
isPickedAlready = !component.initialUris.isNullOrEmpty()
|
||||
)
|
||||
|
||||
val isPortrait by isPortraitOrientationAsState()
|
||||
|
||||
AdaptiveLayoutScreen(
|
||||
shouldDisableBackHandler = !(component.uris.isNotEmpty() && component.byteArray != null),
|
||||
title = {
|
||||
@ -97,7 +94,7 @@ fun ZipContent(
|
||||
},
|
||||
buttons = {
|
||||
BottomButtonsBlock(
|
||||
targetState = component.uris.isEmpty() to isPortrait,
|
||||
isNoData = component.uris.isEmpty(),
|
||||
onSecondaryButtonClick = filePicker::pickFile,
|
||||
secondaryButtonIcon = Icons.Rounded.FileOpen,
|
||||
secondaryButtonText = stringResource(R.string.pick_file),
|
||||
@ -117,8 +114,7 @@ fun ZipContent(
|
||||
}
|
||||
)
|
||||
},
|
||||
canShowScreenData = component.uris.isNotEmpty(),
|
||||
isPortrait = isPortrait
|
||||
canShowScreenData = component.uris.isNotEmpty()
|
||||
)
|
||||
|
||||
ExitWithoutSavingDialog(
|
||||
|
Reference in New Issue
Block a user