mirror of
https://github.com/T8RIN/ImageToolbox.git
synced 2025-05-17 21:45:59 +08:00
image scale description added and improved code reusability
This commit is contained in:
@ -73,9 +73,9 @@ import ru.tech.imageresizershrinker.core.ui.theme.ImageToolboxTheme
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.White
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.copyToClipboard
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.ToastHost
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.rememberToastHostState
|
||||
|
@ -522,4 +522,14 @@
|
||||
<string name="nearest">Ближайший</string>
|
||||
<string name="basic">Базовый</string>
|
||||
<string name="default_value">Значение по умолчанию</string>
|
||||
<string name="bilinear_sub">Линейная (или билинейная, в двух измерениях) интерполяция обычно подходит для изменения размера изображения, но вызывает нежелательное размытие деталей и все еще может быть немного зазубренной</string>
|
||||
<string name="bicubic_sub">Лучшие методы масштабирования включают метод Ланцоша и фильтры Митчелла-Нетравали</string>
|
||||
<string name="nearest_sub">Один из более простых способов увеличения размера, заменяющий каждый пиксель определенным количеством пикселей того же цвета</string>
|
||||
<string name="basic_sub">Простейший режим масштабирования Android, используемый практически во всех приложениях</string>
|
||||
<string name="catmull_sub">Метод для плавной интерполяции и пересэмплирования набора контрольных точек, широко используемый в компьютерной графике для создания плавных кривых</string>
|
||||
<string name="hann_sub">Оконная функция, часто применяемая в обработке сигналов для минимизации утечки спектра и улучшения точности анализа частот путем заострения краев сигнала</string>
|
||||
<string name="hermite_sub">Математический метод интерполяции, использующий значения и производные на конечных точках сегмента кривой для создания плавной и непрерывной кривой</string>
|
||||
<string name="lanczos_sub">Метод пересэмплирования, поддерживающий высококачественную интерполяцию с использованием взвешенной функции sinc для значений пикселей</string>
|
||||
<string name="mitchell_sub">Метод пересэмплирования, использующий свертку с настраиваемыми параметрами для достижения баланса между четкостью и сглаживанием в измененном изображении</string>
|
||||
<string name="spline_sub">Использует кусочно-заданные полиномиальные функции для плавной интерполяции и приближения кривой или поверхности, обеспечивая гибкое и непрерывное представление формы</string>
|
||||
</resources>
|
@ -541,4 +541,15 @@
|
||||
<string name="spline">Spline</string>
|
||||
<string name="basic">Basic</string>
|
||||
<string name="default_value">Default Value</string>
|
||||
<string name="bilinear_sub">Linear (or bilinear, in two dimensions) interpolation is typically good for changing the size of an image, but causes some undesirable softening of details and can still be somewhat jagged</string>
|
||||
<string name="bicubic_sub">Better scaling methods include Lanczos resampling and Mitchell-Netravali filters</string>
|
||||
<string name="nearest_sub">One of the simpler ways of increasing the size, replacing every pixel with a number of pixels of the same color</string>
|
||||
<string name="basic_sub">Simplest android scaling mode that used in almost all apps</string>
|
||||
<string name="catmull_sub">Method for smoothly interpolating and resampling a set of control points, commonly used in computer graphics to create smooth curves</string>
|
||||
<string name="hann_sub">Windowing function often applied in signal processing to minimize spectral leakage and improve the accuracy of frequency analysis by tapering the edges of a signal</string>
|
||||
<string name="hermite_sub">Mathematical interpolation technique that uses the values and derivatives at the endpoints of a curve segment to generate a smooth and continuous curve</string>
|
||||
<string name="lanczos_sub">Resampling method that maintains high-quality interpolation by applying a weighted sinc function to the pixel values</string>
|
||||
<string name="mitchell_sub">Resampling method that use a convolution filter with adjustable parameters to achieve a balance between sharpness and anti-aliasing in the scaled image</string>
|
||||
<string name="spline_sub">Utilizes piecewise-defined polynomial functions to smoothly interpolate and approximate a curve or surface, flexible and continuous shape representation</string>
|
||||
|
||||
</resources>
|
@ -29,7 +29,6 @@ import androidx.compose.ui.graphics.RectangleShape
|
||||
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.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package ru.tech.imageresizershrinker.core.ui.widget.controls
|
||||
package ru.tech.imageresizershrinker.core.ui.widget.buttons
|
||||
|
||||
import androidx.compose.animation.animateColorAsState
|
||||
import androidx.compose.animation.core.animateDpAsState
|
@ -0,0 +1,83 @@
|
||||
package ru.tech.imageresizershrinker.core.ui.widget.buttons
|
||||
|
||||
import androidx.compose.animation.animateColorAsState
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.defaultMinSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.LocalContentColor
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.contentColorFor
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.Shape
|
||||
import androidx.compose.ui.graphics.compositeOver
|
||||
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
|
||||
@Composable
|
||||
fun EnhancedChip(
|
||||
selected: Boolean,
|
||||
onClick: () -> Unit,
|
||||
contentPadding: PaddingValues = PaddingValues(6.dp),
|
||||
selectedColor: Color,
|
||||
shape: Shape = MaterialTheme.shapes.small,
|
||||
label: @Composable () -> Unit
|
||||
) {
|
||||
val haptics = LocalHapticFeedback.current
|
||||
val color by animateColorAsState(
|
||||
if (selected) selectedColor
|
||||
else MaterialTheme.colorScheme.secondaryContainer.copy(alpha = 0.6f)
|
||||
)
|
||||
val contentColor by animateColorAsState(
|
||||
if (selected) MaterialTheme.colorScheme.contentColorFor(selectedColor)
|
||||
else MaterialTheme.colorScheme.onSurface
|
||||
)
|
||||
|
||||
CompositionLocalProvider(
|
||||
LocalTextStyle provides MaterialTheme.typography.labelLarge.copy(
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
color = contentColor
|
||||
),
|
||||
LocalContentColor provides contentColor
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.defaultMinSize(36.dp, 36.dp)
|
||||
.container(
|
||||
color = color,
|
||||
resultPadding = 0.dp,
|
||||
borderColor = if (!selected) MaterialTheme.colorScheme.outlineVariant()
|
||||
else selectedColor
|
||||
.copy(alpha = 0.9f)
|
||||
.compositeOver(Color.Black),
|
||||
shape = shape,
|
||||
autoShadowElevation = 0.5.dp
|
||||
)
|
||||
.clickable {
|
||||
haptics.performHapticFeedback(
|
||||
HapticFeedbackType.LongPress
|
||||
)
|
||||
onClick()
|
||||
},
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier.padding(contentPadding),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
label()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package ru.tech.imageresizershrinker.core.ui.widget.controls
|
||||
package ru.tech.imageresizershrinker.core.ui.widget.buttons
|
||||
|
||||
import androidx.compose.animation.core.animateDpAsState
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
@ -1,4 +1,4 @@
|
||||
package ru.tech.imageresizershrinker.core.ui.widget.controls
|
||||
package ru.tech.imageresizershrinker.core.ui.widget.buttons
|
||||
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.ui.graphics.Shape
|
@ -0,0 +1,56 @@
|
||||
package ru.tech.imageresizershrinker.core.ui.widget.buttons
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.outlined.Info
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.contentColorFor
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
||||
@Composable
|
||||
fun SupportingButton(
|
||||
onClick: () -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
icon: ImageVector = Icons.Outlined.Info,
|
||||
containerColor: Color = MaterialTheme.colorScheme.secondaryContainer,
|
||||
contentColor: Color = MaterialTheme.colorScheme.contentColorFor(containerColor)
|
||||
) {
|
||||
val haptics = LocalHapticFeedback.current
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
tint = contentColor,
|
||||
modifier = modifier
|
||||
.background(
|
||||
color = containerColor,
|
||||
shape = CircleShape
|
||||
)
|
||||
.clip(CircleShape)
|
||||
.clickable {
|
||||
haptics.performHapticFeedback(
|
||||
HapticFeedbackType.TextHandleMove
|
||||
)
|
||||
onClick()
|
||||
}
|
||||
.padding(1.dp)
|
||||
.size(
|
||||
with(LocalDensity.current) {
|
||||
LocalTextStyle.current.fontSize.toDp()
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
@ -67,7 +67,7 @@ import ru.tech.imageresizershrinker.core.ui.shapes.MaterialStarShape
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.defaultColorTuple
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ListUtils.nearestFor
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSliderItem
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
|
@ -50,8 +50,8 @@ import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.inverse
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.copyToClipboard
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.pasteColorFromClipboard
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.transparencyChecker
|
||||
|
@ -39,7 +39,7 @@ 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.inverse
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.fadingEdges
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.transparencyChecker
|
||||
|
@ -42,7 +42,7 @@ import com.t8rin.dynamic.theme.rememberAppColorTuple
|
||||
import com.t8rin.dynamic.theme.rememberColorScheme
|
||||
import kotlinx.coroutines.delay
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||
|
@ -3,37 +3,30 @@ package ru.tech.imageresizershrinker.core.ui.widget.controls
|
||||
import android.os.Build
|
||||
import androidx.compose.animation.AnimatedContent
|
||||
import androidx.compose.animation.SizeTransform
|
||||
import androidx.compose.animation.animateColorAsState
|
||||
import androidx.compose.animation.fadeIn
|
||||
import androidx.compose.animation.fadeOut
|
||||
import androidx.compose.animation.togetherWith
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.ExperimentalLayoutApi
|
||||
import androidx.compose.foundation.layout.FlowRow
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.ProvideTextStyle
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.surfaceColorAtElevation
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
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.graphics.compositeOver
|
||||
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.TextStyle
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
@ -41,7 +34,7 @@ import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ru.tech.imageresizershrinker.core.domain.model.ImageFormat
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedChip
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
|
||||
@OptIn(ExperimentalLayoutApi::class)
|
||||
@ -62,8 +55,6 @@ fun ExtensionGroup(
|
||||
if (value !in entries) onValueChange(ImageFormat.Png)
|
||||
}
|
||||
|
||||
val haptics = LocalHapticFeedback.current
|
||||
|
||||
ProvideTextStyle(
|
||||
value = TextStyle(
|
||||
color = if (!enabled) disColor
|
||||
@ -106,21 +97,22 @@ fun ExtensionGroup(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(8.dp)
|
||||
.container()
|
||||
.container(
|
||||
color = MaterialTheme.colorScheme.surfaceContainerLow
|
||||
)
|
||||
.padding(horizontal = 8.dp, vertical = 12.dp)
|
||||
) {
|
||||
items.forEach {
|
||||
Chip(
|
||||
EnhancedChip(
|
||||
onClick = {
|
||||
haptics.performHapticFeedback(
|
||||
HapticFeedbackType.LongPress
|
||||
)
|
||||
onValueChange(it)
|
||||
},
|
||||
selected = it == value,
|
||||
label = {
|
||||
Text(text = it.title)
|
||||
}
|
||||
},
|
||||
selectedColor = MaterialTheme.colorScheme.tertiary,
|
||||
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 6.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -135,47 +127,4 @@ private fun List<ImageFormat>.filtered(): List<ImageFormat> = remember(this) {
|
||||
removeAll(ImageFormat.highLevelFormats)
|
||||
}
|
||||
else this
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun Chip(
|
||||
selected: Boolean,
|
||||
onClick: () -> Unit,
|
||||
label: @Composable () -> Unit
|
||||
) {
|
||||
val color by animateColorAsState(
|
||||
if (selected) MaterialTheme.colorScheme.tertiary
|
||||
else MaterialTheme.colorScheme.secondaryContainer.copy(alpha = 0.6f)
|
||||
)
|
||||
|
||||
CompositionLocalProvider(
|
||||
LocalTextStyle provides MaterialTheme.typography.labelLarge.copy(
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
color = if (selected) MaterialTheme.colorScheme.onTertiary
|
||||
else MaterialTheme.colorScheme.onSurface
|
||||
),
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.container(
|
||||
color = color,
|
||||
resultPadding = 0.dp,
|
||||
borderColor = if (!selected) MaterialTheme.colorScheme.outlineVariant()
|
||||
else MaterialTheme.colorScheme.tertiary
|
||||
.copy(alpha = 0.9f)
|
||||
.compositeOver(Color.Black),
|
||||
shape = MaterialTheme.shapes.small,
|
||||
autoShadowElevation = 0.5.dp
|
||||
)
|
||||
.clickable(onClick = onClick),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier.padding(horizontal = 16.dp, vertical = 6.dp),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
label()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -50,6 +50,8 @@ import org.burnoutcrew.reorderable.detectReorderAfterLongPress
|
||||
import org.burnoutcrew.reorderable.rememberReorderableLazyListState
|
||||
import org.burnoutcrew.reorderable.reorderable
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.Picture
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
|
||||
|
@ -34,6 +34,8 @@ import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Transparency
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.onMixedContainer
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
|
||||
@Composable
|
||||
|
@ -3,9 +3,6 @@
|
||||
package ru.tech.imageresizershrinker.core.ui.widget.controls
|
||||
|
||||
|
||||
import androidx.compose.animation.animateColorAsState
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.gestures.detectTapGestures
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
@ -13,27 +10,22 @@ import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.defaultMinSize
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyRow
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.outlined.Info
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.LocalContentColor
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
@ -41,13 +33,7 @@ import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.compositeOver
|
||||
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||
import androidx.compose.ui.input.pointer.pointerInput
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
@ -57,9 +43,12 @@ import ru.tech.imageresizershrinker.core.domain.model.Preset
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Telegram
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedChip
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.fadingEdges
|
||||
@ -118,25 +107,10 @@ fun PresetWidget(
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Icon(
|
||||
imageVector = Icons.Outlined.Info,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.onSecondaryContainer,
|
||||
modifier = Modifier
|
||||
.background(
|
||||
MaterialTheme.colorScheme.secondaryContainer,
|
||||
CircleShape
|
||||
)
|
||||
.clip(CircleShape)
|
||||
.clickable {
|
||||
showPresetInfoDialog = true
|
||||
}
|
||||
.padding(1.dp)
|
||||
.size(
|
||||
with(LocalDensity.current) {
|
||||
LocalTextStyle.current.fontSize.toDp()
|
||||
}
|
||||
)
|
||||
SupportingButton(
|
||||
onClick = {
|
||||
showPresetInfoDialog = true
|
||||
}
|
||||
)
|
||||
}
|
||||
Spacer(Modifier.height(8.dp))
|
||||
@ -159,23 +133,25 @@ fun PresetWidget(
|
||||
if (includeTelegramOption) {
|
||||
item {
|
||||
val selected = selectedPreset.isTelegram()
|
||||
Chip(
|
||||
EnhancedChip(
|
||||
selected = selected,
|
||||
onClick = { onPresetSelected(Preset.Telegram) }
|
||||
onClick = { onPresetSelected(Preset.Telegram) },
|
||||
selectedColor = MaterialTheme.colorScheme.primary,
|
||||
shape = MaterialTheme.shapes.medium
|
||||
) {
|
||||
Icon(Icons.Rounded.Telegram, null)
|
||||
}
|
||||
}
|
||||
}
|
||||
data.forEach {
|
||||
item {
|
||||
val selected = selectedPreset.value() == it
|
||||
Chip(
|
||||
selected = selected,
|
||||
onClick = { onPresetSelected(Preset.Numeric(it)) }
|
||||
) {
|
||||
AutoSizeText(it.toString())
|
||||
}
|
||||
items(data) {
|
||||
val selected = selectedPreset.value() == it
|
||||
EnhancedChip(
|
||||
selected = selected,
|
||||
onClick = { onPresetSelected(Preset.Numeric(it)) },
|
||||
selectedColor = MaterialTheme.colorScheme.primary,
|
||||
shape = MaterialTheme.shapes.medium
|
||||
) {
|
||||
AutoSizeText(it.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -234,64 +210,4 @@ fun PresetWidget(
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun Chip(
|
||||
selected: Boolean,
|
||||
onClick: () -> Unit,
|
||||
label: @Composable () -> Unit
|
||||
) {
|
||||
val haptics = LocalHapticFeedback.current
|
||||
val color by animateColorAsState(
|
||||
if (selected) MaterialTheme.colorScheme.primary
|
||||
else MaterialTheme.colorScheme.secondaryContainer.copy(
|
||||
alpha = 0.6f
|
||||
)
|
||||
)
|
||||
|
||||
CompositionLocalProvider(
|
||||
LocalTextStyle provides MaterialTheme.typography.labelLarge.copy(
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
color = if (selected) MaterialTheme.colorScheme.onTertiary
|
||||
else MaterialTheme.colorScheme.onSurface
|
||||
),
|
||||
LocalContentColor provides animateColorAsState(
|
||||
if (selected) MaterialTheme.colorScheme.onPrimary
|
||||
else MaterialTheme.colorScheme.onSurface
|
||||
).value,
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.defaultMinSize(36.dp, 36.dp)
|
||||
.container(
|
||||
color = color,
|
||||
resultPadding = 0.dp,
|
||||
borderColor = animateColorAsState(
|
||||
if (!selected) MaterialTheme.colorScheme.outlineVariant()
|
||||
else MaterialTheme.colorScheme.primary
|
||||
.copy(
|
||||
alpha = 0.9f
|
||||
)
|
||||
.compositeOver(Color.Black)
|
||||
).value,
|
||||
shape = MaterialTheme.shapes.medium,
|
||||
autoShadowElevation = 0.5.dp
|
||||
)
|
||||
.clickable {
|
||||
haptics.performHapticFeedback(
|
||||
HapticFeedbackType.LongPress
|
||||
)
|
||||
onClick()
|
||||
},
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier.padding(6.dp),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
label()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,42 +1,47 @@
|
||||
package ru.tech.imageresizershrinker.core.ui.widget.controls
|
||||
|
||||
import androidx.compose.animation.animateColorAsState
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.ColumnScope
|
||||
import androidx.compose.foundation.layout.ExperimentalLayoutApi
|
||||
import androidx.compose.foundation.layout.FlowRow
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.RowScope
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.surfaceColorAtElevation
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.Shape
|
||||
import androidx.compose.ui.graphics.compositeOver
|
||||
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import ru.tech.imageresizershrinker.core.domain.ImageScaleMode
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedChip
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton
|
||||
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.sheets.SimpleSheet
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalSettingsState
|
||||
|
||||
@OptIn(ExperimentalLayoutApi::class)
|
||||
@ -47,19 +52,18 @@ fun ScaleModeSelector(
|
||||
shape: Shape = RoundedCornerShape(24.dp),
|
||||
enableItemsCardBackground: Boolean = true,
|
||||
value: ImageScaleMode,
|
||||
titlePadding: PaddingValues = PaddingValues(top = 8.dp),
|
||||
titleArrangement: Arrangement.Horizontal = Arrangement.Center,
|
||||
onValueChange: (ImageScaleMode) -> Unit,
|
||||
title: @Composable ColumnScope.() -> Unit = {
|
||||
title: @Composable RowScope.() -> Unit = {
|
||||
Text(
|
||||
text = stringResource(R.string.scale_mode),
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(top = 8.dp),
|
||||
textAlign = TextAlign.Center,
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
}
|
||||
) {
|
||||
val haptics = LocalHapticFeedback.current
|
||||
val state = rememberSaveable { mutableStateOf(false) }
|
||||
val items = remember {
|
||||
ImageScaleMode.entries
|
||||
}
|
||||
@ -79,7 +83,21 @@ fun ScaleModeSelector(
|
||||
),
|
||||
horizontalAlignment = Alignment.CenterHorizontally
|
||||
) {
|
||||
title()
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(titlePadding),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = titleArrangement
|
||||
) {
|
||||
title()
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
SupportingButton(
|
||||
onClick = {
|
||||
state.value = true
|
||||
}
|
||||
)
|
||||
}
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
|
||||
FlowRow(
|
||||
@ -97,70 +115,75 @@ fun ScaleModeSelector(
|
||||
.then(
|
||||
if (enableItemsCardBackground) {
|
||||
Modifier
|
||||
.container()
|
||||
.container(color = MaterialTheme.colorScheme.surfaceContainerLow)
|
||||
.padding(horizontal = 8.dp, vertical = 12.dp)
|
||||
} else Modifier
|
||||
)
|
||||
) {
|
||||
items.forEach {
|
||||
Chip(
|
||||
EnhancedChip(
|
||||
onClick = {
|
||||
haptics.performHapticFeedback(
|
||||
HapticFeedbackType.LongPress
|
||||
)
|
||||
onValueChange(it)
|
||||
},
|
||||
selected = it == value,
|
||||
label = {
|
||||
Text(text = it.title)
|
||||
}
|
||||
},
|
||||
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 6.dp),
|
||||
selectedColor = MaterialTheme.colorScheme.secondary
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun Chip(
|
||||
selected: Boolean,
|
||||
onClick: () -> Unit,
|
||||
label: @Composable () -> Unit
|
||||
) {
|
||||
val color by animateColorAsState(
|
||||
if (selected) MaterialTheme.colorScheme.tertiary
|
||||
else MaterialTheme.colorScheme.secondaryContainer.copy(alpha = 0.6f)
|
||||
)
|
||||
|
||||
CompositionLocalProvider(
|
||||
LocalTextStyle provides MaterialTheme.typography.labelLarge.copy(
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
color = if (selected) MaterialTheme.colorScheme.onTertiary
|
||||
else MaterialTheme.colorScheme.onSurface
|
||||
),
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.container(
|
||||
color = color,
|
||||
resultPadding = 0.dp,
|
||||
borderColor = if (!selected) MaterialTheme.colorScheme.outlineVariant()
|
||||
else MaterialTheme.colorScheme.tertiary
|
||||
.copy(alpha = 0.9f)
|
||||
.compositeOver(Color.Black),
|
||||
shape = MaterialTheme.shapes.small,
|
||||
autoShadowElevation = 0.5.dp
|
||||
)
|
||||
.clickable(onClick = onClick),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier.padding(horizontal = 16.dp, vertical = 6.dp),
|
||||
contentAlignment = Alignment.Center
|
||||
SimpleSheet(
|
||||
sheetContent = {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.verticalScroll(rememberScrollState())
|
||||
.padding(8.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(4.dp)
|
||||
) {
|
||||
label()
|
||||
items.forEachIndexed { index, item ->
|
||||
Column(
|
||||
Modifier
|
||||
.fillMaxWidth()
|
||||
.container(
|
||||
shape = ContainerShapeDefaults.shapeForIndex(
|
||||
index,
|
||||
items.size
|
||||
),
|
||||
resultPadding = 0.dp
|
||||
)
|
||||
) {
|
||||
TitleItem(text = item.title)
|
||||
Text(
|
||||
text = item.subtitle,
|
||||
modifier = Modifier.padding(
|
||||
start = 16.dp,
|
||||
end = 16.dp,
|
||||
bottom = 16.dp
|
||||
),
|
||||
fontSize = 14.sp,
|
||||
lineHeight = 18.sp
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
visible = state,
|
||||
title = {
|
||||
TitleItem(text = stringResource(R.string.scale_mode))
|
||||
},
|
||||
confirmButton = {
|
||||
EnhancedButton(
|
||||
containerColor = MaterialTheme.colorScheme.secondaryContainer,
|
||||
onClick = { state.value = false }
|
||||
) {
|
||||
AutoSizeText(stringResource(R.string.close))
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
private val ImageScaleMode.title: String
|
||||
@ -177,3 +200,18 @@ private val ImageScaleMode.title: String
|
||||
ImageScaleMode.Spline -> stringResource(id = R.string.spline)
|
||||
else -> stringResource(id = R.string.basic)
|
||||
}
|
||||
|
||||
private val ImageScaleMode.subtitle: String
|
||||
@Composable
|
||||
get() = when (this) {
|
||||
ImageScaleMode.Bilinear -> stringResource(id = R.string.bilinear_sub)
|
||||
ImageScaleMode.Catmull -> stringResource(id = R.string.catmull_sub)
|
||||
ImageScaleMode.Bicubic -> stringResource(id = R.string.bicubic_sub)
|
||||
ImageScaleMode.Hann -> stringResource(id = R.string.hann_sub)
|
||||
ImageScaleMode.Hermite -> stringResource(id = R.string.hermite_sub)
|
||||
ImageScaleMode.Lanczos -> stringResource(id = R.string.lanczos_sub)
|
||||
ImageScaleMode.Mitchell -> stringResource(id = R.string.mitchell_sub)
|
||||
ImageScaleMode.Nearest -> stringResource(id = R.string.nearest_sub)
|
||||
ImageScaleMode.Spline -> stringResource(id = R.string.spline_sub)
|
||||
else -> stringResource(id = R.string.basic_sub)
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.BuildConfig
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.onMixedContainer
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
|
||||
@Composable
|
||||
|
@ -8,7 +8,6 @@ import androidx.compose.animation.fadeOut
|
||||
import androidx.compose.animation.shrinkVertically
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.horizontalScroll
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
@ -18,20 +17,16 @@ import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.outlined.Info
|
||||
import androidx.compose.material.icons.rounded.BlurCircular
|
||||
import androidx.compose.material.icons.rounded.Brush
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.SegmentedButton
|
||||
import androidx.compose.material3.SegmentedButtonDefaults
|
||||
@ -47,11 +42,11 @@ import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Brush
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
@ -64,7 +59,8 @@ import ru.tech.imageresizershrinker.core.ui.icons.material.Cube
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Highlighter
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Laser
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.resize_group.components.BlurRadiusSelector
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
@ -81,6 +77,7 @@ fun DrawModeSelector(
|
||||
value: DrawMode,
|
||||
onValueChange: (DrawMode) -> Unit
|
||||
) {
|
||||
val haptics = LocalHapticFeedback.current
|
||||
val state = rememberSaveable { mutableStateOf(false) }
|
||||
|
||||
val settingsState = LocalSettingsState.current
|
||||
@ -102,25 +99,10 @@ fun DrawModeSelector(
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Icon(
|
||||
imageVector = Icons.Outlined.Info,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.onSecondaryContainer,
|
||||
modifier = Modifier
|
||||
.background(
|
||||
MaterialTheme.colorScheme.secondaryContainer,
|
||||
CircleShape
|
||||
)
|
||||
.clip(CircleShape)
|
||||
.clickable {
|
||||
state.value = true
|
||||
}
|
||||
.padding(1.dp)
|
||||
.size(
|
||||
with(LocalDensity.current) {
|
||||
LocalTextStyle.current.fontSize.toDp()
|
||||
}
|
||||
)
|
||||
SupportingButton(
|
||||
onClick = {
|
||||
state.value = true
|
||||
}
|
||||
)
|
||||
}
|
||||
Box {
|
||||
@ -144,7 +126,12 @@ fun DrawModeSelector(
|
||||
count = DrawMode.entries.size
|
||||
)
|
||||
SegmentedButton(
|
||||
onClick = { onValueChange(item) },
|
||||
onClick = {
|
||||
haptics.performHapticFeedback(
|
||||
HapticFeedbackType.LongPress
|
||||
)
|
||||
onValueChange(item)
|
||||
},
|
||||
selected = selected,
|
||||
icon = {},
|
||||
border = BorderStroke(
|
||||
|
@ -3,7 +3,6 @@ package ru.tech.imageresizershrinker.core.ui.widget.controls.draw
|
||||
import androidx.compose.animation.core.animateDpAsState
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.horizontalScroll
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
@ -13,21 +12,17 @@ import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.outlined.Info
|
||||
import androidx.compose.material.icons.rounded.CheckBoxOutlineBlank
|
||||
import androidx.compose.material.icons.rounded.Circle
|
||||
import androidx.compose.material.icons.rounded.RadioButtonUnchecked
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.SegmentedButton
|
||||
import androidx.compose.material3.SegmentedButtonDefaults
|
||||
@ -43,11 +38,11 @@ import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Brush
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
@ -65,7 +60,8 @@ import ru.tech.imageresizershrinker.core.ui.icons.material.LineArrow
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.LineDoubleArrow
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Square
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.SupportingButton
|
||||
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.materialShadow
|
||||
@ -82,6 +78,7 @@ fun DrawPathModeSelector(
|
||||
value: DrawPathMode,
|
||||
onValueChange: (DrawPathMode) -> Unit
|
||||
) {
|
||||
val haptics = LocalHapticFeedback.current
|
||||
val state = rememberSaveable { mutableStateOf(false) }
|
||||
|
||||
val settingsState = LocalSettingsState.current
|
||||
@ -103,25 +100,10 @@ fun DrawPathModeSelector(
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Icon(
|
||||
imageVector = Icons.Outlined.Info,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.onSecondaryContainer,
|
||||
modifier = Modifier
|
||||
.background(
|
||||
MaterialTheme.colorScheme.secondaryContainer,
|
||||
CircleShape
|
||||
)
|
||||
.clip(CircleShape)
|
||||
.clickable {
|
||||
state.value = true
|
||||
}
|
||||
.padding(1.dp)
|
||||
.size(
|
||||
with(LocalDensity.current) {
|
||||
LocalTextStyle.current.fontSize.toDp()
|
||||
}
|
||||
)
|
||||
SupportingButton(
|
||||
onClick = {
|
||||
state.value = true
|
||||
}
|
||||
)
|
||||
}
|
||||
Box {
|
||||
@ -145,7 +127,12 @@ fun DrawPathModeSelector(
|
||||
count = values.size
|
||||
)
|
||||
SegmentedButton(
|
||||
onClick = { onValueChange(item) },
|
||||
onClick = {
|
||||
haptics.performHapticFeedback(
|
||||
HapticFeedbackType.LongPress
|
||||
)
|
||||
onValueChange(item)
|
||||
},
|
||||
selected = selected,
|
||||
icon = {},
|
||||
border = BorderStroke(
|
||||
|
@ -17,7 +17,7 @@ import androidx.compose.ui.unit.dp
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Eraser
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceRow
|
||||
|
||||
@Composable
|
||||
|
@ -7,8 +7,6 @@ import androidx.compose.animation.expandVertically
|
||||
import androidx.compose.animation.fadeIn
|
||||
import androidx.compose.animation.fadeOut
|
||||
import androidx.compose.animation.shrinkVertically
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
@ -16,16 +14,10 @@ import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.outlined.Info
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
@ -38,10 +30,8 @@ import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.toArgb
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
@ -49,9 +39,10 @@ import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import ru.tech.imageresizershrinker.core.domain.model.ResizeType
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
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.DrawBackgroundSelector
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
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.modifier.ContainerShapeDefaults
|
||||
@ -113,25 +104,10 @@ fun ResizeTypeSelector(
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Icon(
|
||||
imageVector = Icons.Outlined.Info,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.onSecondaryContainer,
|
||||
modifier = Modifier
|
||||
.background(
|
||||
MaterialTheme.colorScheme.secondaryContainer,
|
||||
CircleShape
|
||||
)
|
||||
.clip(CircleShape)
|
||||
.clickable {
|
||||
state.value = true
|
||||
}
|
||||
.padding(1.dp)
|
||||
.size(
|
||||
with(LocalDensity.current) {
|
||||
LocalTextStyle.current.fontSize.toDp()
|
||||
}
|
||||
)
|
||||
SupportingButton(
|
||||
onClick = {
|
||||
state.value = true
|
||||
}
|
||||
)
|
||||
}
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
|
@ -11,7 +11,7 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
|
||||
@Composable
|
||||
|
@ -14,7 +14,7 @@ import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import kotlinx.coroutines.launch
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost
|
||||
|
||||
|
@ -23,8 +23,8 @@ 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.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
|
||||
@Composable
|
||||
|
@ -32,7 +32,7 @@ import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
|
||||
@Composable
|
||||
|
@ -11,7 +11,7 @@ import androidx.compose.ui.graphics.StrokeCap
|
||||
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.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
|
||||
@Composable
|
||||
|
@ -24,7 +24,7 @@ import com.t8rin.dynamic.theme.PaletteStyle
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Swatch
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||
|
@ -36,7 +36,7 @@ import com.smarttoolfactory.beforeafter.BeforeAfterImage
|
||||
import com.smarttoolfactory.beforeafter.OverlayStyle
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.transparencyChecker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||
|
@ -48,8 +48,8 @@ import androidx.exifinterface.media.ExifInterface
|
||||
import ru.tech.imageresizershrinker.core.domain.image.Metadata
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.toMap
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItemOverload
|
||||
|
@ -14,7 +14,7 @@ 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.model.UiFontFam
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.FontSelectionItem
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||
|
@ -35,8 +35,8 @@ import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import coil.transform.Transformation
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.Picture
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||
|
@ -36,7 +36,7 @@ import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.White
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.Picture
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.screens.BackgroundRemoverPreference
|
||||
|
@ -33,7 +33,7 @@ import com.smarttoolfactory.image.zoom.animatedZoom
|
||||
import com.smarttoolfactory.image.zoom.rememberAnimatedZoomState
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.transparencyChecker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||
|
@ -28,7 +28,7 @@ import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ru.tech.imageresizershrinker.core.domain.utils.trimTrailingZero
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.KeyboardFocusHandler
|
||||
import kotlin.math.pow
|
||||
|
@ -36,7 +36,7 @@ import kotlinx.coroutines.launch
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.domain.APP_RELEASES
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.isInstalledFromPlayStore
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleDragHandle
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet
|
||||
|
@ -83,7 +83,7 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.failedToSaveImages
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.localImagePickerMode
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitch
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.PresetWidget
|
||||
|
@ -105,9 +105,9 @@ import ru.tech.imageresizershrinker.core.ui.utils.confetti.LocalConfettiControll
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.getFileName
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.fileSize
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.showReview
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.dialogs.ExitWithoutSavingDialog
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke
|
||||
@ -350,7 +350,12 @@ fun FileCipherScreen(
|
||||
val selected =
|
||||
index == if (viewModel.isEncrypt) 0 else 1
|
||||
SegmentedButton(
|
||||
onClick = { viewModel.setIsEncrypt(index == 0) },
|
||||
onClick = {
|
||||
haptics.performHapticFeedback(
|
||||
HapticFeedbackType.LongPress
|
||||
)
|
||||
viewModel.setIsEncrypt(index == 0)
|
||||
},
|
||||
border = BorderStroke(
|
||||
width = settingsState.borderWidth,
|
||||
color = MaterialTheme.colorScheme.outlineVariant()
|
||||
|
@ -17,7 +17,7 @@ import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||
|
@ -83,9 +83,9 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.Picker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.localImagePickerMode
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResult
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSlider
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.ImageNotPickedWidget
|
||||
|
@ -82,9 +82,9 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.Picker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.localImagePickerMode
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResult
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.dialogs.ExitWithoutSavingDialog
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.ImageNotPickedWidget
|
||||
|
@ -72,7 +72,7 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.failedToSaveImages
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.localImagePickerMode
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.dialogs.ExitWithoutSavingDialog
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.ImageContainer
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.ImageCounter
|
||||
|
@ -130,9 +130,9 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.localImagePickerMode
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResult
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.DrawBackgroundSelector
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitch
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
|
||||
|
@ -95,8 +95,8 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.Picker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.localImagePickerMode
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResult
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitch
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
|
||||
|
@ -111,9 +111,9 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResult
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.QualityWidget
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.SaveExifWidget
|
||||
|
@ -85,8 +85,8 @@ import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.onMixedContainer
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.state.update
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitch
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.draw.BrushSoftnessSelector
|
||||
|
@ -14,7 +14,7 @@ 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.mixedContainer
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
|
||||
@Composable
|
||||
fun AddFilterButton(
|
||||
|
@ -75,8 +75,8 @@ import ru.tech.imageresizershrinker.core.filters.presentation.model.UiFilter
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Cube
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.SimplePicture
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.imageStickyHeader
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
|
@ -46,7 +46,7 @@ import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.color_picker.ColorSelectionRow
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.color_picker.ColorSelectionRowDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSlider
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.RoundedTextField
|
||||
|
@ -27,7 +27,7 @@ import org.burnoutcrew.reorderable.rememberReorderableLazyListState
|
||||
import org.burnoutcrew.reorderable.reorderable
|
||||
import ru.tech.imageresizershrinker.core.filters.presentation.model.UiFilter
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||
|
@ -44,8 +44,8 @@ import ru.tech.imageresizershrinker.core.filters.presentation.model.toUiFilter
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.ExpandableItem
|
||||
|
@ -26,7 +26,7 @@ import org.burnoutcrew.reorderable.detectReorderAfterLongPress
|
||||
import org.burnoutcrew.reorderable.rememberReorderableLazyListState
|
||||
import org.burnoutcrew.reorderable.reorderable
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||
|
@ -84,8 +84,8 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.toHex
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.ImageNotPickedWidget
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke
|
||||
|
@ -42,8 +42,8 @@ import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.Picker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.localImagePickerMode
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.ImageNotPickedWidget
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.LazyImagesGrid
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke
|
||||
|
@ -76,7 +76,7 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResult
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.DrawBackgroundSelector
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageReorderCarousel
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.QualityWidget
|
||||
|
@ -74,7 +74,7 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.failedToSaveImages
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.localImagePickerMode
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.QualityWidget
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ResizeImageField
|
||||
|
@ -87,8 +87,8 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.toBitmap
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResult
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.ToggleGroupButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.Picture
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke
|
||||
|
@ -13,7 +13,7 @@ import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.findActivity
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
|
||||
@Composable
|
||||
|
@ -26,7 +26,7 @@ import ru.tech.imageresizershrinker.core.domain.AUTHOR_TG
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Github
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Telegram
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||
|
@ -44,7 +44,7 @@ import ru.tech.imageresizershrinker.core.ui.theme.TONSpaceColor
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.USDTColor
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.inverse
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.copyToClipboard
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem
|
||||
|
@ -1,17 +1,14 @@
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation.components
|
||||
|
||||
import androidx.compose.animation.AnimatedContent
|
||||
import androidx.compose.animation.animateColorAsState
|
||||
import androidx.compose.animation.fadeIn
|
||||
import androidx.compose.animation.fadeOut
|
||||
import androidx.compose.animation.togetherWith
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.ExperimentalLayoutApi
|
||||
import androidx.compose.foundation.layout.FlowRow
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.defaultMinSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
@ -24,13 +21,10 @@ import androidx.compose.material.icons.rounded.AddCircle
|
||||
import androidx.compose.material.icons.rounded.PhotoSizeSelectSmall
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.LocalContentColor
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.OutlinedTextField
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.MutableState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
@ -39,18 +33,16 @@ import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.compositeOver
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.input.KeyboardType
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.core.text.isDigitsOnly
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedChip
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||
@ -93,24 +85,29 @@ fun EditPresetsSheet(
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp, Alignment.CenterVertically)
|
||||
) {
|
||||
list.forEach {
|
||||
Chip(
|
||||
EnhancedChip(
|
||||
onClick = {
|
||||
updatePresets(list - it)
|
||||
},
|
||||
selected = false
|
||||
selected = false,
|
||||
selectedColor = MaterialTheme.colorScheme.primary,
|
||||
shape = MaterialTheme.shapes.medium
|
||||
) {
|
||||
AutoSizeText(it.toString())
|
||||
}
|
||||
}
|
||||
var expanded by remember { mutableStateOf(false) }
|
||||
Chip(
|
||||
EnhancedChip(
|
||||
onClick = {
|
||||
expanded = true
|
||||
},
|
||||
selected = false
|
||||
) {
|
||||
Icon(Icons.Rounded.AddCircle, null)
|
||||
}
|
||||
selected = false,
|
||||
selectedColor = MaterialTheme.colorScheme.primary,
|
||||
shape = MaterialTheme.shapes.medium,
|
||||
label = {
|
||||
Icon(Icons.Rounded.AddCircle, null)
|
||||
}
|
||||
)
|
||||
if (expanded) {
|
||||
var value by remember { mutableStateOf("") }
|
||||
AlertDialog(
|
||||
@ -192,58 +189,4 @@ fun EditPresetsSheet(
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun Chip(
|
||||
selected: Boolean,
|
||||
onClick: () -> Unit,
|
||||
label: @Composable () -> Unit
|
||||
) {
|
||||
val color by animateColorAsState(
|
||||
if (selected) MaterialTheme.colorScheme.primary
|
||||
else MaterialTheme.colorScheme.secondaryContainer.copy(
|
||||
alpha = 0.6f
|
||||
)
|
||||
)
|
||||
|
||||
CompositionLocalProvider(
|
||||
LocalTextStyle provides MaterialTheme.typography.labelLarge.copy(
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
color = if (selected) MaterialTheme.colorScheme.onTertiary
|
||||
else MaterialTheme.colorScheme.onSurface
|
||||
),
|
||||
LocalContentColor provides animateColorAsState(
|
||||
if (selected) MaterialTheme.colorScheme.onPrimary
|
||||
else MaterialTheme.colorScheme.onSurface
|
||||
).value,
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.defaultMinSize(36.dp, 36.dp)
|
||||
.container(
|
||||
color = color,
|
||||
resultPadding = 0.dp,
|
||||
borderColor = animateColorAsState(
|
||||
if (!selected) MaterialTheme.colorScheme.outlineVariant()
|
||||
else MaterialTheme.colorScheme.primary
|
||||
.copy(
|
||||
alpha = 0.9f
|
||||
)
|
||||
.compositeOver(Color.Black)
|
||||
).value,
|
||||
autoShadowElevation = 0.5.dp,
|
||||
shape = MaterialTheme.shapes.medium
|
||||
)
|
||||
.clickable(onClick = onClick),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier.padding(6.dp),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
label()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -45,8 +45,8 @@ import ru.tech.imageresizershrinker.core.ui.icons.emoji.EmojiData
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.emoji.EmojiItem
|
||||
import ru.tech.imageresizershrinker.core.ui.shapes.CloverShape
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.blend
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitch
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleDragHandle
|
||||
|
@ -37,7 +37,7 @@ import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.shapes.CloverShape
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.autoElevatedBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.containerFabBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalSettingsState
|
||||
|
@ -32,7 +32,7 @@ import ru.tech.imageresizershrinker.core.resources.BuildConfig
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Beta
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.isInstalledFromPlayStore
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.fadingEdges
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem
|
||||
|
@ -14,7 +14,7 @@ import androidx.compose.ui.res.stringResource
|
||||
import ru.tech.imageresizershrinker.core.resources.BuildConfig
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Jxl
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalSettingsState
|
||||
|
||||
|
@ -126,9 +126,9 @@ import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.isInstalledFromPlayStore
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.pulsate
|
||||
|
@ -20,7 +20,7 @@ import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.findActivity
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.needToShowStoragePermissionRequest
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.requestStoragePermission
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalSettingsState
|
||||
|
||||
|
@ -41,7 +41,7 @@ import org.xmlpull.v1.XmlPullParser
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceRow
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
|
||||
|
@ -1,6 +1,7 @@
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation.components.settings
|
||||
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.width
|
||||
@ -11,7 +12,6 @@ import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Shape
|
||||
import androidx.compose.ui.res.stringResource
|
||||
@ -40,20 +40,16 @@ fun DefaultScaleModeSettingItem(
|
||||
alpha = 0.2f
|
||||
),
|
||||
enableItemsCardBackground = false,
|
||||
titlePadding = PaddingValues(16.dp),
|
||||
titleArrangement = Arrangement.Start,
|
||||
title = {
|
||||
Row(
|
||||
modifier = Modifier.padding(16.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Icon(Icons.Outlined.Numbers, null)
|
||||
Spacer(modifier = Modifier.width(16.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.default_value),
|
||||
modifier = Modifier.weight(1f),
|
||||
style = LocalTextStyle.current.copy(lineHeight = 18.sp),
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
}
|
||||
Icon(Icons.Outlined.Numbers, null)
|
||||
Spacer(modifier = Modifier.width(16.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.default_value),
|
||||
style = LocalTextStyle.current.copy(lineHeight = 18.sp),
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
@ -27,7 +27,7 @@ import ru.tech.imageresizershrinker.core.ui.icons.emoji.allIconsCategorized
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Cool
|
||||
import ru.tech.imageresizershrinker.core.ui.shapes.CloverShape
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
|
@ -29,7 +29,7 @@ import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Prefix
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem
|
||||
|
@ -29,7 +29,7 @@ import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Suffix
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem
|
||||
|
@ -38,7 +38,7 @@ import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt
|
||||
import ru.tech.imageresizershrinker.core.ui.icons.material.Stacks
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem
|
||||
|
@ -19,7 +19,7 @@ import kotlinx.coroutines.launch
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.confetti.LocalConfettiController
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.isInstalledFromPlayStore
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.showError
|
||||
|
@ -111,9 +111,9 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.localImagePickerMode
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.showReview
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageReorderCarousel
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.PresetWidget
|
||||
|
@ -87,8 +87,8 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.toHex
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitch
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.ImageNotPickedWidget
|
||||
|
@ -84,7 +84,7 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.Picker
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.localImagePickerMode
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageTransformBar
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.PresetWidget
|
||||
|
@ -80,7 +80,7 @@ import ru.tech.imageresizershrinker.core.ui.utils.helper.localImagePickerMode
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResult
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageExtraTransformBar
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageTransformBar
|
||||
|
@ -42,7 +42,7 @@ import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import ru.tech.imageresizershrinker.core.domain.model.DomainAspectRatio
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.autoElevatedBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.Loading
|
||||
|
@ -58,7 +58,7 @@ import ru.tech.imageresizershrinker.core.ui.model.UiPathPaint
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.onMixedContainer
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitch
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.draw.BrushSoftnessSelector
|
||||
|
@ -55,7 +55,7 @@ import ru.tech.imageresizershrinker.core.ui.model.PtSaver
|
||||
import ru.tech.imageresizershrinker.core.ui.model.UiPathPaint
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.confetti.LocalConfettiController
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitch
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.draw.AutoEraseBackgroundCard
|
||||
|
@ -57,8 +57,8 @@ import ru.tech.imageresizershrinker.core.domain.image.Transformation
|
||||
import ru.tech.imageresizershrinker.core.resources.R
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.toBitmap
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.image.Picture
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.autoElevatedBorder
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
|
@ -45,7 +45,7 @@ import androidx.compose.ui.graphics.RectangleShape
|
||||
import androidx.compose.ui.unit.dp
|
||||
import kotlinx.coroutines.launch
|
||||
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedIconButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.dialogs.ExitWithoutSavingDialog
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke
|
||||
|
Reference in New Issue
Block a user