mirror of
https://github.com/T8RIN/ImageToolbox.git
synced 2025-08-06 15:49:35 +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
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user