mirror of
https://github.com/T8RIN/ImageToolbox.git
synced 2025-05-18 05:55:57 +08:00
image scale description added and improved code reusability
This commit is contained in:
@ -73,9 +73,9 @@ import ru.tech.imageresizershrinker.core.ui.theme.ImageToolboxTheme
|
|||||||
import ru.tech.imageresizershrinker.core.ui.theme.White
|
import ru.tech.imageresizershrinker.core.ui.theme.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
|
||||||
|
@ -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>
|
@ -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>
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
@ -0,0 +1,83 @@
|
|||||||
|
package ru.tech.imageresizershrinker.core.ui.widget.buttons
|
||||||
|
|
||||||
|
import androidx.compose.animation.animateColorAsState
|
||||||
|
import androidx.compose.foundation.clickable
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
|
import androidx.compose.foundation.layout.defaultMinSize
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.material3.LocalContentColor
|
||||||
|
import androidx.compose.material3.LocalTextStyle
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.contentColorFor
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.CompositionLocalProvider
|
||||||
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.graphics.Shape
|
||||||
|
import androidx.compose.ui.graphics.compositeOver
|
||||||
|
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||||
|
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||||
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
|
||||||
|
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun EnhancedChip(
|
||||||
|
selected: Boolean,
|
||||||
|
onClick: () -> Unit,
|
||||||
|
contentPadding: PaddingValues = PaddingValues(6.dp),
|
||||||
|
selectedColor: Color,
|
||||||
|
shape: Shape = MaterialTheme.shapes.small,
|
||||||
|
label: @Composable () -> Unit
|
||||||
|
) {
|
||||||
|
val haptics = LocalHapticFeedback.current
|
||||||
|
val color by animateColorAsState(
|
||||||
|
if (selected) selectedColor
|
||||||
|
else MaterialTheme.colorScheme.secondaryContainer.copy(alpha = 0.6f)
|
||||||
|
)
|
||||||
|
val contentColor by animateColorAsState(
|
||||||
|
if (selected) MaterialTheme.colorScheme.contentColorFor(selectedColor)
|
||||||
|
else MaterialTheme.colorScheme.onSurface
|
||||||
|
)
|
||||||
|
|
||||||
|
CompositionLocalProvider(
|
||||||
|
LocalTextStyle provides MaterialTheme.typography.labelLarge.copy(
|
||||||
|
fontWeight = FontWeight.SemiBold,
|
||||||
|
color = contentColor
|
||||||
|
),
|
||||||
|
LocalContentColor provides contentColor
|
||||||
|
) {
|
||||||
|
Box(
|
||||||
|
modifier = Modifier
|
||||||
|
.defaultMinSize(36.dp, 36.dp)
|
||||||
|
.container(
|
||||||
|
color = color,
|
||||||
|
resultPadding = 0.dp,
|
||||||
|
borderColor = if (!selected) MaterialTheme.colorScheme.outlineVariant()
|
||||||
|
else selectedColor
|
||||||
|
.copy(alpha = 0.9f)
|
||||||
|
.compositeOver(Color.Black),
|
||||||
|
shape = shape,
|
||||||
|
autoShadowElevation = 0.5.dp
|
||||||
|
)
|
||||||
|
.clickable {
|
||||||
|
haptics.performHapticFeedback(
|
||||||
|
HapticFeedbackType.LongPress
|
||||||
|
)
|
||||||
|
onClick()
|
||||||
|
},
|
||||||
|
contentAlignment = Alignment.Center
|
||||||
|
) {
|
||||||
|
Box(
|
||||||
|
modifier = Modifier.padding(contentPadding),
|
||||||
|
contentAlignment = Alignment.Center
|
||||||
|
) {
|
||||||
|
label()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package ru.tech.imageresizershrinker.core.ui.widget.controls
|
package ru.tech.imageresizershrinker.core.ui.widget.buttons
|
||||||
|
|
||||||
import androidx.compose.animation.core.animateDpAsState
|
import androidx.compose.animation.core.animateDpAsState
|
||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
@ -1,4 +1,4 @@
|
|||||||
package ru.tech.imageresizershrinker.core.ui.widget.controls
|
package ru.tech.imageresizershrinker.core.ui.widget.buttons
|
||||||
|
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.ui.graphics.Shape
|
import androidx.compose.ui.graphics.Shape
|
@ -0,0 +1,56 @@
|
|||||||
|
package ru.tech.imageresizershrinker.core.ui.widget.buttons
|
||||||
|
|
||||||
|
import androidx.compose.foundation.background
|
||||||
|
import androidx.compose.foundation.clickable
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
|
import androidx.compose.material.icons.Icons
|
||||||
|
import androidx.compose.material.icons.outlined.Info
|
||||||
|
import androidx.compose.material3.Icon
|
||||||
|
import androidx.compose.material3.LocalTextStyle
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.contentColorFor
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.draw.clip
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
|
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||||
|
import androidx.compose.ui.platform.LocalDensity
|
||||||
|
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun SupportingButton(
|
||||||
|
onClick: () -> Unit,
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
icon: ImageVector = Icons.Outlined.Info,
|
||||||
|
containerColor: Color = MaterialTheme.colorScheme.secondaryContainer,
|
||||||
|
contentColor: Color = MaterialTheme.colorScheme.contentColorFor(containerColor)
|
||||||
|
) {
|
||||||
|
val haptics = LocalHapticFeedback.current
|
||||||
|
Icon(
|
||||||
|
imageVector = icon,
|
||||||
|
contentDescription = null,
|
||||||
|
tint = contentColor,
|
||||||
|
modifier = modifier
|
||||||
|
.background(
|
||||||
|
color = containerColor,
|
||||||
|
shape = CircleShape
|
||||||
|
)
|
||||||
|
.clip(CircleShape)
|
||||||
|
.clickable {
|
||||||
|
haptics.performHapticFeedback(
|
||||||
|
HapticFeedbackType.TextHandleMove
|
||||||
|
)
|
||||||
|
onClick()
|
||||||
|
}
|
||||||
|
.padding(1.dp)
|
||||||
|
.size(
|
||||||
|
with(LocalDensity.current) {
|
||||||
|
LocalTextStyle.current.fontSize.toDp()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
@ -67,7 +67,7 @@ import ru.tech.imageresizershrinker.core.ui.shapes.MaterialStarShape
|
|||||||
import ru.tech.imageresizershrinker.core.ui.theme.defaultColorTuple
|
import ru.tech.imageresizershrinker.core.ui.theme.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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -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)
|
||||||
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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(
|
||||||
|
@ -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(
|
||||||
|
@ -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
|
||||||
|
@ -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))
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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()
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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(
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user