From 8356f086d76ba06348a973f447f0c0b36b6692f9 Mon Sep 17 00:00:00 2001 From: T8RIN Date: Thu, 14 Mar 2024 22:21:29 +0300 Subject: [PATCH] icons improved --- .../core/ui/icons/material/ImageReset.kt | 81 +++++++++++++++++++ .../core/ui/widget/dialogs/ResetDialog.kt | 13 ++- .../ImagePickerModeSettingItemGroup.kt | 8 +- .../settings/ResetSettingsSettingItem.kt | 3 +- .../presentation/ResizeAndConvertScreen.kt | 4 +- .../presentation/SingeEditScreen.kt | 11 ++- 6 files changed, 107 insertions(+), 13 deletions(-) create mode 100644 core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/icons/material/ImageReset.kt diff --git a/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/icons/material/ImageReset.kt b/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/icons/material/ImageReset.kt new file mode 100644 index 0000000000..36f2ef3df6 --- /dev/null +++ b/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/icons/material/ImageReset.kt @@ -0,0 +1,81 @@ +/* + * ImageToolbox is an image editor for android + * Copyright (c) 2024 T8RIN (Malik Mukhametzyanov) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * You should have received a copy of the Apache License + * along with this program. If not, see . + */ + +package ru.tech.imageresizershrinker.core.ui.icons.material + +import androidx.compose.material.icons.Icons +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.PathFillType.Companion.NonZero +import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.graphics.StrokeCap.Companion.Butt +import androidx.compose.ui.graphics.StrokeJoin.Companion.Miter +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.vector.ImageVector.Builder +import androidx.compose.ui.graphics.vector.path +import androidx.compose.ui.unit.dp + +val Icons.Rounded.ImageReset: ImageVector by lazy { + Builder( + name = "ImageReset", defaultWidth = 24.0.dp, defaultHeight = 24.0.dp, + viewportWidth = 960.0f, viewportHeight = 960.0f + ).apply { + path( + fill = SolidColor(Color(0xFF000000)), stroke = null, strokeLineWidth = 0.0f, + strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f, + pathFillType = NonZero + ) { + moveTo(120.0f, 360.0f) + verticalLineToRelative(-240.0f) + horizontalLineToRelative(80.0f) + verticalLineToRelative(134.0f) + quadToRelative(50.0f, -62.0f, 122.5f, -98.0f) + reflectiveQuadTo(480.0f, 120.0f) + quadToRelative(118.0f, 0.0f, 210.5f, 67.0f) + reflectiveQuadTo(820.0f, 360.0f) + horizontalLineToRelative(-87.0f) + quadToRelative(-34.0f, -72.0f, -101.0f, -116.0f) + reflectiveQuadToRelative(-152.0f, -44.0f) + quadToRelative(-57.0f, 0.0f, -107.5f, 21.0f) + reflectiveQuadTo(284.0f, 280.0f) + horizontalLineToRelative(76.0f) + verticalLineToRelative(80.0f) + lineTo(120.0f, 360.0f) + close() + moveTo(240.0f, 720.0f) + horizontalLineToRelative(480.0f) + lineTo(570.0f, 520.0f) + lineTo(450.0f, 680.0f) + lineToRelative(-90.0f, -120.0f) + lineToRelative(-120.0f, 160.0f) + close() + moveTo(200.0f, 880.0f) + quadToRelative(-33.0f, 0.0f, -56.5f, -23.5f) + reflectiveQuadTo(120.0f, 800.0f) + verticalLineToRelative(-320.0f) + horizontalLineToRelative(80.0f) + verticalLineToRelative(320.0f) + horizontalLineToRelative(560.0f) + verticalLineToRelative(-320.0f) + horizontalLineToRelative(80.0f) + verticalLineToRelative(320.0f) + quadToRelative(0.0f, 33.0f, -23.5f, 56.5f) + reflectiveQuadTo(760.0f, 880.0f) + lineTo(200.0f, 880.0f) + close() + } + }.build() +} \ No newline at end of file diff --git a/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/widget/dialogs/ResetDialog.kt b/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/widget/dialogs/ResetDialog.kt index 571dd1102b..b11ce45a16 100644 --- a/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/widget/dialogs/ResetDialog.kt +++ b/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/widget/dialogs/ResetDialog.kt @@ -19,7 +19,6 @@ package ru.tech.imageresizershrinker.core.ui.widget.dialogs import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.DoneOutline -import androidx.compose.material.icons.rounded.RestartAlt import androidx.compose.material3.AlertDialog import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -27,10 +26,12 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import kotlinx.coroutines.launch import ru.tech.imageresizershrinker.core.resources.R +import ru.tech.imageresizershrinker.core.ui.icons.material.ImageReset import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHostState @@ -41,7 +42,8 @@ fun ResetDialog( onDismiss: () -> Unit, onReset: () -> Unit, title: String = stringResource(R.string.reset_image), - text: String = stringResource(R.string.reset_image_sub) + text: String = stringResource(R.string.reset_image_sub), + icon: ImageVector = Icons.Rounded.ImageReset ) { val scope = rememberCoroutineScope() val context = LocalContext.current @@ -50,7 +52,12 @@ fun ResetDialog( if (visible) { AlertDialog( modifier = Modifier.alertDialogBorder(), - icon = { Icon(Icons.Rounded.RestartAlt, null) }, + icon = { + Icon( + imageVector = icon, + contentDescription = title + ) + }, title = { Text(title) }, text = { Text(text) }, onDismissRequest = onDismiss, diff --git a/feature/main/src/main/java/ru/tech/imageresizershrinker/feature/main/presentation/components/settings/ImagePickerModeSettingItemGroup.kt b/feature/main/src/main/java/ru/tech/imageresizershrinker/feature/main/presentation/components/settings/ImagePickerModeSettingItemGroup.kt index 94cc40014b..24f40240d4 100644 --- a/feature/main/src/main/java/ru/tech/imageresizershrinker/feature/main/presentation/components/settings/ImagePickerModeSettingItemGroup.kt +++ b/feature/main/src/main/java/ru/tech/imageresizershrinker/feature/main/presentation/components/settings/ImagePickerModeSettingItemGroup.kt @@ -25,10 +25,10 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.BurstMode import androidx.compose.material.icons.outlined.CameraAlt import androidx.compose.material.icons.outlined.Image -import androidx.compose.material.icons.outlined.TaskAlt +import androidx.compose.material.icons.outlined.Wallpaper +import androidx.compose.material.icons.outlined.WebStories import androidx.compose.material.icons.rounded.FolderOpen import androidx.compose.material.icons.rounded.RadioButtonChecked import androidx.compose.material.icons.rounded.RadioButtonUnchecked @@ -55,7 +55,7 @@ fun ImagePickerModeSettingItemGroup( shape = ContainerShapeDefaults.topShape, onClick = { updateImagePickerMode(0) }, title = stringResource(R.string.embedded_picker), - startIcon = Icons.Outlined.TaskAlt, + startIcon = Icons.Outlined.Wallpaper, subtitle = stringResource(R.string.embedded_picker_sub), color = takeColorFromScheme { if (settingsState.imagePickerModeInt == 0) secondaryContainer.copy(0.7f) @@ -82,7 +82,7 @@ fun ImagePickerModeSettingItemGroup( shape = ContainerShapeDefaults.centerShape, onClick = { updateImagePickerMode(1) }, title = stringResource(R.string.photo_picker), - startIcon = Icons.Outlined.BurstMode, + startIcon = Icons.Outlined.WebStories, subtitle = stringResource(R.string.photo_picker_sub), color = takeColorFromScheme { if (settingsState.imagePickerModeInt == 1) secondaryContainer.copy(0.7f) diff --git a/feature/main/src/main/java/ru/tech/imageresizershrinker/feature/main/presentation/components/settings/ResetSettingsSettingItem.kt b/feature/main/src/main/java/ru/tech/imageresizershrinker/feature/main/presentation/components/settings/ResetSettingsSettingItem.kt index 87ada86f3f..b663dc6969 100644 --- a/feature/main/src/main/java/ru/tech/imageresizershrinker/feature/main/presentation/components/settings/ResetSettingsSettingItem.kt +++ b/feature/main/src/main/java/ru/tech/imageresizershrinker/feature/main/presentation/components/settings/ResetSettingsSettingItem.kt @@ -65,6 +65,7 @@ fun ResetSettingsSettingItem( onReset() }, title = stringResource(R.string.reset), - text = stringResource(R.string.reset_settings_sub) + text = stringResource(R.string.reset_settings_sub), + icon = Icons.Rounded.RestartAlt ) } \ No newline at end of file diff --git a/feature/resize-convert/src/main/java/ru/tech/imageresizershrinker/feature/resize_convert/presentation/ResizeAndConvertScreen.kt b/feature/resize-convert/src/main/java/ru/tech/imageresizershrinker/feature/resize_convert/presentation/ResizeAndConvertScreen.kt index f2c37f8877..62b707237d 100644 --- a/feature/resize-convert/src/main/java/ru/tech/imageresizershrinker/feature/resize_convert/presentation/ResizeAndConvertScreen.kt +++ b/feature/resize-convert/src/main/java/ru/tech/imageresizershrinker/feature/resize_convert/presentation/ResizeAndConvertScreen.kt @@ -32,7 +32,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.History -import androidx.compose.material.icons.rounded.RestartAlt import androidx.compose.material3.Icon import androidx.compose.material3.LocalContentColor import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass @@ -54,6 +53,7 @@ import dev.olshevski.navigation.reimagined.hilt.hiltViewModel import kotlinx.coroutines.launch import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.settings.presentation.LocalSettingsState +import ru.tech.imageresizershrinker.core.ui.icons.material.ImageReset import ru.tech.imageresizershrinker.core.ui.utils.confetti.LocalConfettiHostState import ru.tech.imageresizershrinker.core.ui.utils.helper.Picker import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip @@ -227,7 +227,7 @@ fun ResizeAndConvertScreen( onClick = { showResetDialog = true } ) { Icon( - imageVector = Icons.Rounded.RestartAlt, + imageVector = Icons.Rounded.ImageReset, contentDescription = null ) } diff --git a/feature/single-edit/src/main/java/ru/tech/imageresizershrinker/feature/single_edit/presentation/SingeEditScreen.kt b/feature/single-edit/src/main/java/ru/tech/imageresizershrinker/feature/single_edit/presentation/SingeEditScreen.kt index 519e5c7622..8edfccd732 100644 --- a/feature/single-edit/src/main/java/ru/tech/imageresizershrinker/feature/single_edit/presentation/SingeEditScreen.kt +++ b/feature/single-edit/src/main/java/ru/tech/imageresizershrinker/feature/single_edit/presentation/SingeEditScreen.kt @@ -25,7 +25,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.History -import androidx.compose.material.icons.rounded.RestartAlt import androidx.compose.material3.Icon import androidx.compose.material3.LocalContentColor import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass @@ -47,6 +46,7 @@ import dev.olshevski.navigation.reimagined.hilt.hiltViewModel import kotlinx.coroutines.launch import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.settings.presentation.LocalSettingsState +import ru.tech.imageresizershrinker.core.ui.icons.material.ImageReset import ru.tech.imageresizershrinker.core.ui.utils.confetti.LocalConfettiHostState import ru.tech.imageresizershrinker.core.ui.utils.helper.Picker import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip @@ -246,7 +246,7 @@ fun SingleEditScreen( onClick = { showResetDialog = true } ) { Icon( - imageVector = Icons.Rounded.RestartAlt, + imageVector = Icons.Rounded.ImageReset, contentDescription = null ) } @@ -264,7 +264,12 @@ fun SingleEditScreen( enableAutoShadowAndBorder = false, enabled = false, onClick = {} - ) { Icon(Icons.Rounded.History, null) } + ) { + Icon( + imageVector = Icons.Rounded.History, + contentDescription = null + ) + } } }, imagePreview = {