mirror of
https://github.com/T8RIN/ImageToolbox.git
synced 2025-05-17 21:45:59 +08:00
more modularization
This commit is contained in:
@ -135,7 +135,7 @@ dependencies {
|
||||
implementation(projects.core.filters)
|
||||
implementation(projects.core.crash)
|
||||
|
||||
implementation(projects.feature.main)
|
||||
implementation(projects.feature.root)
|
||||
implementation(projects.feature.mediaPicker)
|
||||
implementation(projects.feature.quickTiles)
|
||||
}
|
||||
|
@ -18,26 +18,20 @@
|
||||
package ru.tech.imageresizershrinker.app.presentation
|
||||
|
||||
import android.content.Intent
|
||||
import android.graphics.Bitmap
|
||||
import android.os.Bundle
|
||||
import androidx.activity.viewModels
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import dev.olshevski.navigation.reimagined.navigate
|
||||
import ru.tech.imageresizershrinker.app.presentation.components.AppContent
|
||||
import ru.tech.imageresizershrinker.core.crash.components.M3Activity
|
||||
import ru.tech.imageresizershrinker.core.filters.domain.FavoriteFiltersInteractor
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.parseImageFromIntent
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.utils.setContentWithWindowSizeClass
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.viewModel.MainViewModel
|
||||
import javax.inject.Inject
|
||||
import ru.tech.imageresizershrinker.feature.root.presentation.RootContent
|
||||
import ru.tech.imageresizershrinker.feature.root.presentation.viewModel.RootViewModel
|
||||
|
||||
@AndroidEntryPoint
|
||||
class AppActivity : M3Activity() {
|
||||
|
||||
private val viewModel by viewModels<MainViewModel>()
|
||||
|
||||
@Inject
|
||||
lateinit var favoriteFiltersInteractor: FavoriteFiltersInteractor<Bitmap>
|
||||
private val viewModel by viewModels<RootViewModel>()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@ -45,7 +39,7 @@ class AppActivity : M3Activity() {
|
||||
parseImage(intent)
|
||||
|
||||
setContentWithWindowSizeClass {
|
||||
AppContent(viewModel = viewModel)
|
||||
RootContent(viewModel = viewModel)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,7 @@ class ImageToolboxLibraryFeaturePlugin : Plugin<Project> {
|
||||
"implementation"(project(":core:resources"))
|
||||
"implementation"(project(":core:settings"))
|
||||
"implementation"(project(":core:di"))
|
||||
"implementation"(project(":core:crash"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
@file:Suppress("ConstPropertyName")
|
||||
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation.components
|
||||
package ru.tech.imageresizershrinker.core.ui.widget.other
|
||||
|
||||
import androidx.compose.animation.animateColorAsState
|
||||
import androidx.compose.animation.core.animateFloatAsState
|
1
feature/easter-egg/.gitignore
vendored
Normal file
1
feature/easter-egg/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/build
|
24
feature/easter-egg/build.gradle.kts
Normal file
24
feature/easter-egg/build.gradle.kts
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* 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 <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||
*/
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.image.toolbox.library)
|
||||
alias(libs.plugins.image.toolbox.feature)
|
||||
alias(libs.plugins.image.toolbox.compose)
|
||||
}
|
||||
|
||||
android.namespace = "ru.tech.imageresizershrinker.feature.easter_egg"
|
4
feature/easter-egg/src/main/AndroidManifest.xml
Normal file
4
feature/easter-egg/src/main/AndroidManifest.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest>
|
||||
|
||||
</manifest>
|
@ -17,7 +17,7 @@
|
||||
|
||||
@file:Suppress("KotlinConstantConditions")
|
||||
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation.components
|
||||
package ru.tech.imageresizershrinker.feature.easter_egg.presentation
|
||||
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.compose.animation.core.animateFloatAsState
|
@ -25,29 +25,5 @@ plugins {
|
||||
android.namespace = "ru.tech.imageresizershrinker.feature.main"
|
||||
|
||||
dependencies {
|
||||
implementation(projects.feature.loadNetImage)
|
||||
implementation(projects.feature.crop)
|
||||
implementation(projects.feature.limitsResize)
|
||||
implementation(projects.feature.cipher)
|
||||
implementation(projects.feature.imagePreview)
|
||||
implementation(projects.feature.bytesResize)
|
||||
implementation(projects.feature.compare)
|
||||
implementation(projects.feature.deleteExif)
|
||||
implementation(projects.feature.generatePalette)
|
||||
implementation(projects.feature.resizeConvert)
|
||||
implementation(projects.feature.pdfTools)
|
||||
implementation(projects.feature.singleEdit)
|
||||
implementation(projects.feature.eraseBackground)
|
||||
implementation(projects.feature.draw)
|
||||
implementation(projects.feature.filters)
|
||||
implementation(projects.feature.imageStitch)
|
||||
implementation(projects.feature.pickColor)
|
||||
implementation(projects.feature.recognizeText)
|
||||
implementation(projects.feature.gradientMaker)
|
||||
implementation(projects.feature.watermarking)
|
||||
implementation(projects.feature.gifTools)
|
||||
implementation(projects.feature.apngTools)
|
||||
implementation(projects.feature.zip)
|
||||
implementation(projects.feature.jxlTools)
|
||||
implementation(projects.feature.settings)
|
||||
}
|
@ -17,6 +17,7 @@
|
||||
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation
|
||||
|
||||
import android.net.Uri
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.animation.core.tween
|
||||
import androidx.compose.animation.fadeIn
|
||||
@ -71,13 +72,24 @@ import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHostState
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalWindowSizeClass
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.components.MainScreenContent
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.components.MainScreenDrawerContent
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.viewModel.MainViewModel
|
||||
import ru.tech.imageresizershrinker.feature.settings.presentation.SettingsScreen
|
||||
|
||||
@Composable
|
||||
fun MainScreen(
|
||||
viewModel: MainViewModel
|
||||
onTryGetUpdate: (
|
||||
newRequest: Boolean,
|
||||
installedFromMarket: Boolean,
|
||||
onNoUpdates: () -> Unit
|
||||
) -> Unit,
|
||||
updateAvailable: Boolean,
|
||||
updateUris: (List<Uri>) -> Unit
|
||||
) {
|
||||
fun tryGetUpdate(
|
||||
newRequest: Boolean,
|
||||
installedFromMarket: Boolean,
|
||||
onNoUpdates: () -> Unit
|
||||
) = onTryGetUpdate(newRequest, installedFromMarket, onNoUpdates)
|
||||
|
||||
val settingsState = LocalSettingsState.current
|
||||
val isGrid = LocalWindowSizeClass.current.widthSizeClass != WindowWidthSizeClass.Compact
|
||||
|
||||
@ -98,8 +110,8 @@ fun MainScreen(
|
||||
settingsBlockContent = { settingsSearchKeyword ->
|
||||
SettingsScreen(
|
||||
searchKeyword = settingsSearchKeyword,
|
||||
onTryGetUpdate = viewModel::tryGetUpdate,
|
||||
updateAvailable = viewModel.updateAvailable
|
||||
onTryGetUpdate = ::tryGetUpdate,
|
||||
updateAvailable = updateAvailable
|
||||
)
|
||||
}
|
||||
)
|
||||
@ -121,9 +133,9 @@ fun MainScreen(
|
||||
onShowSnowfall = {
|
||||
showSnowfall = true
|
||||
},
|
||||
onGetClipList = viewModel::updateUris,
|
||||
onGetClipList = updateUris,
|
||||
onTryGetUpdate = {
|
||||
viewModel.tryGetUpdate(
|
||||
tryGetUpdate(
|
||||
newRequest = true,
|
||||
installedFromMarket = context.isInstalledFromPlayStore(),
|
||||
onNoUpdates = {
|
||||
@ -136,7 +148,7 @@ fun MainScreen(
|
||||
}
|
||||
)
|
||||
},
|
||||
updateAvailable = viewModel.updateAvailable
|
||||
updateAvailable = updateAvailable
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -148,6 +148,7 @@ import ru.tech.imageresizershrinker.core.ui.widget.other.BoxAnimatedVisibility
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.EnhancedTopAppBar
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.EnhancedTopAppBarType
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHostState
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.NavigationItem
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.TopAppBarEmoji
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItemOverload
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.text.Marquee
|
||||
|
1
feature/root/.gitignore
vendored
Normal file
1
feature/root/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/build
|
55
feature/root/build.gradle.kts
Normal file
55
feature/root/build.gradle.kts
Normal file
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* 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 <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||
*/
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.image.toolbox.library)
|
||||
alias(libs.plugins.image.toolbox.feature)
|
||||
alias(libs.plugins.image.toolbox.hilt)
|
||||
alias(libs.plugins.image.toolbox.compose)
|
||||
}
|
||||
|
||||
android.namespace = "ru.tech.imageresizershrinker.feature.root"
|
||||
|
||||
dependencies {
|
||||
implementation(projects.feature.main)
|
||||
implementation(projects.feature.loadNetImage)
|
||||
implementation(projects.feature.crop)
|
||||
implementation(projects.feature.limitsResize)
|
||||
implementation(projects.feature.cipher)
|
||||
implementation(projects.feature.imagePreview)
|
||||
implementation(projects.feature.bytesResize)
|
||||
implementation(projects.feature.compare)
|
||||
implementation(projects.feature.deleteExif)
|
||||
implementation(projects.feature.generatePalette)
|
||||
implementation(projects.feature.resizeConvert)
|
||||
implementation(projects.feature.pdfTools)
|
||||
implementation(projects.feature.singleEdit)
|
||||
implementation(projects.feature.eraseBackground)
|
||||
implementation(projects.feature.draw)
|
||||
implementation(projects.feature.filters)
|
||||
implementation(projects.feature.imageStitch)
|
||||
implementation(projects.feature.pickColor)
|
||||
implementation(projects.feature.recognizeText)
|
||||
implementation(projects.feature.gradientMaker)
|
||||
implementation(projects.feature.watermarking)
|
||||
implementation(projects.feature.gifTools)
|
||||
implementation(projects.feature.apngTools)
|
||||
implementation(projects.feature.zip)
|
||||
implementation(projects.feature.jxlTools)
|
||||
implementation(projects.feature.settings)
|
||||
implementation(projects.feature.easterEgg)
|
||||
}
|
4
feature/root/src/main/AndroidManifest.xml
Normal file
4
feature/root/src/main/AndroidManifest.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest>
|
||||
|
||||
</manifest>
|
@ -15,12 +15,13 @@
|
||||
* along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||
*/
|
||||
|
||||
package ru.tech.imageresizershrinker.app.presentation.components
|
||||
package ru.tech.imageresizershrinker.feature.root.presentation
|
||||
|
||||
import android.content.ClipData
|
||||
import android.content.res.Configuration
|
||||
import android.os.Build
|
||||
import android.view.WindowManager
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.material3.Surface
|
||||
@ -45,7 +46,6 @@ import com.google.accompanist.systemuicontroller.rememberSystemUiController
|
||||
import dev.olshevski.navigation.reimagined.NavAction
|
||||
import dev.olshevski.navigation.reimagined.navigate
|
||||
import kotlinx.coroutines.delay
|
||||
import ru.tech.imageresizershrinker.app.presentation.AppActivity
|
||||
import ru.tech.imageresizershrinker.core.crash.components.GlobalExceptionHandler
|
||||
import ru.tech.imageresizershrinker.core.filters.presentation.utils.LocalFavoriteFiltersInteractor
|
||||
import ru.tech.imageresizershrinker.core.resources.emoji.Emoji
|
||||
@ -66,19 +66,19 @@ import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHostState
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.other.ToastHost
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.sheets.ProcessImagesPreferenceSheet
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.utils.LocalImageLoader
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.components.AppExitDialog
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.components.EditPresetsSheet
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.components.FirstLaunchSetupDialog
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.components.GithubReviewDialog
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.components.PermissionDialog
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.components.ScreenSelector
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.viewModel.MainViewModel
|
||||
import ru.tech.imageresizershrinker.feature.root.presentation.components.AppExitDialog
|
||||
import ru.tech.imageresizershrinker.feature.root.presentation.components.EditPresetsSheet
|
||||
import ru.tech.imageresizershrinker.feature.root.presentation.components.FirstLaunchSetupDialog
|
||||
import ru.tech.imageresizershrinker.feature.root.presentation.components.GithubReviewDialog
|
||||
import ru.tech.imageresizershrinker.feature.root.presentation.components.PermissionDialog
|
||||
import ru.tech.imageresizershrinker.feature.root.presentation.components.ScreenSelector
|
||||
import ru.tech.imageresizershrinker.feature.root.presentation.viewModel.RootViewModel
|
||||
|
||||
@Composable
|
||||
internal fun AppContent(
|
||||
viewModel: MainViewModel
|
||||
fun RootContent(
|
||||
viewModel: RootViewModel
|
||||
) {
|
||||
val context = LocalContext.current as AppActivity
|
||||
val context = LocalContext.current as ComponentActivity
|
||||
|
||||
var showExitDialog by rememberSaveable { mutableStateOf(false) }
|
||||
val editPresetsState = rememberSaveable { mutableStateOf(false) }
|
||||
@ -134,7 +134,7 @@ internal fun AppContent(
|
||||
LocalConfettiHostState provides rememberConfettiHostState(),
|
||||
LocalImageLoader provides viewModel.imageLoader,
|
||||
LocalHapticFeedback provides customHapticFeedback(viewModel.settingsState.hapticsStrength),
|
||||
LocalFavoriteFiltersInteractor provides context.favoriteFiltersInteractor
|
||||
LocalFavoriteFiltersInteractor provides viewModel.favoriteFiltersInteractor
|
||||
) {
|
||||
val showSelectSheet = rememberSaveable(viewModel.showSelectDialog) {
|
||||
mutableStateOf(viewModel.showSelectDialog)
|
@ -15,7 +15,7 @@
|
||||
* along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||
*/
|
||||
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation.components
|
||||
package ru.tech.imageresizershrinker.feature.root.presentation.components
|
||||
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.outlined.DoorBack
|
||||
@ -34,7 +34,7 @@ import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
|
||||
@Composable
|
||||
fun AppExitDialog(
|
||||
internal fun AppExitDialog(
|
||||
onDismiss: () -> Unit,
|
||||
visible: Boolean
|
||||
) {
|
@ -15,7 +15,7 @@
|
||||
* along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||
*/
|
||||
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation.components
|
||||
package ru.tech.imageresizershrinker.feature.root.presentation.components
|
||||
|
||||
import androidx.compose.animation.AnimatedContent
|
||||
import androidx.compose.animation.fadeIn
|
||||
@ -66,7 +66,7 @@ import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem
|
||||
|
||||
@OptIn(ExperimentalLayoutApi::class)
|
||||
@Composable
|
||||
fun EditPresetsSheet(
|
||||
internal fun EditPresetsSheet(
|
||||
editPresetsState: MutableState<Boolean>,
|
||||
updatePresets: (List<Int>) -> Unit
|
||||
) {
|
@ -15,7 +15,7 @@
|
||||
* along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||
*/
|
||||
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation.components
|
||||
package ru.tech.imageresizershrinker.feature.root.presentation.components
|
||||
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
@ -59,7 +59,7 @@ import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceRowSwit
|
||||
|
||||
@Suppress("KotlinConstantConditions")
|
||||
@Composable
|
||||
fun FirstLaunchSetupDialog(
|
||||
internal fun FirstLaunchSetupDialog(
|
||||
toggleAllowBetas: (Boolean) -> Unit,
|
||||
toggleShowUpdateDialog: () -> Unit
|
||||
) {
|
@ -15,7 +15,7 @@
|
||||
* along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||
*/
|
||||
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation.components
|
||||
package ru.tech.imageresizershrinker.feature.root.presentation.components
|
||||
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.rounded.StarRate
|
||||
@ -33,7 +33,7 @@ import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
|
||||
@Composable
|
||||
fun GithubReviewDialog(
|
||||
internal fun GithubReviewDialog(
|
||||
onDismiss: () -> Unit,
|
||||
showNotShowAgainButton: Boolean,
|
||||
onNotShowAgain: () -> Unit
|
@ -15,7 +15,7 @@
|
||||
* along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||
*/
|
||||
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation.components
|
||||
package ru.tech.imageresizershrinker.feature.root.presentation.components
|
||||
|
||||
import android.Manifest
|
||||
import android.app.Activity
|
||||
@ -48,7 +48,7 @@ import ru.tech.imageresizershrinker.core.ui.widget.buttons.EnhancedButton
|
||||
import ru.tech.imageresizershrinker.core.ui.widget.modifier.alertDialogBorder
|
||||
|
||||
@Composable
|
||||
fun PermissionDialog() {
|
||||
internal fun PermissionDialog() {
|
||||
val context = LocalContext.current as Activity
|
||||
val settingsState = LocalSettingsState.current
|
||||
|
@ -15,7 +15,7 @@
|
||||
* along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||
*/
|
||||
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation.components
|
||||
package ru.tech.imageresizershrinker.feature.root.presentation.components
|
||||
|
||||
import android.view.WindowManager
|
||||
import androidx.activity.ComponentActivity
|
||||
@ -27,7 +27,9 @@ import ru.tech.imageresizershrinker.core.settings.presentation.LocalSettingsStat
|
||||
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen
|
||||
|
||||
@Composable
|
||||
fun ScreenBasedMaxBrightnessEnforcement(screen: Screen?) {
|
||||
internal fun ScreenBasedMaxBrightnessEnforcement(
|
||||
screen: Screen?
|
||||
) {
|
||||
val context = LocalContext.current as ComponentActivity
|
||||
|
||||
val listToForceBrightness = LocalSettingsState.current.screenListWithMaxBrightnessEnforcement
|
@ -15,7 +15,7 @@
|
||||
* along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||
*/
|
||||
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation.components
|
||||
package ru.tech.imageresizershrinker.feature.root.presentation.components
|
||||
|
||||
import androidx.compose.animation.core.CubicBezierEasing
|
||||
import androidx.compose.animation.core.tween
|
||||
@ -46,6 +46,7 @@ import ru.tech.imageresizershrinker.feature.compare.presentation.CompareScreen
|
||||
import ru.tech.imageresizershrinker.feature.crop.presentation.CropScreen
|
||||
import ru.tech.imageresizershrinker.feature.delete_exif.presentation.DeleteExifScreen
|
||||
import ru.tech.imageresizershrinker.feature.draw.presentation.DrawScreen
|
||||
import ru.tech.imageresizershrinker.feature.easter_egg.presentation.EasterEggScreen
|
||||
import ru.tech.imageresizershrinker.feature.erase_background.presentation.EraseBackgroundScreen
|
||||
import ru.tech.imageresizershrinker.feature.filters.presentation.FiltersScreen
|
||||
import ru.tech.imageresizershrinker.feature.generate_palette.presentation.GeneratePaletteScreen
|
||||
@ -57,18 +58,18 @@ import ru.tech.imageresizershrinker.feature.jxl_tools.presentation.JxlToolsScree
|
||||
import ru.tech.imageresizershrinker.feature.limits_resize.presentation.LimitsResizeScreen
|
||||
import ru.tech.imageresizershrinker.feature.load_net_image.presentation.LoadNetImageScreen
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.MainScreen
|
||||
import ru.tech.imageresizershrinker.feature.main.presentation.viewModel.MainViewModel
|
||||
import ru.tech.imageresizershrinker.feature.pdf_tools.presentation.PdfToolsScreen
|
||||
import ru.tech.imageresizershrinker.feature.pick_color.presentation.PickColorFromImageScreen
|
||||
import ru.tech.imageresizershrinker.feature.recognize.text.presentation.RecognizeTextScreen
|
||||
import ru.tech.imageresizershrinker.feature.resize_convert.presentation.ResizeAndConvertScreen
|
||||
import ru.tech.imageresizershrinker.feature.root.presentation.viewModel.RootViewModel
|
||||
import ru.tech.imageresizershrinker.feature.single_edit.presentation.SingleEditScreen
|
||||
import ru.tech.imageresizershrinker.feature.watermarking.presentation.WatermarkingScreen
|
||||
import ru.tech.imageresizershrinker.feature.zip.presentation.ZipScreen
|
||||
|
||||
@Composable
|
||||
fun ScreenSelector(
|
||||
viewModel: MainViewModel
|
||||
internal fun ScreenSelector(
|
||||
viewModel: RootViewModel
|
||||
) {
|
||||
val scope = rememberCoroutineScope()
|
||||
val navController = viewModel.navController
|
||||
@ -125,7 +126,9 @@ fun ScreenSelector(
|
||||
|
||||
is Screen.Main -> {
|
||||
MainScreen(
|
||||
viewModel = viewModel
|
||||
onTryGetUpdate = viewModel::tryGetUpdate,
|
||||
updateAvailable = viewModel.updateAvailable,
|
||||
updateUris = viewModel::updateUris
|
||||
)
|
||||
}
|
||||
|
@ -15,9 +15,7 @@
|
||||
* along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
|
||||
*/
|
||||
|
||||
@file:Suppress("SameParameterValue", "unused")
|
||||
|
||||
package ru.tech.imageresizershrinker.feature.main.presentation.viewModel
|
||||
package ru.tech.imageresizershrinker.feature.root.presentation.viewModel
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import android.net.Uri
|
||||
@ -44,6 +42,7 @@ import ru.tech.imageresizershrinker.core.di.DefaultDispatcher
|
||||
import ru.tech.imageresizershrinker.core.domain.APP_RELEASES
|
||||
import ru.tech.imageresizershrinker.core.domain.image.ImageGetter
|
||||
import ru.tech.imageresizershrinker.core.domain.saving.FileController
|
||||
import ru.tech.imageresizershrinker.core.filters.domain.FavoriteFiltersInteractor
|
||||
import ru.tech.imageresizershrinker.core.resources.BuildConfig
|
||||
import ru.tech.imageresizershrinker.core.settings.domain.SettingsRepository
|
||||
import ru.tech.imageresizershrinker.core.settings.domain.model.SettingsState
|
||||
@ -55,8 +54,9 @@ import javax.inject.Inject
|
||||
import javax.xml.parsers.DocumentBuilderFactory
|
||||
|
||||
@HiltViewModel
|
||||
class MainViewModel @Inject constructor(
|
||||
class RootViewModel @Inject constructor(
|
||||
val imageLoader: ImageLoader,
|
||||
val favoriteFiltersInteractor: FavoriteFiltersInteractor<Bitmap>,
|
||||
private val imageGetter: ImageGetter<Bitmap, ExifInterface>,
|
||||
fileController: FileController,
|
||||
private val settingsRepository: SettingsRepository,
|
@ -69,6 +69,8 @@ include(":feature:jxl-tools")
|
||||
include(":feature:media-picker")
|
||||
include(":feature:quick-tiles")
|
||||
include(":feature:settings")
|
||||
include(":feature:easter-egg")
|
||||
include(":feature:root")
|
||||
|
||||
include(":core:settings")
|
||||
include(":core:resources")
|
||||
|
Reference in New Issue
Block a user