image scale description added and improved code reusability

This commit is contained in:
T8RIN
2024-01-07 17:18:32 +03:00
parent bd2120456b
commit 65b2171be1
84 changed files with 461 additions and 501 deletions

View File

@ -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.White
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.copyToClipboard 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.controls.EnhancedFloatingActionButton import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
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 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.ToastHost
import ru.tech.imageresizershrinker.core.ui.widget.other.rememberToastHostState import ru.tech.imageresizershrinker.core.ui.widget.other.rememberToastHostState

View File

@ -522,4 +522,14 @@
<string name="nearest">Ближайший</string> <string name="nearest">Ближайший</string>
<string name="basic">Базовый</string> <string name="basic">Базовый</string>
<string name="default_value">Значение по умолчанию</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> </resources>

View File

@ -541,4 +541,15 @@
<string name="spline">Spline</string> <string name="spline">Spline</string>
<string name="basic">Basic</string> <string name="basic">Basic</string>
<string name="default_value">Default Value</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> </resources>

View File

@ -29,7 +29,6 @@ import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke

View File

@ -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.animateColorAsState
import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.core.animateDpAsState

View File

@ -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()
}
}
}
}

View File

@ -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.animation.core.animateDpAsState
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource

View File

@ -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.foundation.shape.RoundedCornerShape
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape

View File

@ -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()
}
)
)
}

View File

@ -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.defaultColorTuple
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
import ru.tech.imageresizershrinker.core.ui.utils.helper.ListUtils.nearestFor 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.controls.EnhancedSliderItem
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder 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.container

View File

@ -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.theme.inverse
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.copyToClipboard 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.utils.helper.ContextUtils.pasteColorFromClipboard
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.EnhancedIconButton 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.alertDialogBorder
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.modifier.transparencyChecker import ru.tech.imageresizershrinker.core.ui.widget.modifier.transparencyChecker

View File

@ -39,7 +39,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.theme.inverse 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.container
import ru.tech.imageresizershrinker.core.ui.widget.modifier.fadingEdges import ru.tech.imageresizershrinker.core.ui.widget.modifier.fadingEdges
import ru.tech.imageresizershrinker.core.ui.widget.modifier.transparencyChecker import ru.tech.imageresizershrinker.core.ui.widget.modifier.transparencyChecker

View File

@ -42,7 +42,7 @@ import com.t8rin.dynamic.theme.rememberAppColorTuple
import com.t8rin.dynamic.theme.rememberColorScheme import com.t8rin.dynamic.theme.rememberColorScheme
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import ru.tech.imageresizershrinker.core.resources.R 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.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet 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.AutoSizeText

View File

@ -3,37 +3,30 @@ package ru.tech.imageresizershrinker.core.ui.widget.controls
import android.os.Build import android.os.Build
import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.SizeTransform import androidx.compose.animation.SizeTransform
import androidx.compose.animation.animateColorAsState
import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut import androidx.compose.animation.fadeOut
import androidx.compose.animation.togetherWith import androidx.compose.animation.togetherWith
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ProvideTextStyle import androidx.compose.material3.ProvideTextStyle
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.material3.surfaceColorAtElevation
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.compositeOver import androidx.compose.ui.graphics.compositeOver
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight 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 androidx.compose.ui.unit.dp
import ru.tech.imageresizershrinker.core.domain.model.ImageFormat import ru.tech.imageresizershrinker.core.domain.model.ImageFormat
import ru.tech.imageresizershrinker.core.resources.R 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 import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
@OptIn(ExperimentalLayoutApi::class) @OptIn(ExperimentalLayoutApi::class)
@ -62,8 +55,6 @@ fun ExtensionGroup(
if (value !in entries) onValueChange(ImageFormat.Png) if (value !in entries) onValueChange(ImageFormat.Png)
} }
val haptics = LocalHapticFeedback.current
ProvideTextStyle( ProvideTextStyle(
value = TextStyle( value = TextStyle(
color = if (!enabled) disColor color = if (!enabled) disColor
@ -106,21 +97,22 @@ fun ExtensionGroup(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.padding(8.dp) .padding(8.dp)
.container() .container(
color = MaterialTheme.colorScheme.surfaceContainerLow
)
.padding(horizontal = 8.dp, vertical = 12.dp) .padding(horizontal = 8.dp, vertical = 12.dp)
) { ) {
items.forEach { items.forEach {
Chip( EnhancedChip(
onClick = { onClick = {
haptics.performHapticFeedback(
HapticFeedbackType.LongPress
)
onValueChange(it) onValueChange(it)
}, },
selected = it == value, selected = it == value,
label = { label = {
Text(text = it.title) 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) removeAll(ImageFormat.highLevelFormats)
} }
else this 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()
}
}
}
} }

View File

@ -50,6 +50,8 @@ import org.burnoutcrew.reorderable.detectReorderAfterLongPress
import org.burnoutcrew.reorderable.rememberReorderableLazyListState import org.burnoutcrew.reorderable.rememberReorderableLazyListState
import org.burnoutcrew.reorderable.reorderable import org.burnoutcrew.reorderable.reorderable
import ru.tech.imageresizershrinker.core.resources.R 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.image.Picture
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container

View File

@ -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.icons.material.Transparency
import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer
import ru.tech.imageresizershrinker.core.ui.theme.onMixedContainer 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 import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
@Composable @Composable

View File

@ -3,9 +3,6 @@
package ru.tech.imageresizershrinker.core.ui.widget.controls 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.gestures.detectTapGestures
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box 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.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Info import androidx.compose.material.icons.outlined.Info
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@ -41,13 +33,7 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier 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.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.res.stringResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
@ -57,9 +43,12 @@ import ru.tech.imageresizershrinker.core.domain.model.Preset
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt
import ru.tech.imageresizershrinker.core.ui.icons.material.Telegram 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.LocalNavController
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen 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.alertDialogBorder
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.modifier.fadingEdges import ru.tech.imageresizershrinker.core.ui.widget.modifier.fadingEdges
@ -118,25 +107,10 @@ fun PresetWidget(
fontWeight = FontWeight.Medium fontWeight = FontWeight.Medium
) )
Spacer(modifier = Modifier.width(8.dp)) Spacer(modifier = Modifier.width(8.dp))
Icon( SupportingButton(
imageVector = Icons.Outlined.Info, onClick = {
contentDescription = null, showPresetInfoDialog = true
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()
}
)
) )
} }
Spacer(Modifier.height(8.dp)) Spacer(Modifier.height(8.dp))
@ -159,23 +133,25 @@ fun PresetWidget(
if (includeTelegramOption) { if (includeTelegramOption) {
item { item {
val selected = selectedPreset.isTelegram() val selected = selectedPreset.isTelegram()
Chip( EnhancedChip(
selected = selected, selected = selected,
onClick = { onPresetSelected(Preset.Telegram) } onClick = { onPresetSelected(Preset.Telegram) },
selectedColor = MaterialTheme.colorScheme.primary,
shape = MaterialTheme.shapes.medium
) { ) {
Icon(Icons.Rounded.Telegram, null) Icon(Icons.Rounded.Telegram, null)
} }
} }
} }
data.forEach { items(data) {
item { val selected = selectedPreset.value() == it
val selected = selectedPreset.value() == it EnhancedChip(
Chip( selected = selected,
selected = selected, onClick = { onPresetSelected(Preset.Numeric(it)) },
onClick = { onPresetSelected(Preset.Numeric(it)) } selectedColor = MaterialTheme.colorScheme.primary,
) { shape = MaterialTheme.shapes.medium
AutoSizeText(it.toString()) ) {
} 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()
}
}
}
} }

View File

@ -1,42 +1,47 @@
package ru.tech.imageresizershrinker.core.ui.widget.controls 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.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.FlowRow 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.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding 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.foundation.shape.RoundedCornerShape
import androidx.compose.material3.LocalTextStyle import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.material3.surfaceColorAtElevation
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape 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.res.stringResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import ru.tech.imageresizershrinker.core.domain.ImageScaleMode import ru.tech.imageresizershrinker.core.domain.ImageScaleMode
import ru.tech.imageresizershrinker.core.resources.R 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.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 import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalSettingsState
@OptIn(ExperimentalLayoutApi::class) @OptIn(ExperimentalLayoutApi::class)
@ -47,19 +52,18 @@ fun ScaleModeSelector(
shape: Shape = RoundedCornerShape(24.dp), shape: Shape = RoundedCornerShape(24.dp),
enableItemsCardBackground: Boolean = true, enableItemsCardBackground: Boolean = true,
value: ImageScaleMode, value: ImageScaleMode,
titlePadding: PaddingValues = PaddingValues(top = 8.dp),
titleArrangement: Arrangement.Horizontal = Arrangement.Center,
onValueChange: (ImageScaleMode) -> Unit, onValueChange: (ImageScaleMode) -> Unit,
title: @Composable ColumnScope.() -> Unit = { title: @Composable RowScope.() -> Unit = {
Text( Text(
text = stringResource(R.string.scale_mode), text = stringResource(R.string.scale_mode),
modifier = Modifier
.fillMaxWidth()
.padding(top = 8.dp),
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
fontWeight = FontWeight.Medium fontWeight = FontWeight.Medium
) )
} }
) { ) {
val haptics = LocalHapticFeedback.current val state = rememberSaveable { mutableStateOf(false) }
val items = remember { val items = remember {
ImageScaleMode.entries ImageScaleMode.entries
} }
@ -79,7 +83,21 @@ fun ScaleModeSelector(
), ),
horizontalAlignment = Alignment.CenterHorizontally 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)) Spacer(modifier = Modifier.height(8.dp))
FlowRow( FlowRow(
@ -97,70 +115,75 @@ fun ScaleModeSelector(
.then( .then(
if (enableItemsCardBackground) { if (enableItemsCardBackground) {
Modifier Modifier
.container() .container(color = MaterialTheme.colorScheme.surfaceContainerLow)
.padding(horizontal = 8.dp, vertical = 12.dp) .padding(horizontal = 8.dp, vertical = 12.dp)
} else Modifier } else Modifier
) )
) { ) {
items.forEach { items.forEach {
Chip( EnhancedChip(
onClick = { onClick = {
haptics.performHapticFeedback(
HapticFeedbackType.LongPress
)
onValueChange(it) onValueChange(it)
}, },
selected = it == value, selected = it == value,
label = { label = {
Text(text = it.title) Text(text = it.title)
} },
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 6.dp),
selectedColor = MaterialTheme.colorScheme.secondary
) )
} }
} }
} }
}
@Composable SimpleSheet(
private fun Chip( sheetContent = {
selected: Boolean, Column(
onClick: () -> Unit, modifier = Modifier
label: @Composable () -> Unit .verticalScroll(rememberScrollState())
) { .padding(8.dp),
val color by animateColorAsState( verticalArrangement = Arrangement.spacedBy(4.dp)
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() 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 private val ImageScaleMode.title: String
@ -177,3 +200,18 @@ private val ImageScaleMode.title: String
ImageScaleMode.Spline -> stringResource(id = R.string.spline) ImageScaleMode.Spline -> stringResource(id = R.string.spline)
else -> stringResource(id = R.string.basic) 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)
}

View File

@ -26,7 +26,7 @@ import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.BuildConfig import ru.tech.imageresizershrinker.core.ui.BuildConfig
import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer
import ru.tech.imageresizershrinker.core.ui.theme.onMixedContainer 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 import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
@Composable @Composable

View File

@ -8,7 +8,6 @@ import androidx.compose.animation.fadeOut
import androidx.compose.animation.shrinkVertically import androidx.compose.animation.shrinkVertically
import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box 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.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons 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.BlurCircular
import androidx.compose.material.icons.rounded.Brush import androidx.compose.material.icons.rounded.Brush
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SegmentedButton import androidx.compose.material3.SegmentedButton
import androidx.compose.material3.SegmentedButtonDefaults import androidx.compose.material3.SegmentedButtonDefaults
@ -47,11 +42,11 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector 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.res.stringResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
@ -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.Highlighter
import ru.tech.imageresizershrinker.core.ui.icons.material.Laser import ru.tech.imageresizershrinker.core.ui.icons.material.Laser
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.controls.resize_group.components.BlurRadiusSelector
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
@ -81,6 +77,7 @@ fun DrawModeSelector(
value: DrawMode, value: DrawMode,
onValueChange: (DrawMode) -> Unit onValueChange: (DrawMode) -> Unit
) { ) {
val haptics = LocalHapticFeedback.current
val state = rememberSaveable { mutableStateOf(false) } val state = rememberSaveable { mutableStateOf(false) }
val settingsState = LocalSettingsState.current val settingsState = LocalSettingsState.current
@ -102,25 +99,10 @@ fun DrawModeSelector(
fontWeight = FontWeight.Medium fontWeight = FontWeight.Medium
) )
Spacer(modifier = Modifier.width(8.dp)) Spacer(modifier = Modifier.width(8.dp))
Icon( SupportingButton(
imageVector = Icons.Outlined.Info, onClick = {
contentDescription = null, state.value = true
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()
}
)
) )
} }
Box { Box {
@ -144,7 +126,12 @@ fun DrawModeSelector(
count = DrawMode.entries.size count = DrawMode.entries.size
) )
SegmentedButton( SegmentedButton(
onClick = { onValueChange(item) }, onClick = {
haptics.performHapticFeedback(
HapticFeedbackType.LongPress
)
onValueChange(item)
},
selected = selected, selected = selected,
icon = {}, icon = {},
border = BorderStroke( border = BorderStroke(

View File

@ -3,7 +3,6 @@ package ru.tech.imageresizershrinker.core.ui.widget.controls.draw
import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.core.animateDpAsState
import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box 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.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons 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.CheckBoxOutlineBlank
import androidx.compose.material.icons.rounded.Circle import androidx.compose.material.icons.rounded.Circle
import androidx.compose.material.icons.rounded.RadioButtonUnchecked import androidx.compose.material.icons.rounded.RadioButtonUnchecked
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SegmentedButton import androidx.compose.material3.SegmentedButton
import androidx.compose.material3.SegmentedButtonDefaults import androidx.compose.material3.SegmentedButtonDefaults
@ -43,11 +38,11 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector 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.res.stringResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
@ -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.LineDoubleArrow
import ru.tech.imageresizershrinker.core.ui.icons.material.Square import ru.tech.imageresizershrinker.core.ui.icons.material.Square
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.ContainerShapeDefaults
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.modifier.materialShadow import ru.tech.imageresizershrinker.core.ui.widget.modifier.materialShadow
@ -82,6 +78,7 @@ fun DrawPathModeSelector(
value: DrawPathMode, value: DrawPathMode,
onValueChange: (DrawPathMode) -> Unit onValueChange: (DrawPathMode) -> Unit
) { ) {
val haptics = LocalHapticFeedback.current
val state = rememberSaveable { mutableStateOf(false) } val state = rememberSaveable { mutableStateOf(false) }
val settingsState = LocalSettingsState.current val settingsState = LocalSettingsState.current
@ -103,25 +100,10 @@ fun DrawPathModeSelector(
fontWeight = FontWeight.Medium fontWeight = FontWeight.Medium
) )
Spacer(modifier = Modifier.width(8.dp)) Spacer(modifier = Modifier.width(8.dp))
Icon( SupportingButton(
imageVector = Icons.Outlined.Info, onClick = {
contentDescription = null, state.value = true
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()
}
)
) )
} }
Box { Box {
@ -145,7 +127,12 @@ fun DrawPathModeSelector(
count = values.size count = values.size
) )
SegmentedButton( SegmentedButton(
onClick = { onValueChange(item) }, onClick = {
haptics.performHapticFeedback(
HapticFeedbackType.LongPress
)
onValueChange(item)
},
selected = selected, selected = selected,
icon = {}, icon = {},
border = BorderStroke( border = BorderStroke(

View File

@ -17,7 +17,7 @@ import androidx.compose.ui.unit.dp
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.icons.material.Eraser import ru.tech.imageresizershrinker.core.ui.icons.material.Eraser
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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 import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceRow
@Composable @Composable

View File

@ -7,8 +7,6 @@ import androidx.compose.animation.expandVertically
import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut import androidx.compose.animation.fadeOut
import androidx.compose.animation.shrinkVertically 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.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row 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.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll 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.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@ -38,10 +30,8 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
@ -49,9 +39,10 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import ru.tech.imageresizershrinker.core.domain.model.ResizeType import ru.tech.imageresizershrinker.core.domain.model.ResizeType
import ru.tech.imageresizershrinker.core.resources.R 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.buttons.ToggleGroupButton
import ru.tech.imageresizershrinker.core.ui.widget.controls.DrawBackgroundSelector 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.BlurRadiusSelector
import ru.tech.imageresizershrinker.core.ui.widget.controls.resize_group.components.UseBlurredBackgroundToggle import ru.tech.imageresizershrinker.core.ui.widget.controls.resize_group.components.UseBlurredBackgroundToggle
import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults import ru.tech.imageresizershrinker.core.ui.widget.modifier.ContainerShapeDefaults
@ -113,25 +104,10 @@ fun ResizeTypeSelector(
fontWeight = FontWeight.Medium fontWeight = FontWeight.Medium
) )
Spacer(modifier = Modifier.width(8.dp)) Spacer(modifier = Modifier.width(8.dp))
Icon( SupportingButton(
imageVector = Icons.Outlined.Info, onClick = {
contentDescription = null, state.value = true
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()
}
)
) )
} }
Spacer(modifier = Modifier.height(8.dp)) Spacer(modifier = Modifier.height(8.dp))

View File

@ -11,7 +11,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import ru.tech.imageresizershrinker.core.resources.R 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.modifier.alertDialogBorder
@Composable @Composable

View File

@ -14,7 +14,7 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import ru.tech.imageresizershrinker.core.resources.R 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.modifier.alertDialogBorder
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost

View File

@ -23,8 +23,8 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.controls.EnhancedIconButton 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.container
@Composable @Composable

View File

@ -32,7 +32,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.unit.dp 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 import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
@Composable @Composable

View File

@ -11,7 +11,7 @@ import androidx.compose.ui.graphics.StrokeCap
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.widget.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.alertDialogBorder
@Composable @Composable

View File

@ -24,7 +24,7 @@ import com.t8rin.dynamic.theme.PaletteStyle
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt
import ru.tech.imageresizershrinker.core.ui.icons.material.Swatch 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.preferences.PreferenceItem
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem

View File

@ -36,7 +36,7 @@ import com.smarttoolfactory.beforeafter.BeforeAfterImage
import com.smarttoolfactory.beforeafter.OverlayStyle import com.smarttoolfactory.beforeafter.OverlayStyle
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.modifier.transparencyChecker
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText 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.text.TitleItem

View File

@ -48,8 +48,8 @@ import androidx.exifinterface.media.ExifInterface
import ru.tech.imageresizershrinker.core.domain.image.Metadata import ru.tech.imageresizershrinker.core.domain.image.Metadata
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.toMap 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.buttons.EnhancedButton
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.alertDialogBorder 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.container
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItemOverload import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItemOverload

View File

@ -14,7 +14,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.model.UiFontFam 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.other.FontSelectionItem
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText 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.text.TitleItem

View File

@ -35,8 +35,8 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import coil.transform.Transformation import coil.transform.Transformation
import ru.tech.imageresizershrinker.core.resources.R 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.controls.EnhancedIconButton 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.image.Picture
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText

View File

@ -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.theme.White
import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen 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.image.Picture
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.preferences.screens.BackgroundRemoverPreference import ru.tech.imageresizershrinker.core.ui.widget.preferences.screens.BackgroundRemoverPreference

View File

@ -33,7 +33,7 @@ import com.smarttoolfactory.image.zoom.animatedZoom
import com.smarttoolfactory.image.zoom.rememberAnimatedZoomState import com.smarttoolfactory.image.zoom.rememberAnimatedZoomState
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.modifier.transparencyChecker
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText 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.text.TitleItem

View File

@ -28,7 +28,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import ru.tech.imageresizershrinker.core.domain.utils.trimTrailingZero import ru.tech.imageresizershrinker.core.domain.utils.trimTrailingZero
import ru.tech.imageresizershrinker.core.resources.R 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.modifier.alertDialogBorder
import ru.tech.imageresizershrinker.core.ui.widget.text.KeyboardFocusHandler import ru.tech.imageresizershrinker.core.ui.widget.text.KeyboardFocusHandler
import kotlin.math.pow import kotlin.math.pow

View File

@ -36,7 +36,7 @@ import kotlinx.coroutines.launch
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.domain.APP_RELEASES import ru.tech.imageresizershrinker.core.domain.APP_RELEASES
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.isInstalledFromPlayStore 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.other.LocalToastHost
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleDragHandle import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleDragHandle
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet

View File

@ -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.localImagePickerMode
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker 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.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.EnhancedSwitch
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
import ru.tech.imageresizershrinker.core.ui.widget.controls.PresetWidget import ru.tech.imageresizershrinker.core.ui.widget.controls.PresetWidget

View File

@ -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.ContextUtils.getFileName
import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.fileSize 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.utils.helper.showReview
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.EnhancedFloatingActionButton import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
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.dialogs.ExitWithoutSavingDialog
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke
@ -350,7 +350,12 @@ fun FileCipherScreen(
val selected = val selected =
index == if (viewModel.isEncrypt) 0 else 1 index == if (viewModel.isEncrypt) 0 else 1
SegmentedButton( SegmentedButton(
onClick = { viewModel.setIsEncrypt(index == 0) }, onClick = {
haptics.performHapticFeedback(
HapticFeedbackType.LongPress
)
viewModel.setIsEncrypt(index == 0)
},
border = BorderStroke( border = BorderStroke(
width = settingsState.borderWidth, width = settingsState.borderWidth,
color = MaterialTheme.colorScheme.outlineVariant() color = MaterialTheme.colorScheme.outlineVariant()

View File

@ -17,7 +17,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import ru.tech.imageresizershrinker.core.resources.R 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.sheets.SimpleSheet
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText 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.text.TitleItem

View File

@ -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.localImagePickerMode
import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResult 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.helper.rememberImagePicker
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.EnhancedFloatingActionButton import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
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.controls.EnhancedSlider
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup
import ru.tech.imageresizershrinker.core.ui.widget.image.ImageNotPickedWidget import ru.tech.imageresizershrinker.core.ui.widget.image.ImageNotPickedWidget

View File

@ -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.localImagePickerMode
import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResult 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.helper.rememberImagePicker
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.EnhancedFloatingActionButton import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
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.ExtensionGroup
import ru.tech.imageresizershrinker.core.ui.widget.dialogs.ExitWithoutSavingDialog import ru.tech.imageresizershrinker.core.ui.widget.dialogs.ExitWithoutSavingDialog
import ru.tech.imageresizershrinker.core.ui.widget.image.ImageNotPickedWidget import ru.tech.imageresizershrinker.core.ui.widget.image.ImageNotPickedWidget

View File

@ -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.localImagePickerMode
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker 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.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.dialogs.ExitWithoutSavingDialog
import ru.tech.imageresizershrinker.core.ui.widget.image.ImageContainer import ru.tech.imageresizershrinker.core.ui.widget.image.ImageContainer
import ru.tech.imageresizershrinker.core.ui.widget.image.ImageCounter import ru.tech.imageresizershrinker.core.ui.widget.image.ImageCounter

View File

@ -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.parseSaveResult
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker 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.DrawBackgroundSelector
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.EnhancedFloatingActionButton import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
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.EnhancedSwitch
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup

View File

@ -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.localImagePickerMode
import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResult 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.helper.rememberImagePicker
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
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.EnhancedSwitch
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults
import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup import ru.tech.imageresizershrinker.core.ui.widget.controls.ExtensionGroup

View File

@ -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.helper.rememberImagePicker
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen 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.buttons.BottomButtonsBlock
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.EnhancedFloatingActionButton import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
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.ExtensionGroup
import ru.tech.imageresizershrinker.core.ui.widget.controls.QualityWidget import ru.tech.imageresizershrinker.core.ui.widget.controls.QualityWidget
import ru.tech.imageresizershrinker.core.ui.widget.controls.SaveExifWidget import ru.tech.imageresizershrinker.core.ui.widget.controls.SaveExifWidget

View File

@ -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.onMixedContainer
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
import ru.tech.imageresizershrinker.core.ui.utils.state.update 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.buttons.EnhancedButton
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.EnhancedSwitch
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults
import ru.tech.imageresizershrinker.core.ui.widget.controls.draw.BrushSoftnessSelector import ru.tech.imageresizershrinker.core.ui.widget.controls.draw.BrushSoftnessSelector

View File

@ -14,7 +14,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer 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 @Composable
fun AddFilterButton( fun AddFilterButton(

View File

@ -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.resources.R
import ru.tech.imageresizershrinker.core.ui.icons.material.Cube import ru.tech.imageresizershrinker.core.ui.icons.material.Cube
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.controls.EnhancedIconButton 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.SimplePicture
import ru.tech.imageresizershrinker.core.ui.widget.image.imageStickyHeader import ru.tech.imageresizershrinker.core.ui.widget.image.imageStickyHeader
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container

View File

@ -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.theme.outlineVariant
import ru.tech.imageresizershrinker.core.ui.widget.color_picker.ColorSelectionRow 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.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.controls.EnhancedSlider
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.text.RoundedTextField import ru.tech.imageresizershrinker.core.ui.widget.text.RoundedTextField

View File

@ -27,7 +27,7 @@ import org.burnoutcrew.reorderable.rememberReorderableLazyListState
import org.burnoutcrew.reorderable.reorderable import org.burnoutcrew.reorderable.reorderable
import ru.tech.imageresizershrinker.core.filters.presentation.model.UiFilter import ru.tech.imageresizershrinker.core.filters.presentation.model.UiFilter
import ru.tech.imageresizershrinker.core.resources.R 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.sheets.SimpleSheet
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText 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.text.TitleItem

View File

@ -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.resources.R
import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.controls.EnhancedIconButton 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.alertDialogBorder
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.other.ExpandableItem import ru.tech.imageresizershrinker.core.ui.widget.other.ExpandableItem

View File

@ -26,7 +26,7 @@ import org.burnoutcrew.reorderable.detectReorderAfterLongPress
import org.burnoutcrew.reorderable.rememberReorderableLazyListState import org.burnoutcrew.reorderable.rememberReorderableLazyListState
import org.burnoutcrew.reorderable.reorderable import org.burnoutcrew.reorderable.reorderable
import ru.tech.imageresizershrinker.core.resources.R 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.sheets.SimpleSheet
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText 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.text.TitleItem

View File

@ -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.helper.toHex
import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen 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.buttons.EnhancedFloatingActionButton
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.image.ImageNotPickedWidget 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.container
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke

View File

@ -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.Picker
import ru.tech.imageresizershrinker.core.ui.utils.helper.localImagePickerMode 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.rememberImagePicker
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
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.image.ImageNotPickedWidget 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.image.LazyImagesGrid
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke

View File

@ -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.utils.helper.rememberImagePicker
import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock 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.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.ExtensionGroup
import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageReorderCarousel import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageReorderCarousel
import ru.tech.imageresizershrinker.core.ui.widget.controls.QualityWidget import ru.tech.imageresizershrinker.core.ui.widget.controls.QualityWidget

View File

@ -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.localImagePickerMode
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker 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.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.ExtensionGroup
import ru.tech.imageresizershrinker.core.ui.widget.controls.QualityWidget import ru.tech.imageresizershrinker.core.ui.widget.controls.QualityWidget
import ru.tech.imageresizershrinker.core.ui.widget.controls.ResizeImageField import ru.tech.imageresizershrinker.core.ui.widget.controls.ResizeImageField

View File

@ -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.helper.parseSaveResult
import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController 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.buttons.ToggleGroupButton
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedFloatingActionButton import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
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.image.Picture 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.container
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke

View File

@ -13,7 +13,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import ru.tech.imageresizershrinker.core.resources.R 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.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 import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
@Composable @Composable

View File

@ -26,7 +26,7 @@ import ru.tech.imageresizershrinker.core.domain.AUTHOR_TG
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.icons.material.Github import ru.tech.imageresizershrinker.core.ui.icons.material.Github
import ru.tech.imageresizershrinker.core.ui.icons.material.Telegram 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.preferences.PreferenceItem
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet 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.AutoSizeText

View File

@ -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.USDTColor
import ru.tech.imageresizershrinker.core.ui.theme.inverse 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.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.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem

View File

@ -1,17 +1,14 @@
package ru.tech.imageresizershrinker.feature.main.presentation.components package ru.tech.imageresizershrinker.feature.main.presentation.components
import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.animateColorAsState
import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut import androidx.compose.animation.fadeOut
import androidx.compose.animation.togetherWith import androidx.compose.animation.togetherWith
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState 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.material.icons.rounded.PhotoSizeSelectSmall
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.MutableState import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
@ -39,18 +33,16 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.compositeOver
import androidx.compose.ui.res.stringResource 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.input.KeyboardType
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.core.text.isDigitsOnly import androidx.core.text.isDigitsOnly
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.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.sheets.SimpleSheet
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText 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.text.TitleItem
@ -93,24 +85,29 @@ fun EditPresetsSheet(
verticalArrangement = Arrangement.spacedBy(8.dp, Alignment.CenterVertically) verticalArrangement = Arrangement.spacedBy(8.dp, Alignment.CenterVertically)
) { ) {
list.forEach { list.forEach {
Chip( EnhancedChip(
onClick = { onClick = {
updatePresets(list - it) updatePresets(list - it)
}, },
selected = false selected = false,
selectedColor = MaterialTheme.colorScheme.primary,
shape = MaterialTheme.shapes.medium
) { ) {
AutoSizeText(it.toString()) AutoSizeText(it.toString())
} }
} }
var expanded by remember { mutableStateOf(false) } var expanded by remember { mutableStateOf(false) }
Chip( EnhancedChip(
onClick = { onClick = {
expanded = true expanded = true
}, },
selected = false selected = false,
) { selectedColor = MaterialTheme.colorScheme.primary,
Icon(Icons.Rounded.AddCircle, null) shape = MaterialTheme.shapes.medium,
} label = {
Icon(Icons.Rounded.AddCircle, null)
}
)
if (expanded) { if (expanded) {
var value by remember { mutableStateOf("") } var value by remember { mutableStateOf("") }
AlertDialog( 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()
}
}
}
} }

View File

@ -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.icons.emoji.EmojiItem
import ru.tech.imageresizershrinker.core.ui.shapes.CloverShape import ru.tech.imageresizershrinker.core.ui.shapes.CloverShape
import ru.tech.imageresizershrinker.core.ui.theme.blend import ru.tech.imageresizershrinker.core.ui.theme.blend
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.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.EnhancedSwitch
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleDragHandle import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleDragHandle

View File

@ -37,7 +37,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.shapes.CloverShape 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.autoElevatedBorder
import ru.tech.imageresizershrinker.core.ui.widget.modifier.containerFabBorder import ru.tech.imageresizershrinker.core.ui.widget.modifier.containerFabBorder
import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalSettingsState import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalSettingsState

View File

@ -32,7 +32,7 @@ import ru.tech.imageresizershrinker.core.resources.BuildConfig
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.icons.material.Beta 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.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.alertDialogBorder
import ru.tech.imageresizershrinker.core.ui.widget.modifier.fadingEdges import ru.tech.imageresizershrinker.core.ui.widget.modifier.fadingEdges
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem

View File

@ -14,7 +14,7 @@ import androidx.compose.ui.res.stringResource
import ru.tech.imageresizershrinker.core.resources.BuildConfig import ru.tech.imageresizershrinker.core.resources.BuildConfig
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.icons.material.Jxl 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.modifier.alertDialogBorder
import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalSettingsState import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalSettingsState

View File

@ -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.helper.ContextUtils.isInstalledFromPlayStore
import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen 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.controls.EnhancedFloatingActionButton import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
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 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.drawHorizontalStroke
import ru.tech.imageresizershrinker.core.ui.widget.modifier.pulsate import ru.tech.imageresizershrinker.core.ui.widget.modifier.pulsate

View File

@ -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.findActivity
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.needToShowStoragePermissionRequest 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.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.modifier.alertDialogBorder
import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalSettingsState import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalSettingsState

View File

@ -41,7 +41,7 @@ import org.xmlpull.v1.XmlPullParser
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt import ru.tech.imageresizershrinker.core.ui.icons.material.CreateAlt
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils 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.preferences.PreferenceRow
import ru.tech.imageresizershrinker.core.ui.widget.sheets.SimpleSheet 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.AutoSizeText

View File

@ -1,6 +1,7 @@
package ru.tech.imageresizershrinker.feature.main.presentation.components.settings 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.Spacer
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
@ -11,7 +12,6 @@ import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -40,20 +40,16 @@ fun DefaultScaleModeSettingItem(
alpha = 0.2f alpha = 0.2f
), ),
enableItemsCardBackground = false, enableItemsCardBackground = false,
titlePadding = PaddingValues(16.dp),
titleArrangement = Arrangement.Start,
title = { title = {
Row( Icon(Icons.Outlined.Numbers, null)
modifier = Modifier.padding(16.dp), Spacer(modifier = Modifier.width(16.dp))
verticalAlignment = Alignment.CenterVertically Text(
) { text = stringResource(R.string.default_value),
Icon(Icons.Outlined.Numbers, null) style = LocalTextStyle.current.copy(lineHeight = 18.sp),
Spacer(modifier = Modifier.width(16.dp)) fontWeight = FontWeight.Medium
Text( )
text = stringResource(R.string.default_value),
modifier = Modifier.weight(1f),
style = LocalTextStyle.current.copy(lineHeight = 18.sp),
fontWeight = FontWeight.Medium
)
}
} }
) )
} }

View File

@ -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.icons.material.Cool
import ru.tech.imageresizershrinker.core.ui.shapes.CloverShape import ru.tech.imageresizershrinker.core.ui.shapes.CloverShape
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.ContainerShapeDefaults
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder 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.container

View File

@ -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.CreateAlt
import ru.tech.imageresizershrinker.core.ui.icons.material.Prefix import ru.tech.imageresizershrinker.core.ui.icons.material.Prefix
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.ContainerShapeDefaults
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem

View File

@ -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.CreateAlt
import ru.tech.imageresizershrinker.core.ui.icons.material.Suffix import ru.tech.imageresizershrinker.core.ui.icons.material.Suffix
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.ContainerShapeDefaults
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem

View File

@ -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.CreateAlt
import ru.tech.imageresizershrinker.core.ui.icons.material.Stacks import ru.tech.imageresizershrinker.core.ui.icons.material.Stacks
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen 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.modifier.ContainerShapeDefaults
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem

View File

@ -19,7 +19,7 @@ import kotlinx.coroutines.launch
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.utils.confetti.LocalConfettiController 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.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.modifier.ContainerShapeDefaults
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHost
import ru.tech.imageresizershrinker.core.ui.widget.other.showError import ru.tech.imageresizershrinker.core.ui.widget.other.showError

View File

@ -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.rememberImagePicker
import ru.tech.imageresizershrinker.core.ui.utils.helper.showReview import ru.tech.imageresizershrinker.core.ui.utils.helper.showReview
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen 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.controls.EnhancedFloatingActionButton import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedFloatingActionButton
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.ExtensionGroup
import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageReorderCarousel import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageReorderCarousel
import ru.tech.imageresizershrinker.core.ui.widget.controls.PresetWidget import ru.tech.imageresizershrinker.core.ui.widget.controls.PresetWidget

View File

@ -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.helper.toHex
import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController import ru.tech.imageresizershrinker.core.ui.utils.navigation.LocalNavController
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen 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.buttons.EnhancedFloatingActionButton
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.EnhancedSwitch
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults
import ru.tech.imageresizershrinker.core.ui.widget.image.ImageNotPickedWidget import ru.tech.imageresizershrinker.core.ui.widget.image.ImageNotPickedWidget

View File

@ -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.localImagePickerMode
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker 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.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.ExtensionGroup
import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageTransformBar import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageTransformBar
import ru.tech.imageresizershrinker.core.ui.widget.controls.PresetWidget import ru.tech.imageresizershrinker.core.ui.widget.controls.PresetWidget

View File

@ -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.parseSaveResult
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberImagePicker 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.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.ExtensionGroup
import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageExtraTransformBar import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageExtraTransformBar
import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageTransformBar import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageTransformBar

View File

@ -42,7 +42,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import ru.tech.imageresizershrinker.core.domain.model.DomainAspectRatio import ru.tech.imageresizershrinker.core.domain.model.DomainAspectRatio
import ru.tech.imageresizershrinker.core.resources.R 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.autoElevatedBorder
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke
import ru.tech.imageresizershrinker.core.ui.widget.other.Loading import ru.tech.imageresizershrinker.core.ui.widget.other.Loading

View File

@ -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.mixedContainer
import ru.tech.imageresizershrinker.core.ui.theme.onMixedContainer import ru.tech.imageresizershrinker.core.ui.theme.onMixedContainer
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.EnhancedSwitch
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults
import ru.tech.imageresizershrinker.core.ui.widget.controls.draw.BrushSoftnessSelector import ru.tech.imageresizershrinker.core.ui.widget.controls.draw.BrushSoftnessSelector

View File

@ -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.model.UiPathPaint
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
import ru.tech.imageresizershrinker.core.ui.utils.confetti.LocalConfettiController 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.EnhancedSwitch
import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults import ru.tech.imageresizershrinker.core.ui.widget.controls.EnhancedSwitchDefaults
import ru.tech.imageresizershrinker.core.ui.widget.controls.draw.AutoEraseBackgroundCard import ru.tech.imageresizershrinker.core.ui.widget.controls.draw.AutoEraseBackgroundCard

View File

@ -57,8 +57,8 @@ import ru.tech.imageresizershrinker.core.domain.image.Transformation
import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.R
import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer
import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.toBitmap 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.buttons.EnhancedButton
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.image.Picture 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.autoElevatedBorder
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container

View File

@ -45,7 +45,7 @@ import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant 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.dialogs.ExitWithoutSavingDialog
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke import ru.tech.imageresizershrinker.core.ui.widget.modifier.drawHorizontalStroke