mirror of
https://github.com/T8RIN/ImageToolbox.git
synced 2025-05-17 21:45:59 +08:00
UI Fixes
This commit is contained in:
@ -26,7 +26,7 @@ import androidx.compose.ui.res.stringResource
|
|||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ru.tech.imageresizershrinker.core.filters.domain.model.BlurEdgeMode
|
import ru.tech.imageresizershrinker.core.filters.domain.model.BlurEdgeMode
|
||||||
import ru.tech.imageresizershrinker.core.filters.presentation.utils.translatedName
|
import ru.tech.imageresizershrinker.core.filters.presentation.utils.translatedName
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
internal fun EdgeModeSelector(
|
internal fun EdgeModeSelector(
|
||||||
@ -44,7 +44,7 @@ internal fun EdgeModeSelector(
|
|||||||
)
|
)
|
||||||
val entries = BlurEdgeMode.entries
|
val entries = BlurEdgeMode.entries
|
||||||
|
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
inactiveButtonColor = MaterialTheme.colorScheme.surfaceContainerHigh,
|
inactiveButtonColor = MaterialTheme.colorScheme.surfaceContainerHigh,
|
||||||
items = entries.map { it.translatedName },
|
items = entries.map { it.translatedName },
|
||||||
selectedIndex = entries.indexOf(value),
|
selectedIndex = entries.indexOf(value),
|
||||||
|
@ -35,7 +35,7 @@ import ru.tech.imageresizershrinker.core.filters.domain.model.FadeSide
|
|||||||
import ru.tech.imageresizershrinker.core.filters.domain.model.SideFadeParams
|
import ru.tech.imageresizershrinker.core.filters.domain.model.SideFadeParams
|
||||||
import ru.tech.imageresizershrinker.core.filters.presentation.model.UiFilter
|
import ru.tech.imageresizershrinker.core.filters.presentation.model.UiFilter
|
||||||
import ru.tech.imageresizershrinker.core.filters.presentation.utils.translatedName
|
import ru.tech.imageresizershrinker.core.filters.presentation.utils.translatedName
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ -88,7 +88,7 @@ internal fun SideFadeRelativeItem(
|
|||||||
end = 12.dp,
|
end = 12.dp,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
inactiveButtonColor = MaterialTheme.colorScheme.surfaceContainerHigh,
|
inactiveButtonColor = MaterialTheme.colorScheme.surfaceContainerHigh,
|
||||||
items = FadeSide.entries.map { it.translatedName },
|
items = FadeSide.entries.map { it.translatedName },
|
||||||
selectedIndex = FadeSide.entries.indexOf(sideFade),
|
selectedIndex = FadeSide.entries.indexOf(sideFade),
|
||||||
|
@ -27,7 +27,7 @@ import androidx.compose.ui.res.stringResource
|
|||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ru.tech.imageresizershrinker.core.filters.domain.model.TransferFunc
|
import ru.tech.imageresizershrinker.core.filters.domain.model.TransferFunc
|
||||||
import ru.tech.imageresizershrinker.core.filters.presentation.utils.translatedName
|
import ru.tech.imageresizershrinker.core.filters.presentation.utils.translatedName
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
internal fun TransferFuncSelector(
|
internal fun TransferFuncSelector(
|
||||||
@ -46,7 +46,7 @@ internal fun TransferFuncSelector(
|
|||||||
val entries = remember {
|
val entries = remember {
|
||||||
TransferFunc.entries
|
TransferFunc.entries
|
||||||
}
|
}
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
inactiveButtonColor = MaterialTheme.colorScheme.surfaceContainerHigh,
|
inactiveButtonColor = MaterialTheme.colorScheme.surfaceContainerHigh,
|
||||||
items = entries.map { it.translatedName },
|
items = entries.map { it.translatedName },
|
||||||
selectedIndex = entries.indexOf(value),
|
selectedIndex = entries.indexOf(value),
|
||||||
|
@ -40,8 +40,8 @@ import ru.tech.imageresizershrinker.core.filters.presentation.model.UiFilter
|
|||||||
import ru.tech.imageresizershrinker.core.filters.presentation.utils.translatedName
|
import ru.tech.imageresizershrinker.core.filters.presentation.utils.translatedName
|
||||||
import ru.tech.imageresizershrinker.core.resources.R
|
import ru.tech.imageresizershrinker.core.resources.R
|
||||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.toImageModel
|
import ru.tech.imageresizershrinker.core.ui.utils.helper.toImageModel
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.ImageSelector
|
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.ImageSelector
|
||||||
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
@ -53,7 +53,7 @@ internal fun FloatPaletteImageModelTripleItem(
|
|||||||
onFilterChange: (value: Triple<Float, PaletteTransferSpace, ImageModel>) -> Unit,
|
onFilterChange: (value: Triple<Float, PaletteTransferSpace, ImageModel>) -> Unit,
|
||||||
previewOnly: Boolean
|
previewOnly: Boolean
|
||||||
) {
|
) {
|
||||||
var sliderState1 by remember { mutableFloatStateOf(value.first.toFloat()) }
|
var sliderState1 by remember { mutableFloatStateOf(value.first) }
|
||||||
var colorSpace1 by remember { mutableStateOf(value.second) }
|
var colorSpace1 by remember { mutableStateOf(value.second) }
|
||||||
var uri1 by remember(value) { mutableStateOf(value.third.data) }
|
var uri1 by remember(value) { mutableStateOf(value.third.data) }
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ internal fun FloatPaletteImageModelTripleItem(
|
|||||||
PaletteTransferSpace.entries
|
PaletteTransferSpace.entries
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
inactiveButtonColor = MaterialTheme.colorScheme.surfaceContainerHigh,
|
inactiveButtonColor = MaterialTheme.colorScheme.surfaceContainerHigh,
|
||||||
items = entries.map { it.translatedName },
|
items = entries.map { it.translatedName },
|
||||||
selectedIndex = entries.indexOf(colorSpace1),
|
selectedIndex = entries.indexOf(colorSpace1),
|
||||||
|
@ -40,9 +40,9 @@ import ru.tech.imageresizershrinker.core.filters.presentation.model.UiFilter
|
|||||||
import ru.tech.imageresizershrinker.core.filters.presentation.utils.translatedName
|
import ru.tech.imageresizershrinker.core.filters.presentation.utils.translatedName
|
||||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.toColor
|
import ru.tech.imageresizershrinker.core.ui.utils.helper.toColor
|
||||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.toModel
|
import ru.tech.imageresizershrinker.core.ui.utils.helper.toModel
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.color_picker.ColorSelectionRowDefaults
|
import ru.tech.imageresizershrinker.core.ui.widget.color_picker.ColorSelectionRowDefaults
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.ColorRowSelector
|
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.ColorRowSelector
|
||||||
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ -124,7 +124,7 @@ internal fun NumberColorModelPopArtTripleItem(
|
|||||||
PopArtBlendingMode.entries
|
PopArtBlendingMode.entries
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
inactiveButtonColor = MaterialTheme.colorScheme.surfaceContainerHigh,
|
inactiveButtonColor = MaterialTheme.colorScheme.surfaceContainerHigh,
|
||||||
items = entries.map { it.translatedName },
|
items = entries.map { it.translatedName },
|
||||||
selectedIndex = entries.indexOf(blendMode1),
|
selectedIndex = entries.indexOf(blendMode1),
|
||||||
|
@ -60,12 +60,12 @@ import ru.tech.imageresizershrinker.core.domain.model.Position
|
|||||||
import ru.tech.imageresizershrinker.core.resources.R
|
import ru.tech.imageresizershrinker.core.resources.R
|
||||||
import ru.tech.imageresizershrinker.core.ui.utils.state.derivedValueOf
|
import ru.tech.imageresizershrinker.core.ui.utils.state.derivedValueOf
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton
|
import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.resize_group.components.BlurRadiusSelector
|
import ru.tech.imageresizershrinker.core.ui.widget.controls.resize_group.components.BlurRadiusSelector
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.resize_group.components.UseBlurredBackgroundToggle
|
import ru.tech.imageresizershrinker.core.ui.widget.controls.resize_group.components.UseBlurredBackgroundToggle
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.ColorRowSelector
|
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.ColorRowSelector
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.PositionSelector
|
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.PositionSelector
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButton
|
||||||
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedModalBottomSheet
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedModalBottomSheet
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
@ -139,7 +139,7 @@ fun ResizeTypeSelector(
|
|||||||
.animateContentSize(),
|
.animateContentSize(),
|
||||||
horizontalAlignment = Alignment.CenterHorizontally
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
modifier = Modifier.padding(start = 3.dp, end = 2.dp),
|
modifier = Modifier.padding(start = 3.dp, end = 2.dp),
|
||||||
enabled = enabled,
|
enabled = enabled,
|
||||||
title = {
|
title = {
|
||||||
@ -198,7 +198,7 @@ fun ResizeTypeSelector(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.padding(8.dp)
|
.padding(8.dp)
|
||||||
|
@ -67,7 +67,7 @@ import ru.tech.imageresizershrinker.core.resources.R
|
|||||||
import ru.tech.imageresizershrinker.core.resources.icons.QualityHigh
|
import ru.tech.imageresizershrinker.core.resources.icons.QualityHigh
|
||||||
import ru.tech.imageresizershrinker.core.resources.icons.QualityLow
|
import ru.tech.imageresizershrinker.core.resources.icons.QualityLow
|
||||||
import ru.tech.imageresizershrinker.core.resources.icons.QualityMedium
|
import ru.tech.imageresizershrinker.core.resources.icons.QualityMedium
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedChip
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedChip
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
@ -254,7 +254,7 @@ fun QualitySelector(
|
|||||||
val items = remember {
|
val items = remember {
|
||||||
Quality.Channels.entries
|
Quality.Channels.entries
|
||||||
}
|
}
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
itemCount = items.size,
|
itemCount = items.size,
|
||||||
itemContent = {
|
itemContent = {
|
||||||
Text(items[it].title)
|
Text(items[it].title)
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
* along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
|
* along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package ru.tech.imageresizershrinker.core.ui.widget.buttons
|
package ru.tech.imageresizershrinker.core.ui.widget.enhanced
|
||||||
|
|
||||||
import androidx.compose.animation.core.FiniteAnimationSpec
|
import androidx.compose.animation.core.FiniteAnimationSpec
|
||||||
import androidx.compose.animation.core.animateDpAsState
|
import androidx.compose.animation.core.animateDpAsState
|
||||||
@ -39,7 +39,6 @@ import androidx.compose.material3.MaterialTheme
|
|||||||
import androidx.compose.material3.MotionScheme
|
import androidx.compose.material3.MotionScheme
|
||||||
import androidx.compose.material3.ProvideTextStyle
|
import androidx.compose.material3.ProvideTextStyle
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.material3.ToggleButton
|
|
||||||
import androidx.compose.material3.ToggleButtonDefaults
|
import androidx.compose.material3.ToggleButtonDefaults
|
||||||
import androidx.compose.material3.contentColorFor
|
import androidx.compose.material3.contentColorFor
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
@ -48,10 +47,6 @@ import androidx.compose.ui.Alignment
|
|||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.graphics.compositeOver
|
import androidx.compose.ui.graphics.compositeOver
|
||||||
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
|
||||||
import androidx.compose.ui.platform.LocalFocusManager
|
|
||||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
|
||||||
import androidx.compose.ui.text.TextStyle
|
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.Dp
|
import androidx.compose.ui.unit.Dp
|
||||||
@ -64,7 +59,7 @@ import ru.tech.imageresizershrinker.core.ui.widget.modifier.fadingEdges
|
|||||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ToggleGroupButton(
|
fun EnhancedButtonGroup(
|
||||||
modifier: Modifier = defaultModifier,
|
modifier: Modifier = defaultModifier,
|
||||||
enabled: Boolean = true,
|
enabled: Boolean = true,
|
||||||
items: List<String>,
|
items: List<String>,
|
||||||
@ -73,7 +68,7 @@ fun ToggleGroupButton(
|
|||||||
onIndexChange: (Int) -> Unit,
|
onIndexChange: (Int) -> Unit,
|
||||||
inactiveButtonColor: Color = MaterialTheme.colorScheme.surface
|
inactiveButtonColor: Color = MaterialTheme.colorScheme.surface
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
enabled = enabled,
|
enabled = enabled,
|
||||||
items = items,
|
items = items,
|
||||||
selectedIndex = selectedIndex,
|
selectedIndex = selectedIndex,
|
||||||
@ -94,7 +89,7 @@ fun ToggleGroupButton(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ToggleGroupButton(
|
fun EnhancedButtonGroup(
|
||||||
modifier: Modifier = defaultModifier,
|
modifier: Modifier = defaultModifier,
|
||||||
enabled: Boolean,
|
enabled: Boolean,
|
||||||
items: List<String>,
|
items: List<String>,
|
||||||
@ -103,7 +98,7 @@ fun ToggleGroupButton(
|
|||||||
onIndexChange: (Int) -> Unit,
|
onIndexChange: (Int) -> Unit,
|
||||||
inactiveButtonColor: Color = MaterialTheme.colorScheme.surface
|
inactiveButtonColor: Color = MaterialTheme.colorScheme.surface
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
enabled = enabled,
|
enabled = enabled,
|
||||||
itemCount = items.size,
|
itemCount = items.size,
|
||||||
@ -124,7 +119,7 @@ fun ToggleGroupButton(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ToggleGroupButton(
|
fun EnhancedButtonGroup(
|
||||||
modifier: Modifier = defaultModifier,
|
modifier: Modifier = defaultModifier,
|
||||||
enabled: Boolean = true,
|
enabled: Boolean = true,
|
||||||
itemCount: Int,
|
itemCount: Int,
|
||||||
@ -137,15 +132,14 @@ fun ToggleGroupButton(
|
|||||||
isScrollable: Boolean = true
|
isScrollable: Boolean = true
|
||||||
) {
|
) {
|
||||||
val settingsState = LocalSettingsState.current
|
val settingsState = LocalSettingsState.current
|
||||||
val haptics = LocalHapticFeedback.current
|
|
||||||
|
|
||||||
val disColor = MaterialTheme.colorScheme.onSurface
|
val disabledColor = MaterialTheme.colorScheme.onSurface
|
||||||
.copy(alpha = 0.38f)
|
.copy(alpha = 0.38f)
|
||||||
.compositeOver(MaterialTheme.colorScheme.surface)
|
.compositeOver(MaterialTheme.colorScheme.surface)
|
||||||
|
|
||||||
ProvideTextStyle(
|
ProvideTextStyle(
|
||||||
value = TextStyle(
|
value = LocalTextStyle.current.copy(
|
||||||
color = if (!enabled) disColor
|
color = if (!enabled) disabledColor
|
||||||
else Color.Unspecified
|
else Color.Unspecified
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
@ -195,15 +189,10 @@ fun ToggleGroupButton(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val selected = index == selectedIndex
|
val selected = index == selectedIndex
|
||||||
val focus = LocalFocusManager.current
|
|
||||||
|
|
||||||
ToggleButton(
|
EnhancedToggleButton(
|
||||||
enabled = enabled,
|
enabled = enabled,
|
||||||
onCheckedChange = {
|
onCheckedChange = {
|
||||||
focus.clearFocus()
|
|
||||||
haptics.performHapticFeedback(
|
|
||||||
HapticFeedbackType.LongPress
|
|
||||||
)
|
|
||||||
onIndexChange(index)
|
onIndexChange(index)
|
||||||
},
|
},
|
||||||
border = BorderStroke(
|
border = BorderStroke(
|
||||||
@ -221,17 +210,19 @@ fun ToggleGroupButton(
|
|||||||
),
|
),
|
||||||
checked = selected,
|
checked = selected,
|
||||||
shapes = when (index) {
|
shapes = when (index) {
|
||||||
0 -> ButtonGroupDefaults.connectedLeadingButtonShapes()
|
0 -> ButtonGroupDefaults.connectedLeadingButtonShapes(
|
||||||
itemCount - 1 -> ButtonGroupDefaults.connectedTrailingButtonShapes()
|
pressedShape = ButtonDefaults.pressedShape
|
||||||
else -> ButtonGroupDefaults.connectedMiddleButtonShapes()
|
)
|
||||||
|
|
||||||
|
itemCount - 1 -> ButtonGroupDefaults.connectedTrailingButtonShapes(
|
||||||
|
pressedShape = ButtonDefaults.pressedShape
|
||||||
|
)
|
||||||
|
|
||||||
|
else -> ButtonGroupDefaults.connectedMiddleButtonShapes(
|
||||||
|
pressedShape = ButtonDefaults.pressedShape
|
||||||
|
)
|
||||||
},
|
},
|
||||||
elevation = ButtonDefaults.buttonElevation(
|
elevation = elevation
|
||||||
defaultElevation = elevation,
|
|
||||||
pressedElevation = elevation,
|
|
||||||
focusedElevation = elevation,
|
|
||||||
hoveredElevation = elevation,
|
|
||||||
disabledElevation = elevation
|
|
||||||
)
|
|
||||||
) {
|
) {
|
||||||
itemContent(index)
|
itemContent(index)
|
||||||
}
|
}
|
@ -0,0 +1,119 @@
|
|||||||
|
package ru.tech.imageresizershrinker.core.ui.widget.enhanced
|
||||||
|
|
||||||
|
import androidx.compose.foundation.BorderStroke
|
||||||
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||||
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
|
import androidx.compose.foundation.layout.Row
|
||||||
|
import androidx.compose.foundation.layout.RowScope
|
||||||
|
import androidx.compose.foundation.layout.defaultMinSize
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.material3.ButtonDefaults
|
||||||
|
import androidx.compose.material3.LocalContentColor
|
||||||
|
import androidx.compose.material3.LocalMinimumInteractiveComponentSize
|
||||||
|
import androidx.compose.material3.LocalTextStyle
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.Surface
|
||||||
|
import androidx.compose.material3.ToggleButtonColors
|
||||||
|
import androidx.compose.material3.ToggleButtonDefaults
|
||||||
|
import androidx.compose.material3.ToggleButtonShapes
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.CompositionLocalProvider
|
||||||
|
import androidx.compose.runtime.Stable
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||||
|
import androidx.compose.ui.platform.LocalFocusManager
|
||||||
|
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||||
|
import androidx.compose.ui.semantics.Role
|
||||||
|
import androidx.compose.ui.semantics.role
|
||||||
|
import androidx.compose.ui.semantics.semantics
|
||||||
|
import androidx.compose.ui.unit.Dp
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
import ru.tech.imageresizershrinker.core.ui.utils.helper.ProvidesValue
|
||||||
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.shapeByInteraction
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun EnhancedToggleButton(
|
||||||
|
checked: Boolean,
|
||||||
|
onCheckedChange: (Boolean) -> Unit,
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
enabled: Boolean = true,
|
||||||
|
shapes: ToggleButtonShapes = ToggleButtonDefaults.shapesFor(ButtonDefaults.MinHeight),
|
||||||
|
colors: ToggleButtonColors = ToggleButtonDefaults.toggleButtonColors(),
|
||||||
|
elevation: Dp = 0.dp,
|
||||||
|
border: BorderStroke? = null,
|
||||||
|
contentPadding: PaddingValues = ButtonDefaults.contentPaddingFor(ButtonDefaults.MinHeight),
|
||||||
|
interactionSource: MutableInteractionSource? = null,
|
||||||
|
content: @Composable RowScope.() -> Unit
|
||||||
|
) {
|
||||||
|
val realInteractionSource = interactionSource ?: remember { MutableInteractionSource() }
|
||||||
|
|
||||||
|
val containerColor = colors.containerColor(enabled, checked)
|
||||||
|
val contentColor = colors.contentColor(enabled, checked)
|
||||||
|
val buttonShape = shapeByInteraction(
|
||||||
|
shape = if (checked) shapes.checkedShape else shapes.shape,
|
||||||
|
pressedShape = shapes.pressedShape,
|
||||||
|
interactionSource = realInteractionSource
|
||||||
|
)
|
||||||
|
|
||||||
|
val haptics = LocalHapticFeedback.current
|
||||||
|
val focus = LocalFocusManager.current
|
||||||
|
|
||||||
|
LocalMinimumInteractiveComponentSize.ProvidesValue(Dp.Unspecified) {
|
||||||
|
Surface(
|
||||||
|
checked = checked,
|
||||||
|
onCheckedChange = {
|
||||||
|
focus.clearFocus()
|
||||||
|
haptics.performHapticFeedback(
|
||||||
|
HapticFeedbackType.LongPress
|
||||||
|
)
|
||||||
|
onCheckedChange(it)
|
||||||
|
},
|
||||||
|
modifier = modifier.semantics { role = Role.Checkbox },
|
||||||
|
enabled = enabled,
|
||||||
|
shape = buttonShape,
|
||||||
|
color = containerColor,
|
||||||
|
contentColor = contentColor,
|
||||||
|
shadowElevation = elevation,
|
||||||
|
border = border,
|
||||||
|
interactionSource = realInteractionSource
|
||||||
|
) {
|
||||||
|
val mergedStyle = LocalTextStyle.current.merge(MaterialTheme.typography.labelLarge)
|
||||||
|
|
||||||
|
CompositionLocalProvider(
|
||||||
|
LocalContentColor provides contentColor,
|
||||||
|
LocalTextStyle provides mergedStyle
|
||||||
|
) {
|
||||||
|
Row(
|
||||||
|
modifier = Modifier
|
||||||
|
.defaultMinSize(minHeight = ToggleButtonDefaults.MinHeight)
|
||||||
|
.padding(contentPadding),
|
||||||
|
horizontalArrangement = Arrangement.Center,
|
||||||
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
|
content = content
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Stable
|
||||||
|
private fun ToggleButtonColors.containerColor(enabled: Boolean, checked: Boolean): Color {
|
||||||
|
return when {
|
||||||
|
enabled && checked -> checkedContainerColor
|
||||||
|
enabled && !checked -> containerColor
|
||||||
|
else -> disabledContainerColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Stable
|
||||||
|
private fun ToggleButtonColors.contentColor(enabled: Boolean, checked: Boolean): Color {
|
||||||
|
return when {
|
||||||
|
enabled && checked -> checkedContentColor
|
||||||
|
enabled && !checked -> contentColor
|
||||||
|
else -> disabledContentColor
|
||||||
|
}
|
||||||
|
}
|
@ -35,7 +35,6 @@ import androidx.compose.runtime.SideEffect
|
|||||||
import androidx.compose.runtime.Stable
|
import androidx.compose.runtime.Stable
|
||||||
import androidx.compose.runtime.derivedStateOf
|
import androidx.compose.runtime.derivedStateOf
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.key
|
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.geometry.Size
|
import androidx.compose.ui.geometry.Size
|
||||||
@ -227,6 +226,7 @@ fun shapeByInteraction(
|
|||||||
dampingRatio = Spring.DampingRatioLowBouncy,
|
dampingRatio = Spring.DampingRatioLowBouncy,
|
||||||
stiffness = Spring.StiffnessMediumLow
|
stiffness = Spring.StiffnessMediumLow
|
||||||
),
|
),
|
||||||
|
delay: Long = 300,
|
||||||
enabled: Boolean = true
|
enabled: Boolean = true
|
||||||
): Shape {
|
): Shape {
|
||||||
if (!enabled || interactionSource == null) return shape
|
if (!enabled || interactionSource == null) return shape
|
||||||
@ -240,11 +240,11 @@ fun shapeByInteraction(
|
|||||||
mutableStateOf(shape)
|
mutableStateOf(shape)
|
||||||
}
|
}
|
||||||
|
|
||||||
LaunchedEffect(usePressedShape) {
|
LaunchedEffect(usePressedShape, shape) {
|
||||||
if (usePressedShape) {
|
if (usePressedShape) {
|
||||||
targetShapeState.value = pressedShape
|
targetShapeState.value = pressedShape
|
||||||
} else {
|
} else {
|
||||||
if (shape is RoundedCornerShape) delay(300)
|
if (shape is RoundedCornerShape) delay(delay)
|
||||||
targetShapeState.value = shape
|
targetShapeState.value = shape
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -252,12 +252,10 @@ fun shapeByInteraction(
|
|||||||
val targetShape = targetShapeState.value
|
val targetShape = targetShapeState.value
|
||||||
|
|
||||||
if (targetShape is RoundedCornerShape) {
|
if (targetShape is RoundedCornerShape) {
|
||||||
return key(shape, pressedShape) {
|
return rememberAnimatedShape(
|
||||||
rememberAnimatedShape(
|
currentShape = targetShape,
|
||||||
currentShape = targetShape,
|
animationSpec = animationSpec,
|
||||||
animationSpec = animationSpec,
|
)
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return targetShape
|
return targetShape
|
||||||
|
@ -69,9 +69,9 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.rememberFi
|
|||||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.rememberHumanFileSize
|
import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.rememberHumanFileSize
|
||||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
|
||||||
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
|
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.DataSelector
|
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.DataSelector
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButton
|
||||||
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedIconButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedIconButton
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem
|
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem
|
||||||
@ -112,7 +112,7 @@ internal fun CipherControls(component: CipherComponent) {
|
|||||||
stringResource(R.string.encryption),
|
stringResource(R.string.encryption),
|
||||||
stringResource(R.string.decryption)
|
stringResource(R.string.decryption)
|
||||||
)
|
)
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
enabled = true,
|
enabled = true,
|
||||||
itemCount = items.size,
|
itemCount = items.size,
|
||||||
selectedIndex = (!component.isEncrypt).toInt(),
|
selectedIndex = (!component.isEncrypt).toInt(),
|
||||||
|
@ -78,8 +78,8 @@ import ru.tech.imageresizershrinker.core.resources.shapes.CloverShape
|
|||||||
import ru.tech.imageresizershrinker.core.resources.shapes.MaterialStarShape
|
import ru.tech.imageresizershrinker.core.resources.shapes.MaterialStarShape
|
||||||
import ru.tech.imageresizershrinker.core.settings.presentation.model.IconShape
|
import ru.tech.imageresizershrinker.core.settings.presentation.model.IconShape
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton
|
import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButton
|
||||||
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedModalBottomSheet
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedModalBottomSheet
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.hapticsClickable
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.hapticsClickable
|
||||||
@ -110,7 +110,7 @@ fun DrawLineStyleSelector(
|
|||||||
.container(RoundedCornerShape(24.dp)),
|
.container(RoundedCornerShape(24.dp)),
|
||||||
horizontalAlignment = Alignment.CenterHorizontally
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
enabled = true,
|
enabled = true,
|
||||||
itemCount = values.size,
|
itemCount = values.size,
|
||||||
title = {
|
title = {
|
||||||
|
@ -77,11 +77,11 @@ import ru.tech.imageresizershrinker.core.resources.icons.Pen
|
|||||||
import ru.tech.imageresizershrinker.core.settings.presentation.model.toUiFont
|
import ru.tech.imageresizershrinker.core.settings.presentation.model.toUiFont
|
||||||
import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer
|
import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton
|
import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.resize_group.components.BlurRadiusSelector
|
import ru.tech.imageresizershrinker.core.ui.widget.controls.resize_group.components.BlurRadiusSelector
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.FontSelector
|
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.FontSelector
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.ImageSelector
|
import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.ImageSelector
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButton
|
||||||
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedModalBottomSheet
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedModalBottomSheet
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
||||||
@ -117,7 +117,7 @@ fun DrawModeSelector(
|
|||||||
.container(RoundedCornerShape(24.dp)),
|
.container(RoundedCornerShape(24.dp)),
|
||||||
horizontalAlignment = Alignment.CenterHorizontally
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
enabled = true,
|
enabled = true,
|
||||||
itemCount = values.size,
|
itemCount = values.size,
|
||||||
title = {
|
title = {
|
||||||
|
@ -41,7 +41,7 @@ import androidx.compose.ui.text.style.TextAlign
|
|||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ru.tech.imageresizershrinker.core.resources.R
|
import ru.tech.imageresizershrinker.core.resources.R
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton
|
import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
import ru.tech.imageresizershrinker.feature.draw.domain.DrawPathMode
|
import ru.tech.imageresizershrinker.feature.draw.domain.DrawPathMode
|
||||||
import ru.tech.imageresizershrinker.feature.draw.presentation.components.element.ArrowParamsSelector
|
import ru.tech.imageresizershrinker.feature.draw.presentation.components.element.ArrowParamsSelector
|
||||||
@ -76,7 +76,7 @@ fun DrawPathModeSelector(
|
|||||||
),
|
),
|
||||||
horizontalAlignment = Alignment.CenterHorizontally
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
enabled = true,
|
enabled = true,
|
||||||
itemCount = values.size,
|
itemCount = values.size,
|
||||||
title = {
|
title = {
|
||||||
|
@ -31,7 +31,7 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ru.tech.imageresizershrinker.core.resources.R
|
import ru.tech.imageresizershrinker.core.resources.R
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.other.ExpandableItem
|
import ru.tech.imageresizershrinker.core.ui.widget.other.ExpandableItem
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||||
@ -53,7 +53,7 @@ fun GradientTypeSelector(
|
|||||||
verticalArrangement = Arrangement.Center,
|
verticalArrangement = Arrangement.Center,
|
||||||
horizontalAlignment = Alignment.CenterHorizontally
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
modifier = Modifier.padding(8.dp),
|
modifier = Modifier.padding(8.dp),
|
||||||
enabled = true,
|
enabled = true,
|
||||||
items = GradientType.entries.map { it.translatedName },
|
items = GradientType.entries.map { it.translatedName },
|
||||||
|
@ -29,7 +29,7 @@ import androidx.compose.ui.graphics.TileMode
|
|||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ru.tech.imageresizershrinker.core.resources.R
|
import ru.tech.imageresizershrinker.core.resources.R
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ -54,7 +54,7 @@ fun TileModeSelector(
|
|||||||
.animateContentSize(),
|
.animateContentSize(),
|
||||||
contentAlignment = Alignment.Center
|
contentAlignment = Alignment.Center
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
modifier = Modifier.padding(8.dp),
|
modifier = Modifier.padding(8.dp),
|
||||||
enabled = true,
|
enabled = true,
|
||||||
items = entries.map { it.translatedName },
|
items = entries.map { it.translatedName },
|
||||||
|
@ -28,7 +28,7 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ru.tech.imageresizershrinker.core.resources.R
|
import ru.tech.imageresizershrinker.core.resources.R
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ -41,7 +41,7 @@ fun ImageFadingEdgesSelector(
|
|||||||
modifier = modifier
|
modifier = modifier
|
||||||
.container(shape = RoundedCornerShape(24.dp))
|
.container(shape = RoundedCornerShape(24.dp))
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
modifier = Modifier.padding(start = 3.dp, end = 2.dp),
|
modifier = Modifier.padding(start = 3.dp, end = 2.dp),
|
||||||
enabled = true,
|
enabled = true,
|
||||||
title = {
|
title = {
|
||||||
|
@ -29,7 +29,7 @@ import androidx.compose.ui.res.stringResource
|
|||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ru.tech.imageresizershrinker.core.resources.R
|
import ru.tech.imageresizershrinker.core.resources.R
|
||||||
import ru.tech.imageresizershrinker.core.ui.utils.state.derivedValueOf
|
import ru.tech.imageresizershrinker.core.ui.utils.state.derivedValueOf
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
import ru.tech.imageresizershrinker.feature.image_stitch.domain.StitchAlignment
|
import ru.tech.imageresizershrinker.feature.image_stitch.domain.StitchAlignment
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ fun StitchAlignmentSelector(
|
|||||||
modifier = modifier
|
modifier = modifier
|
||||||
.container(shape = RoundedCornerShape(24.dp))
|
.container(shape = RoundedCornerShape(24.dp))
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
modifier = Modifier.padding(start = 3.dp, end = 2.dp),
|
modifier = Modifier.padding(start = 3.dp, end = 2.dp),
|
||||||
enabled = true,
|
enabled = true,
|
||||||
title = {
|
title = {
|
||||||
|
@ -40,7 +40,7 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ru.tech.imageresizershrinker.core.resources.R
|
import ru.tech.imageresizershrinker.core.resources.R
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedSliderItem
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
import ru.tech.imageresizershrinker.feature.image_stitch.domain.StitchMode
|
import ru.tech.imageresizershrinker.feature.image_stitch.domain.StitchMode
|
||||||
@ -56,7 +56,7 @@ fun StitchModeSelector(
|
|||||||
modifier = modifier
|
modifier = modifier
|
||||||
.container(shape = RoundedCornerShape(24.dp))
|
.container(shape = RoundedCornerShape(24.dp))
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
modifier = Modifier.padding(start = 3.dp, end = 2.dp),
|
modifier = Modifier.padding(start = 3.dp, end = 2.dp),
|
||||||
enabled = true,
|
enabled = true,
|
||||||
title = {
|
title = {
|
||||||
|
@ -33,7 +33,7 @@ import androidx.compose.ui.text.font.FontWeight
|
|||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ru.tech.imageresizershrinker.core.resources.R
|
import ru.tech.imageresizershrinker.core.resources.R
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
import ru.tech.imageresizershrinker.feature.limits_resize.domain.LimitsResizeType
|
import ru.tech.imageresizershrinker.feature.limits_resize.domain.LimitsResizeType
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ fun LimitsResizeSelector(
|
|||||||
value: LimitsResizeType,
|
value: LimitsResizeType,
|
||||||
onValueChange: (LimitsResizeType) -> Unit
|
onValueChange: (LimitsResizeType) -> Unit
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.container(shape = RoundedCornerShape(24.dp))
|
.container(shape = RoundedCornerShape(24.dp))
|
||||||
.padding(start = 3.dp, end = 2.dp),
|
.padding(start = 3.dp, end = 2.dp),
|
||||||
|
@ -27,7 +27,7 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ru.tech.imageresizershrinker.core.resources.R
|
import ru.tech.imageresizershrinker.core.resources.R
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
import ru.tech.imageresizershrinker.feature.recognize.text.domain.RecognitionType
|
import ru.tech.imageresizershrinker.feature.recognize.text.domain.RecognitionType
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ fun RecognitionTypeSelector(
|
|||||||
.animateContentSize(),
|
.animateContentSize(),
|
||||||
contentAlignment = Alignment.Center
|
contentAlignment = Alignment.Center
|
||||||
) {
|
) {
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
modifier = Modifier.padding(8.dp),
|
modifier = Modifier.padding(8.dp),
|
||||||
enabled = true,
|
enabled = true,
|
||||||
items = RecognitionType.entries.map { it.translatedName },
|
items = RecognitionType.entries.map { it.translatedName },
|
||||||
|
@ -47,7 +47,7 @@ import ru.tech.imageresizershrinker.core.resources.icons.Polygon
|
|||||||
import ru.tech.imageresizershrinker.core.resources.icons.Square
|
import ru.tech.imageresizershrinker.core.resources.icons.Square
|
||||||
import ru.tech.imageresizershrinker.core.resources.icons.Triangle
|
import ru.tech.imageresizershrinker.core.resources.icons.Triangle
|
||||||
import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSettingsState
|
import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSettingsState
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||||
@ -69,7 +69,7 @@ fun DefaultDrawPathModeSettingItem(
|
|||||||
.padding(horizontal = 12.dp)
|
.padding(horizontal = 12.dp)
|
||||||
.padding(top = 12.dp)
|
.padding(top = 12.dp)
|
||||||
)
|
)
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
enabled = true,
|
enabled = true,
|
||||||
itemCount = 17,
|
itemCount = 17,
|
||||||
title = {},
|
title = {},
|
||||||
|
@ -33,7 +33,7 @@ import ru.tech.imageresizershrinker.core.resources.R
|
|||||||
import ru.tech.imageresizershrinker.core.resources.icons.Resize
|
import ru.tech.imageresizershrinker.core.resources.icons.Resize
|
||||||
import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSettingsState
|
import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSettingsState
|
||||||
import ru.tech.imageresizershrinker.core.ui.utils.state.derivedValueOf
|
import ru.tech.imageresizershrinker.core.ui.utils.state.derivedValueOf
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||||
@ -58,7 +58,7 @@ fun DefaultResizeTypeSettingItem(
|
|||||||
.padding(horizontal = 12.dp)
|
.padding(horizontal = 12.dp)
|
||||||
.padding(top = 12.dp)
|
.padding(top = 12.dp)
|
||||||
)
|
)
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
enabled = true,
|
enabled = true,
|
||||||
itemCount = entries.size,
|
itemCount = entries.size,
|
||||||
title = {},
|
title = {},
|
||||||
|
@ -41,7 +41,7 @@ import androidx.compose.ui.res.stringResource
|
|||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ru.tech.imageresizershrinker.core.resources.R
|
import ru.tech.imageresizershrinker.core.resources.R
|
||||||
import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSettingsState
|
import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSettingsState
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||||
@ -95,7 +95,7 @@ fun FabAlignmentSettingItem(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.weight(1f))
|
Spacer(modifier = Modifier.weight(1f))
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
modifier = Modifier.padding(horizontal = 4.dp),
|
modifier = Modifier.padding(horizontal = 4.dp),
|
||||||
itemCount = 3,
|
itemCount = 3,
|
||||||
itemContent = {
|
itemContent = {
|
||||||
|
@ -27,7 +27,7 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ru.tech.imageresizershrinker.core.resources.R
|
import ru.tech.imageresizershrinker.core.resources.R
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButtonGroup
|
||||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
import ru.tech.imageresizershrinker.feature.watermarking.domain.WatermarkParams
|
import ru.tech.imageresizershrinker.feature.watermarking.domain.WatermarkParams
|
||||||
import ru.tech.imageresizershrinker.feature.watermarking.domain.WatermarkingType
|
import ru.tech.imageresizershrinker.feature.watermarking.domain.WatermarkingType
|
||||||
@ -47,7 +47,7 @@ fun WatermarkingTypeSelector(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ToggleGroupButton(
|
EnhancedButtonGroup(
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
.container(
|
.container(
|
||||||
shape = RoundedCornerShape(20.dp)
|
shape = RoundedCornerShape(20.dp)
|
||||||
|
Reference in New Issue
Block a user