code refactor

This commit is contained in:
T8RIN
2025-02-19 19:46:50 +03:00
parent 6979ff52c2
commit 4ab116511c
2 changed files with 52 additions and 88 deletions

View File

@ -87,7 +87,7 @@ sealed class Screen(
@Serializable @Serializable
data class SingleEdit( data class SingleEdit(
val uri: KUri? = null val uri: Uri? = null
) : Screen( ) : Screen(
id = 0, id = 0,
title = R.string.single_edit, title = R.string.single_edit,
@ -96,7 +96,7 @@ sealed class Screen(
@Serializable @Serializable
data class ResizeAndConvert( data class ResizeAndConvert(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 1, id = 1,
title = R.string.resize_and_convert, title = R.string.resize_and_convert,
@ -105,7 +105,7 @@ sealed class Screen(
@Serializable @Serializable
data class WeightResize( data class WeightResize(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 2, id = 2,
title = R.string.by_bytes_resize, title = R.string.by_bytes_resize,
@ -114,7 +114,7 @@ sealed class Screen(
@Serializable @Serializable
data class Crop( data class Crop(
val uri: KUri? = null val uri: Uri? = null
) : Screen( ) : Screen(
id = 3, id = 3,
title = R.string.crop, title = R.string.crop,
@ -143,7 +143,7 @@ sealed class Screen(
@Serializable @Serializable
data class Masking( data class Masking(
val uri: KUri? = null val uri: Uri? = null
) : Type( ) : Type(
title = R.string.mask_filter, title = R.string.mask_filter,
subtitle = R.string.mask_filter_sub subtitle = R.string.mask_filter_sub
@ -151,7 +151,7 @@ sealed class Screen(
@Serializable @Serializable
data class Basic( data class Basic(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Type( ) : Type(
title = R.string.full_filter, title = R.string.full_filter,
subtitle = R.string.full_filter_sub subtitle = R.string.full_filter_sub
@ -170,7 +170,7 @@ sealed class Screen(
@Serializable @Serializable
data class Draw( data class Draw(
val uri: KUri? = null val uri: Uri? = null
) : Screen( ) : Screen(
id = 5, id = 5,
title = R.string.draw, title = R.string.draw,
@ -179,7 +179,7 @@ sealed class Screen(
@Serializable @Serializable
data class Cipher( data class Cipher(
val uri: KUri? = null val uri: Uri? = null
) : Screen( ) : Screen(
id = 6, id = 6,
title = R.string.cipher, title = R.string.cipher,
@ -188,7 +188,7 @@ sealed class Screen(
@Serializable @Serializable
data class EraseBackground( data class EraseBackground(
val uri: KUri? = null val uri: Uri? = null
) : Screen( ) : Screen(
id = 7, id = 7,
title = R.string.background_remover, title = R.string.background_remover,
@ -197,7 +197,7 @@ sealed class Screen(
@Serializable @Serializable
data class ImagePreview( data class ImagePreview(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 8, id = 8,
title = R.string.image_preview, title = R.string.image_preview,
@ -206,7 +206,7 @@ sealed class Screen(
@Serializable @Serializable
data class ImageStitching( data class ImageStitching(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 9, id = 9,
title = R.string.image_stitching, title = R.string.image_stitching,
@ -224,7 +224,7 @@ sealed class Screen(
@Serializable @Serializable
data class PickColorFromImage( data class PickColorFromImage(
val uri: KUri? = null val uri: Uri? = null
) : Screen( ) : Screen(
id = 11, id = 11,
title = R.string.pick_color, title = R.string.pick_color,
@ -233,7 +233,7 @@ sealed class Screen(
@Serializable @Serializable
data class GeneratePalette( data class GeneratePalette(
val uri: KUri? = null val uri: Uri? = null
) : Screen( ) : Screen(
id = 12, id = 12,
title = R.string.generate_palette, title = R.string.generate_palette,
@ -242,7 +242,7 @@ sealed class Screen(
@Serializable @Serializable
data class DeleteExif( data class DeleteExif(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 13, id = 13,
title = R.string.delete_exif, title = R.string.delete_exif,
@ -251,7 +251,7 @@ sealed class Screen(
@Serializable @Serializable
data class Compare( data class Compare(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 14, id = 14,
title = R.string.compare, title = R.string.compare,
@ -260,7 +260,7 @@ sealed class Screen(
@Serializable @Serializable
data class LimitResize( data class LimitResize(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 15, id = 15,
title = R.string.limits_resize, title = R.string.limits_resize,
@ -290,7 +290,7 @@ sealed class Screen(
@Serializable @Serializable
data class Preview( data class Preview(
val pdfUri: KUri? = null val pdfUri: Uri? = null
) : Type( ) : Type(
title = R.string.preview_pdf, title = R.string.preview_pdf,
subtitle = R.string.preview_pdf_sub subtitle = R.string.preview_pdf_sub
@ -298,7 +298,7 @@ sealed class Screen(
@Serializable @Serializable
data class PdfToImages( data class PdfToImages(
val pdfUri: KUri? = null val pdfUri: Uri? = null
) : Type( ) : Type(
title = R.string.pdf_to_images, title = R.string.pdf_to_images,
subtitle = R.string.pdf_to_images_sub subtitle = R.string.pdf_to_images_sub
@ -306,7 +306,7 @@ sealed class Screen(
@Serializable @Serializable
data class ImagesToPdf( data class ImagesToPdf(
val imageUris: List<KUri>? = null val imageUris: List<Uri>? = null
) : Type( ) : Type(
title = R.string.images_to_pdf, title = R.string.images_to_pdf,
subtitle = R.string.images_to_pdf_sub subtitle = R.string.images_to_pdf_sub
@ -326,7 +326,7 @@ sealed class Screen(
@Serializable @Serializable
data class RecognizeText( data class RecognizeText(
val uri: KUri? = null val uri: Uri? = null
) : Screen( ) : Screen(
id = 17, id = 17,
title = R.string.recognize_text, title = R.string.recognize_text,
@ -335,7 +335,7 @@ sealed class Screen(
@Serializable @Serializable
data class GradientMaker( data class GradientMaker(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 18, id = 18,
title = R.string.gradient_maker, title = R.string.gradient_maker,
@ -344,7 +344,7 @@ sealed class Screen(
@Serializable @Serializable
data class Watermarking( data class Watermarking(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 19, id = 19,
title = R.string.watermarking, title = R.string.watermarking,
@ -375,7 +375,7 @@ sealed class Screen(
@Serializable @Serializable
data class GifToImage( data class GifToImage(
val gifUri: KUri? = null val gifUri: Uri? = null
) : Type( ) : Type(
title = R.string.gif_type_to_image, title = R.string.gif_type_to_image,
subtitle = R.string.gif_type_to_image_sub subtitle = R.string.gif_type_to_image_sub
@ -383,7 +383,7 @@ sealed class Screen(
@Serializable @Serializable
data class ImageToGif( data class ImageToGif(
val imageUris: List<KUri>? = null val imageUris: List<Uri>? = null
) : Type( ) : Type(
title = R.string.gif_type_to_gif, title = R.string.gif_type_to_gif,
subtitle = R.string.gif_type_to_gif_sub subtitle = R.string.gif_type_to_gif_sub
@ -391,7 +391,7 @@ sealed class Screen(
@Serializable @Serializable
data class GifToJxl( data class GifToJxl(
val gifUris: List<KUri>? = null val gifUris: List<Uri>? = null
) : Type( ) : Type(
title = R.string.gif_type_to_jxl, title = R.string.gif_type_to_jxl,
subtitle = R.string.gif_type_to_jxl_sub subtitle = R.string.gif_type_to_jxl_sub
@ -399,7 +399,7 @@ sealed class Screen(
@Serializable @Serializable
data class GifToWebp( data class GifToWebp(
val gifUris: List<KUri>? = null val gifUris: List<Uri>? = null
) : Type( ) : Type(
title = R.string.gif_type_to_webp, title = R.string.gif_type_to_webp,
subtitle = R.string.gif_type_to_webp_sub subtitle = R.string.gif_type_to_webp_sub
@ -441,7 +441,7 @@ sealed class Screen(
@Serializable @Serializable
data class ApngToImage( data class ApngToImage(
val apngUri: KUri? = null val apngUri: Uri? = null
) : Type( ) : Type(
title = R.string.apng_type_to_image, title = R.string.apng_type_to_image,
subtitle = R.string.apng_type_to_image_sub subtitle = R.string.apng_type_to_image_sub
@ -449,7 +449,7 @@ sealed class Screen(
@Serializable @Serializable
data class ImageToApng( data class ImageToApng(
val imageUris: List<KUri>? = null val imageUris: List<Uri>? = null
) : Type( ) : Type(
title = R.string.apng_type_to_apng, title = R.string.apng_type_to_apng,
subtitle = R.string.apng_type_to_apng_sub subtitle = R.string.apng_type_to_apng_sub
@ -457,7 +457,7 @@ sealed class Screen(
@Serializable @Serializable
data class ApngToJxl( data class ApngToJxl(
val apngUris: List<KUri>? = null val apngUris: List<Uri>? = null
) : Type( ) : Type(
title = R.string.apng_type_to_jxl, title = R.string.apng_type_to_jxl,
subtitle = R.string.apng_type_to_jxl_sub subtitle = R.string.apng_type_to_jxl_sub
@ -477,7 +477,7 @@ sealed class Screen(
@Serializable @Serializable
data class Zip( data class Zip(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 22, id = 22,
title = R.string.zip, title = R.string.zip,
@ -508,7 +508,7 @@ sealed class Screen(
@Serializable @Serializable
data class JxlToJpeg( data class JxlToJpeg(
val jxlImageUris: List<KUri>? = null val jxlImageUris: List<Uri>? = null
) : Type( ) : Type(
title = R.string.jxl_type_to_jpeg, title = R.string.jxl_type_to_jpeg,
subtitle = R.string.jxl_type_to_jpeg_sub subtitle = R.string.jxl_type_to_jpeg_sub
@ -516,7 +516,7 @@ sealed class Screen(
@Serializable @Serializable
data class JpegToJxl( data class JpegToJxl(
val jpegImageUris: List<KUri>? = null val jpegImageUris: List<Uri>? = null
) : Type( ) : Type(
title = R.string.jpeg_type_to_jxl, title = R.string.jpeg_type_to_jxl,
subtitle = R.string.jpeg_type_to_jxl_sub subtitle = R.string.jpeg_type_to_jxl_sub
@ -524,7 +524,7 @@ sealed class Screen(
@Serializable @Serializable
data class JxlToImage( data class JxlToImage(
val jxlUri: KUri? = null val jxlUri: Uri? = null
) : Type( ) : Type(
title = R.string.jxl_type_to_images, title = R.string.jxl_type_to_images,
subtitle = R.string.jxl_type_to_images_sub subtitle = R.string.jxl_type_to_images_sub
@ -532,7 +532,7 @@ sealed class Screen(
@Serializable @Serializable
data class ImageToJxl( data class ImageToJxl(
val imageUris: List<KUri>? = null val imageUris: List<Uri>? = null
) : Type( ) : Type(
title = R.string.jxl_type_to_jxl, title = R.string.jxl_type_to_jxl,
subtitle = R.string.jxl_type_to_jxl_sub subtitle = R.string.jxl_type_to_jxl_sub
@ -553,7 +553,7 @@ sealed class Screen(
@Serializable @Serializable
data class SvgMaker( data class SvgMaker(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 24, id = 24,
title = R.string.images_to_svg, title = R.string.images_to_svg,
@ -562,7 +562,7 @@ sealed class Screen(
@Serializable @Serializable
data class FormatConversion( data class FormatConversion(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 25, id = 25,
title = R.string.format_conversion, title = R.string.format_conversion,
@ -587,7 +587,7 @@ sealed class Screen(
@Serializable @Serializable
data class ImageStacking( data class ImageStacking(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 28, id = 28,
title = R.string.image_stacking, title = R.string.image_stacking,
@ -596,7 +596,7 @@ sealed class Screen(
@Serializable @Serializable
data class ImageSplitting( data class ImageSplitting(
val uri: KUri? = null val uri: Uri? = null
) : Screen( ) : Screen(
id = 29, id = 29,
title = R.string.image_splitting, title = R.string.image_splitting,
@ -632,7 +632,7 @@ sealed class Screen(
@Serializable @Serializable
data class WebpToImage( data class WebpToImage(
val webpUri: KUri? = null val webpUri: Uri? = null
) : Type( ) : Type(
title = R.string.webp_type_to_image, title = R.string.webp_type_to_image,
subtitle = R.string.webp_type_to_image_sub subtitle = R.string.webp_type_to_image_sub
@ -640,7 +640,7 @@ sealed class Screen(
@Serializable @Serializable
data class ImageToWebp( data class ImageToWebp(
val imageUris: List<KUri>? = null val imageUris: List<Uri>? = null
) : Type( ) : Type(
title = R.string.webp_type_to_webp, title = R.string.webp_type_to_webp,
subtitle = R.string.webp_type_to_webp_sub subtitle = R.string.webp_type_to_webp_sub
@ -666,7 +666,7 @@ sealed class Screen(
@Serializable @Serializable
data class CollageMaker( data class CollageMaker(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 33, id = 33,
title = R.string.collage_maker, title = R.string.collage_maker,
@ -675,7 +675,7 @@ sealed class Screen(
@Serializable @Serializable
data class MarkupLayers( data class MarkupLayers(
val uri: KUri? = null val uri: Uri? = null
) : Screen( ) : Screen(
id = 34, id = 34,
title = R.string.markup_layers, title = R.string.markup_layers,
@ -684,7 +684,7 @@ sealed class Screen(
@Serializable @Serializable
data class Base64Tools( data class Base64Tools(
val uri: KUri? = null val uri: Uri? = null
) : Screen( ) : Screen(
id = 35, id = 35,
title = R.string.base_64_tools, title = R.string.base_64_tools,
@ -693,7 +693,7 @@ sealed class Screen(
@Serializable @Serializable
data class ChecksumTools( data class ChecksumTools(
val uri: KUri? = null, val uri: Uri? = null,
) : Screen( ) : Screen(
id = 36, id = 36,
title = R.string.checksum_tools, title = R.string.checksum_tools,
@ -709,7 +709,7 @@ sealed class Screen(
@Serializable @Serializable
data class EditExif( data class EditExif(
val uri: KUri? = null, val uri: Uri? = null,
) : Screen( ) : Screen(
id = 37, id = 37,
title = R.string.edit_exif_screen, title = R.string.edit_exif_screen,
@ -718,7 +718,7 @@ sealed class Screen(
@Serializable @Serializable
data class ImageCutter( data class ImageCutter(
val uris: List<KUri>? = null val uris: List<Uri>? = null
) : Screen( ) : Screen(
id = 38, id = 38,
title = R.string.image_cutting, title = R.string.image_cutting,

View File

@ -17,7 +17,6 @@
package ru.tech.imageresizershrinker.core.ui.utils.navigation package ru.tech.imageresizershrinker.core.ui.utils.navigation
import android.net.Uri
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.BrandingWatermark import androidx.compose.material.icons.automirrored.outlined.BrandingWatermark
import androidx.compose.material.icons.filled.AutoAwesome import androidx.compose.material.icons.filled.AutoAwesome
@ -72,43 +71,8 @@ import ru.tech.imageresizershrinker.core.resources.icons.Stack
import ru.tech.imageresizershrinker.core.resources.icons.Toolbox import ru.tech.imageresizershrinker.core.resources.icons.Toolbox
import ru.tech.imageresizershrinker.core.resources.icons.VectorPolyline import ru.tech.imageresizershrinker.core.resources.icons.VectorPolyline
import ru.tech.imageresizershrinker.core.resources.icons.WebpBox import ru.tech.imageresizershrinker.core.resources.icons.WebpBox
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.ApngTools import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.*
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.Base64Tools import android.net.Uri as AndroidUri
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.ChecksumTools
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.Cipher
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.CollageMaker
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.ColorTools
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.Crop
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.DeleteExif
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.Draw
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.EditExif
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.EraseBackground
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.Filter
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.FormatConversion
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.GeneratePalette
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.GifTools
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.GradientMaker
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.ImageCutter
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.ImagePreview
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.ImageSplitting
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.ImageStacking
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.ImageStitching
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.JxlTools
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.LimitResize
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.LoadNetImage
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.MarkupLayers
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.NoiseGeneration
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.PdfTools
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.PickColorFromImage
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.RecognizeText
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.ResizeAndConvert
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.ScanQrCode
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.SingleEdit
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.SvgMaker
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.Watermarking
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.WebpTools
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.WeightResize
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen.Zip
internal fun Screen.isBetaFeature(): Boolean = when (this) { internal fun Screen.isBetaFeature(): Boolean = when (this) {
is MarkupLayers -> true is MarkupLayers -> true
@ -210,20 +174,20 @@ internal fun Screen.icon(): ImageVector? = when (this) {
is ImageCutter -> Icons.Rounded.ContentCut is ImageCutter -> Icons.Rounded.ContentCut
} }
internal object UriSerializer : KSerializer<Uri> { internal object UriSerializer : KSerializer<AndroidUri> {
override val descriptor = PrimitiveSerialDescriptor("Uri", PrimitiveKind.STRING) override val descriptor = PrimitiveSerialDescriptor("Uri", PrimitiveKind.STRING)
override fun deserialize( override fun deserialize(
decoder: Decoder decoder: Decoder
): Uri = Uri.parse(decoder.decodeString()) ): AndroidUri = AndroidUri.parse(decoder.decodeString())
override fun serialize( override fun serialize(
encoder: Encoder, encoder: Encoder,
value: Uri value: AndroidUri
) = encoder.encodeString(value.toString()) ) = encoder.encodeString(value.toString())
} }
internal typealias KUri = @Serializable(UriSerializer::class) Uri internal typealias Uri = @Serializable(UriSerializer::class) AndroidUri
internal interface ScreenConstants { internal interface ScreenConstants {
val typedEntries: List<ScreenGroup> val typedEntries: List<ScreenGroup>