diff --git a/desktop/app-utils/build.gradle.kts b/desktop/app-utils/build.gradle.kts new file mode 100644 index 0000000..c439b14 --- /dev/null +++ b/desktop/app-utils/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + id(MyPlugins.kotlin) + id(MyPlugins.composeDesktop) +} +dependencies { + api(project(":desktop:custom-window-frame")) + api(project(":desktop:shared")) + api(project(":shared:app")) +} \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/CustomWindow.kt b/desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/custom/CustomWindow.kt similarity index 92% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/CustomWindow.kt rename to desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/custom/CustomWindow.kt index 8c70409..b299896 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/CustomWindow.kt +++ b/desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/custom/CustomWindow.kt @@ -1,21 +1,15 @@ -package com.abdownloadmanager.desktop.ui.customwindow +package com.abdownloadmanager.desktop.window.custom import ir.amirab.util.customwindow.ProvideWindowSpotContainer -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.utils.compose.WithContentColor +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.WithContentColor import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.utils.* import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.layout.* import androidx.compose.foundation.onClick import androidx.compose.foundation.window.WindowDraggableArea -import com.abdownloadmanager.desktop.ui.widget.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -25,21 +19,26 @@ import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.takeOrElse import androidx.compose.ui.input.key.KeyEvent -import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.platform.LocalWindowInfo import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.dp import androidx.compose.ui.window.FrameWindowScope import androidx.compose.ui.window.Window import androidx.compose.ui.window.WindowPlacement import androidx.compose.ui.window.WindowState -import com.abdownloadmanager.desktop.ui.util.ifThen +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.utils.PopUpContainer +import com.abdownloadmanager.shared.utils.ResponsiveBox +import com.abdownloadmanager.shared.utils.ui.WithTitleBarDirection +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.UiScaledContent +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes import ir.amirab.util.desktop.LocalWindow import ir.amirab.util.customwindow.HitSpots import ir.amirab.util.customwindow.util.CustomWindowDecorationAccessing import ir.amirab.util.customwindow.windowFrameItem +import ir.amirab.util.ifThen // a window frame which totally rendered with compose @@ -360,28 +359,6 @@ fun CustomWindow( } } -/** - * put this in every window because [Window] composable override [LocalDensity] - */ -@Composable -fun UiScaledContent( - defaultDensity: Density = LocalDensity.current, - uiScale: Float? = LocalUiScale.current, - content: @Composable () -> Unit, -) { - val density = remember(uiScale) { - if (uiScale == null) { - defaultDensity - } else { - Density(uiScale) - } - } - CompositionLocalProvider( - LocalDensity provides density, - content, - ) -} - @Composable private fun PreventMinimize() { val state = LocalWindowState.current diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/OptionsDialog.kt b/desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/custom/OptionsDialog.kt similarity index 91% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/OptionsDialog.kt rename to desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/custom/OptionsDialog.kt index 91b9914..c3403d7 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/OptionsDialog.kt +++ b/desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/custom/OptionsDialog.kt @@ -1,7 +1,8 @@ -package com.abdownloadmanager.desktop.ui.customwindow +package com.abdownloadmanager.desktop.window.custom import androidx.compose.runtime.* import androidx.compose.ui.window.* +import com.abdownloadmanager.shared.utils.ui.theme.UiScaledContent import java.awt.event.WindowEvent import java.awt.event.WindowFocusListener diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/SystemButtons.kt b/desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/custom/SystemButtons.kt similarity index 93% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/SystemButtons.kt rename to desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/custom/SystemButtons.kt index 28860b3..49584b2 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/SystemButtons.kt +++ b/desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/custom/SystemButtons.kt @@ -1,10 +1,8 @@ -package com.abdownloadmanager.desktop.ui.customwindow +package com.abdownloadmanager.desktop.window.custom -import com.abdownloadmanager.utils.compose.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.LocalContentColor import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon import androidx.compose.animation.animateColorAsState import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -20,6 +18,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.compose.ui.window.FrameWindowScope +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors import ir.amirab.util.customwindow.HitSpots import ir.amirab.util.customwindow.windowFrameItem diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/utils.kt b/desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/custom/utils.kt similarity index 92% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/utils.kt rename to desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/custom/utils.kt index fa089cc..c05706a 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/utils.kt +++ b/desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/custom/utils.kt @@ -1,8 +1,7 @@ -package com.abdownloadmanager.desktop.ui.customwindow +package com.abdownloadmanager.desktop.window.custom import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.ui.awt.ComposeWindow import java.awt.Toolkit import java.awt.Window import kotlin.math.max diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/windowUtil/moveSafe.kt b/desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/moveSafe.kt similarity index 97% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/windowUtil/moveSafe.kt rename to desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/moveSafe.kt index dddf857..1d18370 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/windowUtil/moveSafe.kt +++ b/desktop/app-utils/src/main/kotlin/com/abdownloadmanager/desktop/window/moveSafe.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils.windowUtil +package com.abdownloadmanager.desktop.window import androidx.compose.ui.Alignment import androidx.compose.ui.geometry.Offset diff --git a/desktop/app/build.gradle.kts b/desktop/app/build.gradle.kts index 595abe7..e477bf7 100644 --- a/desktop/app/build.gradle.kts +++ b/desktop/app/build.gradle.kts @@ -21,9 +21,6 @@ dependencies { implementation(libs.decompose) implementation(libs.decompose.jbCompose) - //because we don't have material design, but we use ripple effect - implementation(libs.compose.material.rippleEffect) - implementation(libs.koin.core) implementation(libs.kotlin.serialization.json) @@ -64,14 +61,23 @@ dependencies { implementation(project(":integration:server")) implementation(project(":desktop:shared")) - implementation(project(":desktop:tray")) - implementation(project(":desktop:custom-window-frame")) + implementation(project(":desktop:app-utils")) + + implementation(project(":desktop:tray:common")) + if (Platform.getCurrentPlatform() == Platform.Desktop.Windows) { + implementation(project(":desktop:tray:windows")) + } else { + // TODO use external library for linux and remove this line + implementation(project(":desktop:tray:windows")) +// implementation(project(":desktop:tray:linux")) + } + + implementation(project(":shared:app")) implementation(project(":shared:app-utils")) implementation(project(":shared:utils")) implementation(project(":shared:updater")) implementation(project(":shared:auto-start")) implementation(project(":shared:nanohttp4k")) - implementation(project(":shared:resources")) } aboutLibraries { diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/App.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/App.kt index 540e883..63521dd 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/App.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/App.kt @@ -9,8 +9,8 @@ import com.abdownloadmanager.desktop.ui.Ui import com.abdownloadmanager.desktop.utils.* import com.abdownloadmanager.desktop.utils.singleInstance.* import com.abdownloadmanager.integration.Integration -import com.abdownloadmanager.utils.DownloadSystem -import com.abdownloadmanager.utils.appinfo.PreviousVersion +import com.abdownloadmanager.shared.utils.DownloadSystem +import com.abdownloadmanager.shared.utils.appinfo.PreviousVersion import ir.amirab.util.platform.Platform import kotlinx.coroutines.runBlocking import okio.Path.Companion.toOkioPath diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/AppComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/AppComponent.kt index 7ba82c9..a2c9c4c 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/AppComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/AppComponent.kt @@ -17,11 +17,11 @@ import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.storage.AppSettingsStorage import com.abdownloadmanager.desktop.ui.widget.MessageDialogModel import com.abdownloadmanager.desktop.ui.widget.MessageDialogType -import com.abdownloadmanager.desktop.ui.widget.NotificationModel -import com.abdownloadmanager.desktop.ui.widget.NotificationType +import com.abdownloadmanager.shared.ui.widget.NotificationModel +import com.abdownloadmanager.shared.ui.widget.NotificationType import com.abdownloadmanager.desktop.utils.* -import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects -import com.abdownloadmanager.desktop.utils.mvi.supportEffects +import com.abdownloadmanager.shared.utils.mvi.ContainsEffects +import com.abdownloadmanager.shared.utils.mvi.supportEffects import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.router.children.ChildNavState import com.arkivanov.decompose.router.pages.Pages @@ -40,9 +40,12 @@ import ir.amirab.downloader.utils.OnDuplicateStrategy import com.abdownloadmanager.integration.Integration import com.abdownloadmanager.integration.IntegrationResult import com.abdownloadmanager.resources.* -import com.abdownloadmanager.utils.DownloadSystem -import com.abdownloadmanager.utils.category.CategoryManager -import com.abdownloadmanager.utils.category.CategorySelectionMode +import com.abdownloadmanager.shared.utils.BaseComponent +import com.abdownloadmanager.shared.utils.DownloadItemOpener +import com.abdownloadmanager.shared.utils.DownloadSystem +import com.abdownloadmanager.shared.utils.category.CategoryManager +import com.abdownloadmanager.shared.utils.category.CategorySelectionMode +import com.abdownloadmanager.shared.utils.subscribeAsStateFlow import com.arkivanov.decompose.childContext import ir.amirab.downloader.exception.TooManyErrorException import ir.amirab.downloader.monitor.isDownloadActiveFlow diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/SharedConstants.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/SharedConstants.kt index 4172360..222a05d 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/SharedConstants.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/SharedConstants.kt @@ -1,37 +1,24 @@ package com.abdownloadmanager.desktop -import com.abdownloadmanager.desktop.utils.BrowserIntegrationModel -import com.abdownloadmanager.desktop.utils.BrowserType +import com.abdownloadmanager.shared.utils.BaseConstants +import com.abdownloadmanager.shared.utils.BrowserIntegrationModel +import com.abdownloadmanager.shared.utils.BrowserType -interface BaseConstants{ - val appName:String - val appDisplayName: String - val packageName:String - val projectWebsite:String - val projectSourceCode:String - val projectTranslations: String - val projectGithubOwner: String - val projectGithubRepo: String - val browserIntegrations:List - val telegramGroupUrl:String - val telegramChannelUrl:String -} - -object SharedConstants:BaseConstants{ +object SharedConstants : BaseConstants { override val appName: String = BuildConfig.APP_NAME override val appDisplayName: String = BuildConfig.APP_DISPLAY_NAME override val packageName: String = BuildConfig.PACKAGE_NAME - override val projectWebsite: String= BuildConfig.PROJECT_WEBSITE + override val projectWebsite: String = BuildConfig.PROJECT_WEBSITE override val projectTranslations: String = BuildConfig.PROJECT_TRANSLATIONS - override val projectSourceCode: String= BuildConfig.PROJECT_SOURCE_CODE + override val projectSourceCode: String = BuildConfig.PROJECT_SOURCE_CODE override val projectGithubOwner: String = BuildConfig.PROJECT_GITHUB_OWNER override val projectGithubRepo: String = BuildConfig.PROJECT_GITHUB_REPO override val browserIntegrations: List = listOf( BrowserIntegrationModel( - BrowserType.Chrome,BuildConfig.INTEGRATION_CHROME_LINK + BrowserType.Chrome, BuildConfig.INTEGRATION_CHROME_LINK ), BrowserIntegrationModel( - BrowserType.Firefox,BuildConfig.INTEGRATION_FIREFOX_LINK + BrowserType.Firefox, BuildConfig.INTEGRATION_FIREFOX_LINK ) ) override val telegramChannelUrl: String = BuildConfig.TELEGRAM_CHANNEL diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/actions/ShortcutManager.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/actions/ShortcutManager.kt deleted file mode 100644 index 60b2c15..0000000 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/actions/ShortcutManager.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.abdownloadmanager.desktop.actions - -import androidx.compose.runtime.compositionLocalOf -import androidx.compose.ui.awt.awtEventOrNull -import androidx.compose.ui.input.key.KeyEvent -import javax.swing.KeyStroke - -class ShortcutManager { - private val shortcuts = mutableMapOf Unit>() - fun register(keyStroke: KeyStroke, action: () -> Unit) { - shortcuts[keyStroke] = action - } - - infix fun String.to(action: () -> Unit) { - register(KeyStroke.getKeyStroke(this), action) - } - - fun executeShortcut( - keyStroke: KeyStroke, - ): Boolean { - val action = shortcuts[keyStroke] ?: return false - runCatching { - action() - } - return true - } - - fun getShortCutOf(action: () -> Unit): KeyStroke? { - return shortcuts.firstNotNullOfOrNull { - if (it.value==action){ - it.key - }else null - } - } -} -val LocalShortCutManager = compositionLocalOf { - null as ShortcutManager? -} -fun ShortcutManager.handle(event: KeyEvent): Boolean { - val awtEvent = event.awtEventOrNull ?: return false - val keyStroke = runCatching { - KeyStroke.getKeyStrokeForEvent(awtEvent) - }.getOrNull() ?: return false - executeShortcut(keyStroke) - return true -} \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/actions/dev.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/actions/dev.kt index 5cd5fc7..7f13b34 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/actions/dev.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/actions/dev.kt @@ -2,7 +2,7 @@ package com.abdownloadmanager.desktop.actions import com.abdownloadmanager.desktop.AppComponent import com.abdownloadmanager.desktop.di.Di -import com.abdownloadmanager.desktop.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons import com.abdownloadmanager.desktop.ui.widget.MessageDialogType import ir.amirab.util.compose.action.AnAction import ir.amirab.util.compose.action.MenuItem diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/actions/main.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/actions/main.kt index 64c369a..28cff2a 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/actions/main.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/actions/main.kt @@ -3,22 +3,22 @@ package com.abdownloadmanager.desktop.actions import com.abdownloadmanager.desktop.AppComponent import com.abdownloadmanager.desktop.SharedConstants import com.abdownloadmanager.desktop.di.Di -import com.abdownloadmanager.desktop.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons import com.abdownloadmanager.desktop.utils.AppInfo import com.abdownloadmanager.desktop.utils.ClipboardUtil import ir.amirab.util.compose.action.AnAction import ir.amirab.util.compose.action.MenuItem import ir.amirab.util.compose.action.buildMenu import ir.amirab.util.compose.action.simpleAction -import com.abdownloadmanager.desktop.utils.getIcon -import com.abdownloadmanager.desktop.utils.getName +import com.abdownloadmanager.shared.utils.getIcon +import com.abdownloadmanager.shared.utils.getName import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.category.Category +import com.abdownloadmanager.shared.utils.category.Category import ir.amirab.downloader.downloaditem.DownloadCredentials import ir.amirab.downloader.queue.DownloadQueue import ir.amirab.downloader.queue.activeQueuesFlow import ir.amirab.downloader.queue.inactiveQueuesFlow -import com.abdownloadmanager.utils.extractors.linkextractor.DownloadCredentialFromStringExtractor +import com.abdownloadmanager.shared.utils.extractors.linkextractor.DownloadCredentialFromStringExtractor import ir.amirab.util.UrlUtils import ir.amirab.util.compose.asStringSource import ir.amirab.util.flow.combineStateFlows diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/di/Di.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/di/Di.kt index c356198..d12aa71 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/di/Di.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/di/Di.kt @@ -13,7 +13,8 @@ import com.abdownloadmanager.desktop.pages.updater.UpdateDownloaderViaDownloadSy import ir.amirab.downloader.queue.QueueManager import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.storage.* -import com.abdownloadmanager.desktop.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.theme.ISystemThemeDetector import com.abdownloadmanager.desktop.utils.* import com.abdownloadmanager.desktop.utils.native_messaging.NativeMessaging import com.abdownloadmanager.desktop.utils.native_messaging.NativeMessagingManifestApplier @@ -42,18 +43,18 @@ import org.koin.dsl.bind import org.koin.dsl.module import com.abdownloadmanager.updatechecker.GithubUpdateChecker import com.abdownloadmanager.updatechecker.UpdateChecker -import com.abdownloadmanager.utils.DownloadFoldersRegistry -import com.abdownloadmanager.utils.DownloadSystem -import com.abdownloadmanager.utils.FileIconProvider -import com.abdownloadmanager.utils.FileIconProviderUsingCategoryIcons +import com.abdownloadmanager.shared.utils.DownloadFoldersRegistry +import com.abdownloadmanager.shared.utils.DownloadSystem +import com.abdownloadmanager.shared.utils.FileIconProvider +import com.abdownloadmanager.shared.utils.FileIconProviderUsingCategoryIcons import ir.amirab.util.AppVersionTracker -import com.abdownloadmanager.utils.appinfo.PreviousVersion -import com.abdownloadmanager.utils.autoremove.RemovedDownloadsFromDiskTracker -import com.abdownloadmanager.utils.category.* -import com.abdownloadmanager.utils.compose.IMyIcons -import com.abdownloadmanager.utils.proxy.IProxyStorage -import com.abdownloadmanager.utils.proxy.ProxyData -import com.abdownloadmanager.utils.proxy.ProxyManager +import com.abdownloadmanager.shared.utils.appinfo.PreviousVersion +import com.abdownloadmanager.shared.utils.autoremove.RemovedDownloadsFromDiskTracker +import com.abdownloadmanager.shared.utils.category.* +import com.abdownloadmanager.shared.utils.ui.IMyIcons +import com.abdownloadmanager.shared.utils.proxy.IProxyStorage +import com.abdownloadmanager.shared.utils.proxy.ProxyData +import com.abdownloadmanager.shared.utils.proxy.ProxyManager import ir.amirab.downloader.connection.proxy.ProxyStrategyProvider import ir.amirab.downloader.monitor.IDownloadMonitor import ir.amirab.downloader.utils.EmptyFileCreator @@ -92,6 +93,9 @@ val downloaderModule = module { single { DesktopDiskStat() } + single { + DesktopSystemThemeDetector() + } single { QueueManager(get(), get()) } @@ -265,7 +269,7 @@ val appModule = module { AppRepository() } single { - ThemeManager(get(), get()) + ThemeManager(get(), get(), get()) } single { LanguageManager(get()) diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/integration/IntegrationHandlerImp.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/integration/IntegrationHandlerImp.kt index 3e59474..4ab95ff 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/integration/IntegrationHandlerImp.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/integration/IntegrationHandlerImp.kt @@ -2,7 +2,7 @@ package com.abdownloadmanager.desktop.integration import com.abdownloadmanager.desktop.AppComponent import com.abdownloadmanager.desktop.repository.AppRepository -import com.abdownloadmanager.utils.DownloadSystem +import com.abdownloadmanager.shared.utils.DownloadSystem import com.abdownloadmanager.integration.IntegrationHandler import com.abdownloadmanager.integration.NewDownloadInfoFromIntegration import com.abdownloadmanager.integration.NewDownloadTask diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/about/AboutDialog.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/about/AboutDialog.kt index 982ec6f..ede537c 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/about/AboutDialog.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/about/AboutDialog.kt @@ -1,8 +1,8 @@ package com.abdownloadmanager.desktop.pages.about import com.abdownloadmanager.desktop.AppComponent -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.desktop.window.custom.WindowTitle import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.ui.Alignment @@ -10,9 +10,9 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState -import com.abdownloadmanager.desktop.ui.customwindow.WindowIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import com.abdownloadmanager.desktop.window.custom.WindowIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale import com.abdownloadmanager.resources.Res import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.desktop.screen.applyUiScale diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/about/AboutPage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/about/AboutPage.kt index 1cb5474..a21b6b2 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/about/AboutPage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/about/AboutPage.kt @@ -1,13 +1,13 @@ package com.abdownloadmanager.desktop.pages.about import androidx.compose.foundation.* -import com.abdownloadmanager.utils.compose.LocalTextStyle -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.utils.ui.LocalTextStyle +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.ui.widget.Text import com.abdownloadmanager.desktop.utils.AppInfo -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.collectIsHoveredAsState import androidx.compose.foundation.layout.* @@ -28,11 +28,11 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.abdownloadmanager.desktop.SharedConstants -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.ui.widget.IconActionButton -import com.abdownloadmanager.desktop.ui.widget.Tooltip -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.ui.widget.IconActionButton +import com.abdownloadmanager.shared.ui.widget.Tooltip +import com.abdownloadmanager.shared.utils.div import com.abdownloadmanager.resources.Res import ir.amirab.util.UrlUtils import ir.amirab.util.compose.IconSource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/AddDownloadConfig.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/AddDownloadConfig.kt index 3bdf690..525f652 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/AddDownloadConfig.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/AddDownloadConfig.kt @@ -1,7 +1,7 @@ package com.abdownloadmanager.desktop.pages.addDownload import com.abdownloadmanager.desktop.storage.PageStatesStorage -import com.abdownloadmanager.desktop.utils.BaseComponent +import com.abdownloadmanager.shared.utils.BaseComponent import com.arkivanov.decompose.ComponentContext import ir.amirab.downloader.downloaditem.DownloadCredentials import kotlinx.coroutines.flow.StateFlow @@ -14,7 +14,7 @@ import java.util.* abstract class AddDownloadComponent( ctx: ComponentContext, val id: String, -) :BaseComponent(ctx),KoinComponent{ +) : BaseComponent(ctx), KoinComponent { companion object{ const val lastLocationsCacheSize = 4 diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/DownloadUiChecker.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/DownloadUiChecker.kt index c5ed869..e861e81 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/DownloadUiChecker.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/DownloadUiChecker.kt @@ -1,7 +1,8 @@ package com.abdownloadmanager.desktop.pages.addDownload -import com.abdownloadmanager.desktop.utils.* -import com.abdownloadmanager.utils.DownloadSystem +import com.abdownloadmanager.shared.utils.AddDownloadChecker +import com.abdownloadmanager.shared.utils.DownloadSystem +import com.abdownloadmanager.shared.utils.LinkChecker import ir.amirab.downloader.connection.DownloaderClient import ir.amirab.downloader.downloaditem.DownloadCredentials import ir.amirab.util.flow.onEachLatest diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/ShowAddDownloadDialogs.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/ShowAddDownloadDialogs.kt index 28da2bc..4206210 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/ShowAddDownloadDialogs.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/ShowAddDownloadDialogs.kt @@ -5,10 +5,10 @@ import com.abdownloadmanager.desktop.pages.addDownload.multiple.AddMultiDownload import com.abdownloadmanager.desktop.pages.addDownload.multiple.AddMultiItemPage import com.abdownloadmanager.desktop.pages.addDownload.single.AddDownloadPage import com.abdownloadmanager.desktop.pages.addDownload.single.AddSingleDownloadComponent -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.customwindow.WindowIcon -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle -import com.abdownloadmanager.desktop.ui.icon.MyIcons +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.desktop.window.custom.WindowIcon +import com.abdownloadmanager.desktop.window.custom.WindowTitle +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState @@ -18,7 +18,7 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale import com.abdownloadmanager.resources.Res import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.desktop.screen.applyUiScale diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/multiple/AddMultiDownloadComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/multiple/AddMultiDownloadComponent.kt index 075f9ee..c40b2b6 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/multiple/AddMultiDownloadComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/multiple/AddMultiDownloadComponent.kt @@ -3,17 +3,17 @@ package com.abdownloadmanager.desktop.pages.addDownload.multiple import com.abdownloadmanager.desktop.pages.addDownload.AddDownloadComponent import com.abdownloadmanager.desktop.pages.addDownload.DownloadUiChecker import com.abdownloadmanager.desktop.repository.AppRepository -import com.abdownloadmanager.desktop.ui.widget.customtable.TableState -import com.abdownloadmanager.utils.DownloadSystem +import com.abdownloadmanager.shared.ui.widget.customtable.TableState +import com.abdownloadmanager.shared.utils.DownloadSystem import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import com.abdownloadmanager.utils.FileIconProvider -import com.abdownloadmanager.utils.category.Category -import com.abdownloadmanager.utils.category.CategoryItem -import com.abdownloadmanager.utils.category.CategoryManager -import com.abdownloadmanager.utils.category.CategorySelectionMode +import com.abdownloadmanager.shared.utils.FileIconProvider +import com.abdownloadmanager.shared.utils.category.Category +import com.abdownloadmanager.shared.utils.category.CategoryItem +import com.abdownloadmanager.shared.utils.category.CategoryManager +import com.abdownloadmanager.shared.utils.category.CategorySelectionMode import com.arkivanov.decompose.ComponentContext import ir.amirab.downloader.connection.DownloaderClient import ir.amirab.downloader.downloaditem.DownloadCredentials diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/multiple/AddMultiItemPage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/multiple/AddMultiItemPage.kt index 28e8126..1d02a19 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/multiple/AddMultiItemPage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/multiple/AddMultiItemPage.kt @@ -1,6 +1,5 @@ package com.abdownloadmanager.desktop.pages.addDownload.multiple -import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.onClick @@ -8,17 +7,17 @@ import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import com.abdownloadmanager.shared.ui.widget.* import com.abdownloadmanager.desktop.pages.addDownload.shared.CategoryAddButton import com.abdownloadmanager.desktop.pages.addDownload.shared.CategorySelect import com.abdownloadmanager.desktop.pages.addDownload.shared.LocationTextField import com.abdownloadmanager.desktop.pages.addDownload.shared.ShowAddToQueueDialog -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.* -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.utils.div import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.category.Category -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.category.Category +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import ir.amirab.util.compose.resources.myStringResource @Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/multiple/AddMultiItemTable.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/multiple/AddMultiItemTable.kt index 6710300..e178a68 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/multiple/AddMultiItemTable.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/multiple/AddMultiItemTable.kt @@ -1,13 +1,10 @@ package com.abdownloadmanager.desktop.pages.addDownload.multiple import com.abdownloadmanager.desktop.pages.addDownload.DownloadUiChecker -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.* -import com.abdownloadmanager.desktop.ui.widget.customtable.* -import com.abdownloadmanager.desktop.ui.widget.customtable.styled.MyStyledTableHeader -import com.abdownloadmanager.desktop.utils.* +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.ui.widget.customtable.styled.MyStyledTableHeader import androidx.compose.foundation.* import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.* @@ -25,9 +22,17 @@ import androidx.compose.ui.input.key.onKeyEvent import androidx.compose.ui.input.pointer.isShiftPressed import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.abdownloadmanager.shared.ui.widget.CheckBox +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.customtable.CellSize +import com.abdownloadmanager.shared.ui.widget.customtable.CustomCellRenderer +import com.abdownloadmanager.shared.ui.widget.customtable.Table +import com.abdownloadmanager.shared.ui.widget.customtable.TableCell import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.FileIconProvider -import com.abdownloadmanager.utils.compose.widget.MyIcon +import com.abdownloadmanager.shared.utils.FileIconProvider +import com.abdownloadmanager.shared.utils.LocalSizeUnit +import com.abdownloadmanager.shared.utils.convertPositiveSizeToHumanReadable +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.asStringSource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/CategorySelect.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/CategorySelect.kt index 1f10868..537e9d5 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/CategorySelect.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/CategorySelect.kt @@ -11,14 +11,14 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.* -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.ui.widget.Text -import com.abdownloadmanager.desktop.utils.div -import com.abdownloadmanager.utils.category.Category -import com.abdownloadmanager.utils.category.rememberIconPainter -import com.abdownloadmanager.utils.compose.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.utils.div +import com.abdownloadmanager.shared.utils.category.Category +import com.abdownloadmanager.shared.utils.category.rememberIconPainter +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon @Composable fun CategorySelect( diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/DialogDropDown.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/DialogDropDown.kt index 6c91284..25e66f0 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/DialogDropDown.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/DialogDropDown.kt @@ -22,18 +22,17 @@ import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.rememberDialogState -import com.abdownloadmanager.desktop.ui.customwindow.BaseOptionDialog -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.ui.widget.Text -import com.abdownloadmanager.desktop.utils.div -import com.abdownloadmanager.desktop.utils.windowUtil.moveSafe +import com.abdownloadmanager.desktop.window.custom.BaseOptionDialog +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale +import com.abdownloadmanager.shared.utils.ui.myColors +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.utils.div +import com.abdownloadmanager.desktop.window.moveSafe import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.utils.compose.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.desktop.screen.applyUiScale import java.awt.MouseInfo diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/ExtraConfig.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/ExtraConfig.kt index 5627410..03401fa 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/ExtraConfig.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/ExtraConfig.kt @@ -1,12 +1,12 @@ package com.abdownloadmanager.desktop.pages.addDownload.shared import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurable -import com.abdownloadmanager.desktop.ui.customwindow.BaseOptionDialog -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.widget.Text -import com.abdownloadmanager.utils.compose.WithContentColor -import com.abdownloadmanager.desktop.utils.div -import com.abdownloadmanager.desktop.utils.windowUtil.moveSafe +import com.abdownloadmanager.desktop.window.custom.BaseOptionDialog +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.utils.ui.WithContentColor +import com.abdownloadmanager.shared.utils.div +import com.abdownloadmanager.desktop.window.moveSafe import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape @@ -22,7 +22,7 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.rememberDialogState import com.abdownloadmanager.desktop.pages.settings.configurable.Configurable -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale import ir.amirab.util.desktop.screen.applyUiScale import java.awt.Dimension import java.awt.MouseInfo diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/LocationTextField.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/LocationTextField.kt index 850c167..c65353d 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/LocationTextField.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/LocationTextField.kt @@ -2,11 +2,11 @@ package com.abdownloadmanager.desktop.pages.addDownload.shared import com.abdownloadmanager.desktop.pages.addDownload.single.AddDownloadPageTextField import com.abdownloadmanager.desktop.pages.addDownload.single.MyTextFieldIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.Text -import com.abdownloadmanager.desktop.ui.widget.menu.MyDropDown +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.menu.MyDropDown import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* @@ -21,7 +21,6 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* import ir.amirab.util.compose.resources.myStringResource import io.github.vinceglb.filekit.compose.rememberDirectoryPickerLauncher import io.github.vinceglb.filekit.core.FileKitPlatformSettings diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/SelectQueue.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/SelectQueue.kt index 0bca2f1..28181ff 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/SelectQueue.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/SelectQueue.kt @@ -1,16 +1,16 @@ package com.abdownloadmanager.desktop.pages.addDownload.shared import com.abdownloadmanager.desktop.actions.newQueueAction -import com.abdownloadmanager.desktop.ui.customwindow.BaseOptionDialog -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.ActionButton -import com.abdownloadmanager.desktop.ui.widget.IconActionButton -import com.abdownloadmanager.desktop.ui.widget.Text -import com.abdownloadmanager.utils.compose.WithContentColor -import com.abdownloadmanager.desktop.utils.div -import com.abdownloadmanager.desktop.utils.windowUtil.moveSafe +import com.abdownloadmanager.desktop.window.custom.BaseOptionDialog +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.ui.widget.ActionButton +import com.abdownloadmanager.shared.ui.widget.IconActionButton +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.utils.ui.WithContentColor +import com.abdownloadmanager.shared.utils.div +import com.abdownloadmanager.desktop.window.moveSafe import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape @@ -24,9 +24,8 @@ import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.rememberDialogState -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* import ir.amirab.util.compose.resources.myStringResource import ir.amirab.downloader.queue.DownloadQueue import ir.amirab.util.desktop.screen.applyUiScale diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/single/AddDownloadPage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/single/AddDownloadPage.kt index df58575..3d7782a 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/single/AddDownloadPage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/single/AddDownloadPage.kt @@ -1,16 +1,15 @@ package com.abdownloadmanager.desktop.pages.addDownload.single -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.utils.compose.WithContentColor -import com.abdownloadmanager.desktop.ui.customwindow.BaseOptionDialog +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.WithContentColor +import com.abdownloadmanager.desktop.window.custom.BaseOptionDialog import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.* +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes import com.abdownloadmanager.desktop.utils.* -import com.abdownloadmanager.desktop.utils.windowUtil.moveSafe +import com.abdownloadmanager.desktop.window.moveSafe import androidx.compose.animation.* import androidx.compose.foundation.* import androidx.compose.foundation.interaction.MutableInteractionSource @@ -30,9 +29,14 @@ import androidx.compose.ui.input.pointer.pointerHoverIcon import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.* import androidx.compose.ui.window.* +import com.abdownloadmanager.shared.ui.widget.* import com.abdownloadmanager.desktop.pages.addDownload.shared.* -import com.abdownloadmanager.desktop.utils.mvi.HandleEffects +import com.abdownloadmanager.shared.utils.mvi.HandleEffects import com.abdownloadmanager.resources.Res +import com.abdownloadmanager.shared.utils.CanAddResult +import com.abdownloadmanager.shared.utils.LocalSizeUnit +import com.abdownloadmanager.shared.utils.convertPositiveSizeToHumanReadable +import com.abdownloadmanager.shared.utils.div import ir.amirab.util.compose.resources.myStringResource import ir.amirab.downloader.utils.OnDuplicateStrategy import ir.amirab.util.compose.asStringSource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/single/AddSingleDownloadComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/single/AddSingleDownloadComponent.kt index 69ca170..4362d36 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/single/AddSingleDownloadComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/single/AddSingleDownloadComponent.kt @@ -8,11 +8,12 @@ import com.abdownloadmanager.desktop.pages.settings.configurable.StringConfigura import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.utils.* import androidx.compose.runtime.* -import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects -import com.abdownloadmanager.desktop.utils.mvi.supportEffects +import com.abdownloadmanager.shared.utils.mvi.ContainsEffects +import com.abdownloadmanager.shared.utils.mvi.supportEffects import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.DownloadSystem -import com.abdownloadmanager.utils.extractors.linkextractor.DownloadCredentialFromStringExtractor +import com.abdownloadmanager.shared.utils.* +import com.abdownloadmanager.shared.utils.FileIconProvider +import com.abdownloadmanager.shared.utils.extractors.linkextractor.DownloadCredentialFromStringExtractor import com.arkivanov.decompose.ComponentContext import ir.amirab.downloader.connection.DownloaderClient import ir.amirab.downloader.downloaditem.DownloadCredentials @@ -29,10 +30,9 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.koin.core.component.KoinComponent import org.koin.core.component.inject -import com.abdownloadmanager.utils.FileIconProvider -import com.abdownloadmanager.utils.category.Category -import com.abdownloadmanager.utils.category.CategoryItem -import com.abdownloadmanager.utils.category.CategoryManager +import com.abdownloadmanager.shared.utils.category.Category +import com.abdownloadmanager.shared.utils.category.CategoryItem +import com.abdownloadmanager.shared.utils.category.CategoryManager import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.asStringSourceWithARgs diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownloadComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownloadComponent.kt index 5261636..0cbac93 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownloadComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownloadComponent.kt @@ -1,10 +1,10 @@ package com.abdownloadmanager.desktop.pages.batchdownload -import com.abdownloadmanager.desktop.utils.BaseComponent +import com.abdownloadmanager.shared.utils.BaseComponent import com.abdownloadmanager.desktop.utils.ClipboardUtil -import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects -import com.abdownloadmanager.desktop.utils.mvi.supportEffects -import com.abdownloadmanager.utils.isValidUrl +import com.abdownloadmanager.shared.utils.mvi.ContainsEffects +import com.abdownloadmanager.shared.utils.mvi.supportEffects +import com.abdownloadmanager.shared.utils.isValidUrl import com.arkivanov.decompose.ComponentContext import ir.amirab.util.flow.combineStateFlows import ir.amirab.util.flow.mapStateFlow diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownloadWindow.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownloadWindow.kt index d103895..6371164 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownloadWindow.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownloadWindow.kt @@ -6,9 +6,9 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale -import com.abdownloadmanager.desktop.utils.mvi.HandleEffects +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale +import com.abdownloadmanager.shared.utils.mvi.HandleEffects import ir.amirab.util.desktop.screen.applyUiScale @Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownnload.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownnload.kt index 7a5d56d..837da79 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownnload.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownnload.kt @@ -17,21 +17,19 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.pointer.PointerIcon import androidx.compose.ui.input.pointer.pointerHoverIcon import androidx.compose.ui.unit.dp -import com.abdownloadmanager.desktop.pages.addDownload.single.MyTextFieldIcon import com.abdownloadmanager.desktop.pages.batchdownload.WildcardSelect.* -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.ui.widget.* +import com.abdownloadmanager.desktop.window.custom.WindowTitle +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.ui.widget.* +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import ir.amirab.util.ifThen import com.abdownloadmanager.desktop.utils.ClipboardUtil -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.div import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.utils.compose.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.StringSource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/CategoryComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/CategoryComponent.kt index 33c60ca..124ed78 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/CategoryComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/CategoryComponent.kt @@ -1,10 +1,10 @@ package com.abdownloadmanager.desktop.pages.category import com.abdownloadmanager.desktop.repository.AppRepository -import com.abdownloadmanager.desktop.utils.BaseComponent -import com.abdownloadmanager.utils.category.Category -import com.abdownloadmanager.utils.category.CategoryManager -import com.abdownloadmanager.utils.category.iconSource +import com.abdownloadmanager.shared.utils.BaseComponent +import com.abdownloadmanager.shared.utils.category.Category +import com.abdownloadmanager.shared.utils.category.CategoryManager +import com.abdownloadmanager.shared.utils.category.iconSource import com.arkivanov.decompose.ComponentContext import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.uriOrNull diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/NewCategoryPage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/NewCategoryPage.kt index 8d072c2..7cf45aa 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/NewCategoryPage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/NewCategoryPage.kt @@ -13,20 +13,19 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import com.abdownloadmanager.desktop.pages.addDownload.single.MyTextFieldIcon -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.ui.widget.* -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.desktop.window.custom.WindowTitle +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.ui.widget.* +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.utils.div import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.utils.compose.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon import io.github.vinceglb.filekit.compose.rememberDirectoryPickerLauncher import io.github.vinceglb.filekit.core.FileKitPlatformSettings import ir.amirab.util.compose.IconSource -import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.desktop.LocalWindow import java.io.File diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/ShowCategoryDialogs.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/ShowCategoryDialogs.kt index 7292031..8b5b83e 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/ShowCategoryDialogs.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/ShowCategoryDialogs.kt @@ -8,8 +8,8 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale import ir.amirab.util.desktop.screen.applyUiScale @Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsPage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsPage.kt index fd78694..98223aa 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsPage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsPage.kt @@ -4,13 +4,10 @@ import androidx.compose.foundation.* import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.foundation.shape.CircleShape -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight @@ -18,19 +15,18 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.abdownloadmanager.desktop.di.Di import com.abdownloadmanager.desktop.pages.about.MaybeLinkText -import com.abdownloadmanager.desktop.ui.theme.LocalMyColors -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.ActionButton -import com.abdownloadmanager.desktop.ui.widget.Text -import com.abdownloadmanager.desktop.ui.widget.customtable.Table -import com.abdownloadmanager.desktop.ui.widget.customtable.TableState -import com.abdownloadmanager.desktop.ui.widget.customtable.styled.MyStyledTableHeader +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.ui.widget.ActionButton +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.customtable.Table +import com.abdownloadmanager.shared.ui.widget.customtable.TableState +import com.abdownloadmanager.shared.ui.widget.customtable.styled.MyStyledTableHeader import com.abdownloadmanager.desktop.utils.AppInfo -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.div import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import ir.amirab.util.UrlUtils import ir.amirab.util.compose.localizationmanager.LanguageNameProvider import ir.amirab.util.compose.localizationmanager.MyLocale diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsTable.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsTable.kt index b8d2d29..dd58540 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsTable.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsTable.kt @@ -1,8 +1,8 @@ package com.abdownloadmanager.desktop.pages.credits.translators -import com.abdownloadmanager.desktop.ui.widget.customtable.CellSize -import com.abdownloadmanager.desktop.ui.widget.customtable.SortableCell -import com.abdownloadmanager.desktop.ui.widget.customtable.TableCell +import com.abdownloadmanager.shared.ui.widget.customtable.CellSize +import com.abdownloadmanager.shared.ui.widget.customtable.SortableCell +import com.abdownloadmanager.shared.ui.widget.customtable.TableCell import androidx.compose.ui.unit.dp import com.abdownloadmanager.resources.Res import ir.amirab.util.compose.StringSource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsWindow.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsWindow.kt index 0d9b828..7749800 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsWindow.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/credits/translators/TranslatorsWindow.kt @@ -8,8 +8,8 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.rememberWindowState import com.abdownloadmanager.desktop.AppComponent -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.desktop.window.custom.WindowTitle import com.abdownloadmanager.resources.Res import ir.amirab.util.compose.resources.myStringResource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownload.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownload.kt index c41d654..0a8b488 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownload.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownload.kt @@ -2,13 +2,12 @@ package com.abdownloadmanager.desktop.pages.editdownload import androidx.compose.runtime.Composable -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.* +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes import com.abdownloadmanager.desktop.utils.* import androidx.compose.animation.* import androidx.compose.animation.core.animateDpAsState @@ -30,15 +29,19 @@ import androidx.compose.ui.input.pointer.pointerHoverIcon import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.* import androidx.compose.ui.window.* +import com.abdownloadmanager.shared.ui.widget.* import com.abdownloadmanager.desktop.pages.addDownload.shared.ExtraConfig -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.utils.mvi.HandleEffects +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.desktop.window.custom.WindowTitle +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.utils.mvi.HandleEffects import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.FileIconProvider -import com.abdownloadmanager.utils.compose.WithContentColor +import com.abdownloadmanager.shared.utils.FileIconProvider +import com.abdownloadmanager.shared.utils.LocalSizeUnit +import com.abdownloadmanager.shared.utils.convertPositiveSizeToHumanReadable +import com.abdownloadmanager.shared.utils.ui.WithContentColor +import com.abdownloadmanager.shared.utils.div import ir.amirab.util.UrlUtils import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.asStringSource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownloadComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownloadComponent.kt index a5722e7..23e3bb3 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownloadComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownloadComponent.kt @@ -1,11 +1,11 @@ package com.abdownloadmanager.desktop.pages.editdownload import com.abdownloadmanager.desktop.repository.AppRepository -import com.abdownloadmanager.desktop.utils.* -import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects -import com.abdownloadmanager.desktop.utils.mvi.supportEffects -import com.abdownloadmanager.utils.DownloadSystem -import com.abdownloadmanager.utils.FileIconProvider +import com.abdownloadmanager.shared.utils.mvi.ContainsEffects +import com.abdownloadmanager.shared.utils.mvi.supportEffects +import com.abdownloadmanager.shared.utils.BaseComponent +import com.abdownloadmanager.shared.utils.DownloadSystem +import com.abdownloadmanager.shared.utils.FileIconProvider import com.arkivanov.decompose.ComponentContext import ir.amirab.downloader.connection.DownloaderClient import ir.amirab.downloader.downloaditem.DownloadCredentials diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownloadState.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownloadState.kt index 8d69a60..b77e3b5 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownloadState.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownloadState.kt @@ -4,11 +4,11 @@ import com.abdownloadmanager.desktop.pages.settings.configurable.IntConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.SpeedLimitConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.StringConfigurable import com.abdownloadmanager.desktop.repository.AppRepository -import com.abdownloadmanager.desktop.utils.FileNameValidator -import com.abdownloadmanager.desktop.utils.LinkChecker -import com.abdownloadmanager.desktop.utils.convertPositiveSpeedToHumanReadable +import com.abdownloadmanager.shared.utils.FileNameValidator +import com.abdownloadmanager.shared.utils.LinkChecker +import com.abdownloadmanager.shared.utils.convertPositiveSpeedToHumanReadable import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.isValidUrl +import com.abdownloadmanager.shared.utils.isValidUrl import ir.amirab.downloader.connection.DownloaderClient import ir.amirab.downloader.downloaditem.DownloadCredentials import ir.amirab.downloader.downloaditem.DownloadItem diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/ExternalLibsPage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/ExternalLibsPage.kt index e7a601e..6f60485 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/ExternalLibsPage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/ExternalLibsPage.kt @@ -1,15 +1,15 @@ package com.abdownloadmanager.desktop.pages.extenallibs -import com.abdownloadmanager.utils.compose.ProvideTextStyle -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.customtable.Table -import com.abdownloadmanager.desktop.ui.widget.customtable.TableState -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.ProvideTextStyle +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.ui.widget.customtable.Table +import com.abdownloadmanager.shared.ui.widget.customtable.TableState +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.rememberLazyListState -import com.abdownloadmanager.desktop.ui.widget.Text -import com.abdownloadmanager.desktop.ui.widget.customtable.styled.MyStyledTableHeader +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.customtable.styled.MyStyledTableHeader import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.res.useResource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/ExternalLibsWindow.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/ExternalLibsWindow.kt index 5e19b1c..1ee85d9 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/ExternalLibsWindow.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/ExternalLibsWindow.kt @@ -1,15 +1,14 @@ package com.abdownloadmanager.desktop.pages.extenallibs import com.abdownloadmanager.desktop.AppComponent -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.desktop.window.custom.WindowTitle import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.rememberWindowState import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* import ir.amirab.util.compose.resources.myStringResource @Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/LibraryDialog.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/LibraryDialog.kt index 12e8556..0831b4b 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/LibraryDialog.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/LibraryDialog.kt @@ -1,17 +1,17 @@ package com.abdownloadmanager.desktop.pages.extenallibs import com.abdownloadmanager.desktop.pages.about.MaybeLinkText -import com.abdownloadmanager.utils.compose.ProvideTextStyle -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.ActionButton -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.ProvideTextStyle +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.ui.widget.ActionButton +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.div import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -22,7 +22,6 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* import com.mikepenz.aboutlibraries.entity.Developer import com.mikepenz.aboutlibraries.entity.Library import com.mikepenz.aboutlibraries.entity.License diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/OpenSourceLibraryTable.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/OpenSourceLibraryTable.kt index de9aa13..5b0ded3 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/OpenSourceLibraryTable.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/extenallibs/OpenSourceLibraryTable.kt @@ -1,8 +1,8 @@ package com.abdownloadmanager.desktop.pages.extenallibs -import com.abdownloadmanager.desktop.ui.widget.customtable.CellSize -import com.abdownloadmanager.desktop.ui.widget.customtable.SortableCell -import com.abdownloadmanager.desktop.ui.widget.customtable.TableCell +import com.abdownloadmanager.shared.ui.widget.customtable.CellSize +import com.abdownloadmanager.shared.ui.widget.customtable.SortableCell +import com.abdownloadmanager.shared.ui.widget.customtable.TableCell import androidx.compose.ui.unit.dp import com.abdownloadmanager.resources.Res import com.mikepenz.aboutlibraries.entity.Library diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/Actions.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/Actions.kt index c7af169..cc996ce 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/Actions.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/Actions.kt @@ -1,29 +1,23 @@ package com.abdownloadmanager.desktop.pages.home -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.ui.widget.menu.MyDropDown -import com.abdownloadmanager.desktop.ui.widget.menu.SubMenu -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.utils.compose.WithContentColor +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.ui.widget.menu.MyDropDown +import com.abdownloadmanager.shared.ui.widget.menu.SubMenu +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.WithContentColor import ir.amirab.util.compose.action.MenuItem -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.div import androidx.compose.foundation.* -import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.layout.* -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha -import androidx.compose.ui.graphics.Brush -import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp -import com.abdownloadmanager.utils.compose.LocalTextStyle -import com.abdownloadmanager.utils.compose.widget.ScrollFade -import org.http4k.routing.inspect.BackgroundColour @Composable fun Actions(list: List) { diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomeComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomeComponent.kt index 8bf3ce8..759886e 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomeComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomeComponent.kt @@ -6,16 +6,16 @@ import com.abdownloadmanager.desktop.pages.home.sections.DownloadListCells import com.abdownloadmanager.desktop.pages.home.sections.category.DefinedStatusCategories import com.abdownloadmanager.desktop.pages.home.sections.category.DownloadStatusCategoryFilter import com.abdownloadmanager.desktop.storage.PageStatesStorage -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.widget.NotificationType -import com.abdownloadmanager.desktop.ui.widget.customtable.Sort -import com.abdownloadmanager.desktop.ui.widget.customtable.TableState +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.ui.widget.NotificationType +import com.abdownloadmanager.shared.ui.widget.customtable.Sort +import com.abdownloadmanager.shared.ui.widget.customtable.TableState import com.abdownloadmanager.desktop.utils.* import ir.amirab.util.compose.action.MenuItem import ir.amirab.util.compose.action.buildMenu import ir.amirab.util.compose.action.simpleAction -import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects -import com.abdownloadmanager.desktop.utils.mvi.supportEffects +import com.abdownloadmanager.shared.utils.mvi.ContainsEffects +import com.abdownloadmanager.shared.utils.mvi.supportEffects import androidx.compose.runtime.* import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.DpSize @@ -23,14 +23,13 @@ import androidx.compose.ui.unit.dp import com.abdownloadmanager.UpdateManager import com.abdownloadmanager.desktop.pages.category.CategoryDialogManager import com.abdownloadmanager.desktop.storage.AppSettingsStorage -import com.abdownloadmanager.desktop.ui.widget.MessageDialogType import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.DownloadSystem -import com.abdownloadmanager.utils.FileIconProvider -import com.abdownloadmanager.utils.category.Category -import com.abdownloadmanager.utils.category.CategoryItemWithId -import com.abdownloadmanager.utils.category.CategoryManager -import com.abdownloadmanager.utils.category.DefaultCategories +import com.abdownloadmanager.shared.utils.* +import com.abdownloadmanager.shared.utils.FileIconProvider +import com.abdownloadmanager.shared.utils.category.Category +import com.abdownloadmanager.shared.utils.category.CategoryItemWithId +import com.abdownloadmanager.shared.utils.category.CategoryManager +import com.abdownloadmanager.shared.utils.category.DefaultCategories import com.arkivanov.decompose.ComponentContext import ir.amirab.downloader.downloaditem.DownloadCredentials import ir.amirab.downloader.downloaditem.DownloadJobStatus @@ -40,7 +39,7 @@ import ir.amirab.downloader.queue.QueueManager import ir.amirab.util.flow.combineStateFlows import ir.amirab.util.flow.mapStateFlow import ir.amirab.util.flow.mapTwoWayStateFlow -import com.abdownloadmanager.utils.extractors.linkextractor.DownloadCredentialFromStringExtractor +import com.abdownloadmanager.shared.utils.extractors.linkextractor.DownloadCredentialFromStringExtractor import ir.amirab.downloader.downloaditem.contexts.RemovedBy import ir.amirab.downloader.downloaditem.contexts.User import ir.amirab.util.AppVersionTracker @@ -956,7 +955,7 @@ class HomeComponent( categoryActions.value = null } - override val shortcutManager = ShortcutManager().apply { + override val shortcutManager = DesktopShortcutManager().apply { "ctrl N" to newDownloadAction "ctrl V" to newDownloadFromClipboardAction "ctrl C" to downloadActions.copyDownloadLinkAction diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomePage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomePage.kt index 8aad5ef..a738e7a 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomePage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomePage.kt @@ -3,15 +3,13 @@ package com.abdownloadmanager.desktop.pages.home import com.abdownloadmanager.desktop.pages.home.sections.DownloadList import com.abdownloadmanager.desktop.pages.home.sections.SearchBox import com.abdownloadmanager.desktop.pages.home.sections.category.* -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.* -import com.abdownloadmanager.desktop.ui.widget.menu.MenuBar -import com.abdownloadmanager.desktop.utils.* +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.ui.widget.menu.MenuBar import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.fadeIn @@ -19,7 +17,7 @@ import androidx.compose.animation.fadeOut import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.* import androidx.compose.ui.* import androidx.compose.ui.draw.alpha @@ -28,7 +26,6 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach -import com.abdownloadmanager.desktop.ui.widget.ActionButton import androidx.compose.animation.core.animateDpAsState import androidx.compose.foundation.draganddrop.dragAndDropTarget import androidx.compose.foundation.interaction.MutableInteractionSource @@ -41,11 +38,19 @@ import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalWindowInfo import androidx.compose.ui.window.Dialog -import com.abdownloadmanager.desktop.ui.customwindow.* -import com.abdownloadmanager.desktop.ui.widget.menu.ShowOptionsInDropDown +import com.abdownloadmanager.shared.ui.widget.* +import com.abdownloadmanager.shared.ui.widget.menu.ShowOptionsInDropDown +import com.abdownloadmanager.desktop.window.custom.TitlePosition +import com.abdownloadmanager.desktop.window.custom.WindowEnd +import com.abdownloadmanager.desktop.window.custom.WindowStart +import com.abdownloadmanager.desktop.window.custom.WindowTitlePosition import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.category.Category -import com.abdownloadmanager.utils.category.rememberIconPainter +import com.abdownloadmanager.shared.utils.LocalSpeedUnit +import com.abdownloadmanager.shared.utils.category.Category +import com.abdownloadmanager.shared.utils.category.rememberIconPainter +import com.abdownloadmanager.shared.utils.convertPositiveBytesToSizeUnit +import com.abdownloadmanager.shared.utils.div +import com.abdownloadmanager.shared.utils.ui.WithTitleBarDirection import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.action.MenuItem diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomePersistedState.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomePersistedState.kt index 71c282f..407c473 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomePersistedState.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomePersistedState.kt @@ -1,6 +1,6 @@ package com.abdownloadmanager.desktop.pages.home -import com.abdownloadmanager.desktop.ui.widget.customtable.TableState +import com.abdownloadmanager.shared.ui.widget.customtable.TableState import arrow.optics.Lens import ir.amirab.util.config.floatKeyOf import ir.amirab.util.config.getDecoded diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomeWindow.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomeWindow.kt index 52e87b5..1a62853 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomeWindow.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/HomeWindow.kt @@ -6,13 +6,12 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.window.WindowPlacement import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState -import com.abdownloadmanager.desktop.actions.LocalShortCutManager -import com.abdownloadmanager.desktop.actions.handle -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.customwindow.rememberWindowController -import com.abdownloadmanager.desktop.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.LocalShortCutManager +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.desktop.window.custom.rememberWindowController +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons import com.abdownloadmanager.desktop.utils.AppInfo -import com.abdownloadmanager.desktop.utils.mvi.HandleEffects +import com.abdownloadmanager.shared.utils.mvi.HandleEffects import java.awt.Dimension @Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/DownloadList.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/DownloadList.kt index 4bc72ec..9199680 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/DownloadList.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/DownloadList.kt @@ -1,16 +1,15 @@ package com.abdownloadmanager.desktop.pages.home.sections -import DOUBLE_CLICK_DELAY -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.widget.CheckBox -import com.abdownloadmanager.desktop.ui.widget.Text -import com.abdownloadmanager.desktop.ui.widget.customtable.Table -import com.abdownloadmanager.desktop.ui.widget.customtable.* -import com.abdownloadmanager.desktop.ui.widget.customtable.styled.MyStyledTableHeader -import com.abdownloadmanager.desktop.ui.widget.menu.LocalMenuDisabledItemBehavior -import com.abdownloadmanager.desktop.ui.widget.menu.MenuDisabledItemBehavior -import com.abdownloadmanager.desktop.ui.widget.menu.ShowOptionsInDropDown +import com.abdownloadmanager.shared.utils.DOUBLE_CLICK_DELAY +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.ui.widget.CheckBox +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.customtable.Table +import com.abdownloadmanager.shared.ui.widget.customtable.styled.MyStyledTableHeader +import com.abdownloadmanager.shared.ui.widget.menu.LocalMenuDisabledItemBehavior +import com.abdownloadmanager.shared.ui.widget.menu.MenuDisabledItemBehavior +import com.abdownloadmanager.shared.ui.widget.menu.ShowOptionsInDropDown import ir.amirab.util.compose.action.MenuItem import androidx.compose.foundation.* import androidx.compose.foundation.interaction.MutableInteractionSource @@ -25,10 +24,11 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.key.* import androidx.compose.ui.input.pointer.* import androidx.compose.ui.unit.dp +import com.abdownloadmanager.shared.ui.widget.customtable.* import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.FileIconProvider -import com.abdownloadmanager.utils.category.CategoryManager -import com.abdownloadmanager.utils.category.rememberCategoryOf +import com.abdownloadmanager.shared.utils.FileIconProvider +import com.abdownloadmanager.shared.utils.category.CategoryManager +import com.abdownloadmanager.shared.utils.category.rememberCategoryOf import ir.amirab.downloader.monitor.* import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.StringSource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/Filters.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/Filters.kt index 2f9d662..9fdf4b7 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/Filters.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/Filters.kt @@ -1,11 +1,11 @@ package com.abdownloadmanager.desktop.pages.home.sections -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.MyTextField -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.ui.widget.MyTextField +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import androidx.compose.animation.* import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.clickable @@ -21,7 +21,6 @@ import androidx.compose.ui.input.pointer.PointerIcon import androidx.compose.ui.input.pointer.pointerHoverIcon import androidx.compose.ui.unit.dp import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* import ir.amirab.util.compose.resources.myStringResource @Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/TableDownloadItem.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/TableDownloadItem.kt index 7733210..492e8a9 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/TableDownloadItem.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/TableDownloadItem.kt @@ -1,12 +1,9 @@ package com.abdownloadmanager.desktop.pages.home.sections -import com.abdownloadmanager.desktop.pages.home.sections.SortIndicatorMode.* -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.* -import com.abdownloadmanager.desktop.utils.* +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.tween import androidx.compose.foundation.background @@ -19,9 +16,12 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Brush import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.abdownloadmanager.shared.ui.widget.CheckBox +import com.abdownloadmanager.shared.ui.widget.Text import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.FileIconProvider -import com.abdownloadmanager.utils.category.Category +import com.abdownloadmanager.shared.utils.* +import com.abdownloadmanager.shared.utils.FileIconProvider +import com.abdownloadmanager.shared.utils.category.Category import ir.amirab.util.compose.resources.myStringResource import ir.amirab.downloader.downloaditem.DownloadJobStatus import ir.amirab.downloader.monitor.CompletedDownloadItemState @@ -48,34 +48,6 @@ private fun isSelected(): Boolean { return LocalDownloadItemProperties.current.isSelected } -enum class SortIndicatorMode { - None, - Ascending, - Descending, -} - -fun SortIndicatorMode.isAscending(): Boolean { - return when (this) { - Ascending -> true - else -> false - } -} - -fun SortIndicatorMode.isDescending(): Boolean { - return when (this) { - Descending -> true - else -> false - } -} - -fun SortIndicatorMode.next(): SortIndicatorMode { - return when (this) { - None -> Ascending - Ascending -> Descending - Descending -> Ascending - } -} - @Composable fun CheckCell( diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/category/Categories.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/category/Categories.kt index a123160..870aa0d 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/category/Categories.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/home/sections/category/Categories.kt @@ -4,18 +4,18 @@ import androidx.compose.animation.* import androidx.compose.foundation.PointerMatcher import androidx.compose.foundation.background import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.ExpandableItem -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.ui.widget.ExpandableItem +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.onClick import androidx.compose.foundation.selection.selectable import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -25,12 +25,11 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.pointer.PointerButton import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.div import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* -import com.abdownloadmanager.utils.category.Category -import com.abdownloadmanager.utils.category.rememberIconPainter +import com.abdownloadmanager.shared.utils.category.Category +import com.abdownloadmanager.shared.utils.category.rememberIconPainter import ir.amirab.downloader.downloaditem.DownloadStatus import ir.amirab.downloader.monitor.IDownloadItemState import ir.amirab.downloader.monitor.statusOrFinished @@ -212,7 +211,8 @@ fun StatusFilterItem( fontSize = myTextSizes.lg, maxLines = 1, ) - MyIcon(MyIcons.up, null, Modifier + MyIcon( + MyIcons.up, null, Modifier .fillMaxHeight().wrapContentHeight() .clip(CircleShape) .size(24.dp) diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/newQueue/NewQueueDialog.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/newQueue/NewQueueDialog.kt index ef30740..c4e41da 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/newQueue/NewQueueDialog.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/newQueue/NewQueueDialog.kt @@ -1,7 +1,7 @@ package com.abdownloadmanager.desktop.pages.newQueue import com.abdownloadmanager.desktop.AppComponent -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow +import com.abdownloadmanager.desktop.window.custom.CustomWindow import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.ui.Alignment @@ -9,7 +9,7 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale import ir.amirab.util.desktop.screen.applyUiScale @Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/newQueue/NewQueuePage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/newQueue/NewQueuePage.kt index 5aba4f7..728f1d2 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/newQueue/NewQueuePage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/newQueue/NewQueuePage.kt @@ -1,8 +1,8 @@ package com.abdownloadmanager.desktop.pages.newQueue -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle -import com.abdownloadmanager.desktop.ui.widget.ActionButton -import com.abdownloadmanager.desktop.ui.widget.MyTextField +import com.abdownloadmanager.desktop.window.custom.WindowTitle +import com.abdownloadmanager.shared.ui.widget.ActionButton +import com.abdownloadmanager.shared.ui.widget.MyTextField import androidx.compose.foundation.layout.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier @@ -10,7 +10,6 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.unit.dp import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* import ir.amirab.util.compose.resources.myStringResource @Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueueInfoComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueueInfoComponent.kt index 4f9d04c..c0613b6 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueueInfoComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueueInfoComponent.kt @@ -2,13 +2,12 @@ package com.abdownloadmanager.desktop.pages.queue import com.abdownloadmanager.desktop.pages.settings.configurable.* import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.ConfigurableGroup -import com.abdownloadmanager.desktop.utils.BaseComponent +import com.abdownloadmanager.shared.utils.BaseComponent import ir.amirab.util.flow.createMutableStateFlowFromStateFlow import ir.amirab.util.flow.mapStateFlow import com.abdownloadmanager.desktop.utils.newScopeBasedOn import androidx.compose.runtime.toMutableStateList import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* import com.arkivanov.decompose.ComponentContext import ir.amirab.downloader.monitor.IDownloadItemState import ir.amirab.downloader.monitor.IDownloadMonitor diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueueWindow.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueueWindow.kt index 84e36fd..98d3408 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueueWindow.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueueWindow.kt @@ -1,7 +1,7 @@ package com.abdownloadmanager.desktop.pages.queue -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.utils.mvi.HandleEffects +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.shared.utils.mvi.HandleEffects import androidx.compose.runtime.Composable import androidx.compose.ui.window.rememberWindowState diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueuesComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueuesComponent.kt index 0b3fb5f..9c7cd15 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueuesComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueuesComponent.kt @@ -2,9 +2,12 @@ package com.abdownloadmanager.desktop.pages.queue import com.abdownloadmanager.desktop.actions.newQueueAction import com.abdownloadmanager.desktop.utils.* -import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects -import com.abdownloadmanager.desktop.utils.mvi.supportEffects +import com.abdownloadmanager.shared.utils.mvi.ContainsEffects +import com.abdownloadmanager.shared.utils.mvi.supportEffects import androidx.compose.runtime.* +import com.abdownloadmanager.shared.utils.BaseComponent +import com.abdownloadmanager.shared.utils.asState +import com.abdownloadmanager.shared.utils.subscribeAsStateFlow import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.router.slot.SlotNavigation import com.arkivanov.decompose.router.slot.childSlot diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueuesPage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueuesPage.kt index 9c394f6..322de88 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueuesPage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/queue/QueuesPage.kt @@ -2,16 +2,14 @@ package com.abdownloadmanager.desktop.pages.queue import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.ConfigurableGroup import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurableGroup -import com.abdownloadmanager.utils.compose.LocalContentAlpha -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle +import com.abdownloadmanager.shared.utils.ui.LocalContentAlpha +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.desktop.window.custom.WindowTitle import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.* -import com.abdownloadmanager.desktop.utils.* +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes import androidx.compose.animation.animateColorAsState import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -23,7 +21,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll -import com.abdownloadmanager.desktop.ui.widget.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -35,8 +32,9 @@ import androidx.compose.ui.platform.LocalWindowInfo import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.abdownloadmanager.shared.ui.widget.* import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* +import com.abdownloadmanager.shared.utils.div import ir.amirab.util.compose.resources.myStringResource import ir.amirab.downloader.downloaditem.DownloadJobStatus import ir.amirab.downloader.monitor.IDownloadItemState diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingWindow.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingWindow.kt index 3cebbac..aa671cb 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingWindow.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingWindow.kt @@ -1,7 +1,7 @@ package com.abdownloadmanager.desktop.pages.settings -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.utils.mvi.HandleEffects +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.shared.utils.mvi.HandleEffects import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.unit.DpSize diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingsComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingsComponent.kt index 40b48a3..67f5ad0 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingsComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingsComponent.kt @@ -5,15 +5,15 @@ import com.abdownloadmanager.desktop.pages.settings.configurable.* import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.storage.AppSettingsStorage import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.utils.BaseComponent -import com.abdownloadmanager.desktop.utils.convertPositiveSpeedToHumanReadable -import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects -import com.abdownloadmanager.desktop.utils.mvi.supportEffects +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.BaseComponent +import com.abdownloadmanager.shared.utils.convertPositiveSpeedToHumanReadable +import com.abdownloadmanager.shared.utils.mvi.ContainsEffects +import com.abdownloadmanager.shared.utils.mvi.supportEffects import androidx.compose.runtime.* import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.proxy.ProxyManager -import com.abdownloadmanager.utils.proxy.ProxyMode +import com.abdownloadmanager.shared.utils.proxy.ProxyManager +import com.abdownloadmanager.shared.utils.proxy.ProxyMode import com.arkivanov.decompose.ComponentContext import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.asStringSource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingsPage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingsPage.kt index d7fa880..930e8c6 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingsPage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingsPage.kt @@ -1,16 +1,15 @@ package com.abdownloadmanager.desktop.pages.settings import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurable -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.desktop.ui.customwindow.WindowIcon -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.desktop.window.custom.WindowIcon +import com.abdownloadmanager.desktop.window.custom.WindowTitle import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.widget.Handle -import com.abdownloadmanager.desktop.ui.widget.Text -import com.abdownloadmanager.desktop.utils.* +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.ui.widget.Handle +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.animation.AnimatedContent import androidx.compose.foundation.* import androidx.compose.foundation.gestures.Orientation @@ -24,9 +23,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* +import com.abdownloadmanager.shared.utils.div import ir.amirab.util.compose.resources.myStringResource -import kotlinx.coroutines.channels.ticker @Composable private fun SideBar( diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/ThemeManager.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/ThemeManager.kt index f77f0f9..7bb66dc 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/ThemeManager.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/ThemeManager.kt @@ -3,10 +3,10 @@ package com.abdownloadmanager.desktop.pages.settings import androidx.compose.runtime.Stable import androidx.compose.ui.graphics.Color import com.abdownloadmanager.desktop.storage.AppSettingsStorage -import com.abdownloadmanager.desktop.ui.theme.MyColors -import com.abdownloadmanager.desktop.ui.theme.SystemThemeDetector -import com.abdownloadmanager.desktop.ui.theme.darkColors -import com.abdownloadmanager.desktop.ui.theme.lightColors +import com.abdownloadmanager.shared.utils.ui.theme.ISystemThemeDetector +import com.abdownloadmanager.shared.utils.ui.MyColors +import com.abdownloadmanager.shared.ui.theme.darkColors +import com.abdownloadmanager.shared.ui.theme.lightColors import com.abdownloadmanager.resources.Res import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.asStringSource @@ -19,6 +19,7 @@ import kotlinx.coroutines.flow.* class ThemeManager( private val scope: CoroutineScope, private val appSettings: AppSettingsStorage, + private val osThemeDetector: ISystemThemeDetector, ) { companion object { val defaultThemes = listOf( @@ -73,7 +74,6 @@ class ThemeManager( - private val osThemeDetector = SystemThemeDetector() private var osDarkModeFlow = MutableStateFlow(true) val currentThemeColor = combineStateFlows( diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/Configurable.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/Configurable.kt index 15a9277..1e8f31f 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/Configurable.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/Configurable.kt @@ -1,16 +1,11 @@ package com.abdownloadmanager.desktop.pages.settings.configurable -import androidx.compose.runtime.Stable -import androidx.compose.ui.graphics.Color import com.abdownloadmanager.desktop.pages.settings.ThemeInfo -import com.abdownloadmanager.desktop.pages.settings.configurable.BooleanConfigurable.RenderMode -import com.abdownloadmanager.desktop.ui.theme.MyColors -import com.abdownloadmanager.utils.proxy.ProxyData +import com.abdownloadmanager.shared.utils.proxy.ProxyData import ir.amirab.util.compose.StringSource import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow -import kotlinx.coroutines.flow.update import kotlinx.datetime.DayOfWeek import kotlinx.datetime.LocalTime diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Boolean.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Boolean.kt index 0ce4efa..a836d8c 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Boolean.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Boolean.kt @@ -1,8 +1,8 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets import com.abdownloadmanager.desktop.pages.settings.configurable.BooleanConfigurable -import com.abdownloadmanager.desktop.ui.widget.CheckBox -import com.abdownloadmanager.desktop.ui.widget.Switch +import com.abdownloadmanager.shared.ui.widget.CheckBox +import com.abdownloadmanager.shared.ui.widget.Switch import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.ui.Modifier diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Enum.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Enum.kt index 419b983..b1b1fda 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Enum.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Enum.kt @@ -2,7 +2,7 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets import com.abdownloadmanager.desktop.pages.settings.configurable.EnumConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.EnumConfigurable.RenderMode.* -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.foundation.layout.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Float.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Float.kt index 3fb662f..8f513aa 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Float.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Float.kt @@ -2,8 +2,7 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets import com.abdownloadmanager.desktop.pages.settings.configurable.FloatConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.FloatConfigurable.RenderMode.* -import com.abdownloadmanager.desktop.ui.widget.FloatTextField -import com.abdownloadmanager.desktop.ui.widget.IntTextField +import com.abdownloadmanager.shared.ui.widget.FloatTextField import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.KeyboardOptions diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Folder.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Folder.kt index 952f7a0..04d0be3 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Folder.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Folder.kt @@ -1,9 +1,9 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets import com.abdownloadmanager.desktop.pages.settings.configurable.FolderConfigurable -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.widget.MyTextField +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.ui.widget.MyTextField import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.runtime.* diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Int.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Int.kt index 6fbf4bc..3514779 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Int.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Int.kt @@ -2,7 +2,7 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets import com.abdownloadmanager.desktop.pages.settings.configurable.IntConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.IntConfigurable.RenderMode.* -import com.abdownloadmanager.desktop.ui.widget.IntTextField +import com.abdownloadmanager.shared.ui.widget.IntTextField import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.KeyboardOptions diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Long.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Long.kt index 109ab4c..ae8c2f9 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Long.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Long.kt @@ -1,7 +1,7 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets import com.abdownloadmanager.desktop.pages.settings.configurable.LongConfigurable -import com.abdownloadmanager.desktop.ui.widget.LongTextField +import com.abdownloadmanager.shared.ui.widget.LongTextField import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.KeyboardOptions diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Proxy.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Proxy.kt index 478b278..8d2dafd 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Proxy.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Proxy.kt @@ -15,17 +15,17 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import com.abdownloadmanager.desktop.pages.settings.configurable.ProxyConfigurable -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.* -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.ui.widget.* +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.utils.div import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.utils.proxy.ProxyMode -import com.abdownloadmanager.utils.proxy.ProxyRules -import com.abdownloadmanager.utils.proxy.ProxyWithRules +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.proxy.ProxyMode +import com.abdownloadmanager.shared.utils.proxy.ProxyRules +import com.abdownloadmanager.shared.utils.proxy.ProxyWithRules import ir.amirab.downloader.connection.proxy.Proxy import ir.amirab.downloader.connection.proxy.ProxyType import ir.amirab.util.compose.resources.myStringResource @@ -303,7 +303,7 @@ private fun ProxyEditDialog( Row { Text(myStringResource(Res.string.proxy_do_not_use_proxy_for)) Spacer(Modifier.width(8.dp)) - Help( + com.abdownloadmanager.shared.ui.widget.Help( myStringResource(Res.string.proxy_do_not_use_proxy_for_description) ) } diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/RenderConfigurableGroup.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/RenderConfigurableGroup.kt index 081c3df..484c855 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/RenderConfigurableGroup.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/RenderConfigurableGroup.kt @@ -1,14 +1,13 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.utils.div import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/RenderDayOfWeekConfigurable.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/RenderDayOfWeekConfigurable.kt index d761b57..ffcaeed 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/RenderDayOfWeekConfigurable.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/RenderDayOfWeekConfigurable.kt @@ -1,17 +1,17 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets import com.abdownloadmanager.desktop.pages.settings.configurable.DayOfWeekConfigurable -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.utils.div import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -19,7 +19,6 @@ import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import com.abdownloadmanager.resources.Res -import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.asStringSource import kotlinx.datetime.DayOfWeek import java.time.DayOfWeek.* diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/RenderTimeConfig.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/RenderTimeConfig.kt index 544f23a..bdd7c03 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/RenderTimeConfig.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/RenderTimeConfig.kt @@ -1,12 +1,12 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets import com.abdownloadmanager.desktop.pages.settings.configurable.TimeConfigurable -import com.abdownloadmanager.desktop.ui.widget.IntTextField +import com.abdownloadmanager.shared.ui.widget.IntTextField import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.KeyboardOptions -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Shared.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Shared.kt index 906507d..7518cec 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Shared.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Shared.kt @@ -1,15 +1,14 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets import com.abdownloadmanager.desktop.pages.settings.configurable.Configurable -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.utils.compose.WithContentColor -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.ui.widget.Text -import com.abdownloadmanager.desktop.utils.* +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.WithContentColor +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandVertically import androidx.compose.animation.shrinkVertically @@ -31,6 +30,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Popup import androidx.compose.ui.window.rememberComponentRectPositionProvider +import com.abdownloadmanager.shared.utils.div @Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Speed.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Speed.kt index c354f47..237e3e1 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Speed.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Speed.kt @@ -1,16 +1,16 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets import com.abdownloadmanager.desktop.pages.settings.configurable.SpeedLimitConfigurable -import com.abdownloadmanager.desktop.ui.widget.CheckBox -import com.abdownloadmanager.desktop.ui.widget.DoubleTextField +import com.abdownloadmanager.shared.ui.widget.CheckBox +import com.abdownloadmanager.shared.ui.widget.DoubleTextField import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.layout.* -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import com.abdownloadmanager.desktop.utils.LocalSpeedUnit +import com.abdownloadmanager.shared.utils.LocalSpeedUnit import ir.amirab.util.datasize.* @Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/String.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/String.kt index 30f6ee5..c17c675 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/String.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/String.kt @@ -1,7 +1,7 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets import com.abdownloadmanager.desktop.pages.settings.configurable.StringConfigurable -import com.abdownloadmanager.desktop.ui.widget.MyTextField +import com.abdownloadmanager.shared.ui.widget.MyTextField import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.width import androidx.compose.runtime.Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Theme.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Theme.kt index 61e379a..8cd6919 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Theme.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/configurable/widgets/Theme.kt @@ -1,13 +1,13 @@ package com.abdownloadmanager.desktop.pages.settings.configurable.widgets import com.abdownloadmanager.desktop.pages.settings.configurable.ThemeConfigurable -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/CompletedDownloadPage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/CompletedDownloadPage.kt index d4ead95..613e3da 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/CompletedDownloadPage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/CompletedDownloadPage.kt @@ -8,17 +8,17 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.ActionButton -import com.abdownloadmanager.desktop.ui.widget.Text -import com.abdownloadmanager.desktop.utils.LocalSizeUnit -import com.abdownloadmanager.desktop.utils.convertPositiveSizeToHumanReadable -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.ui.widget.ActionButton +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.utils.LocalSizeUnit +import com.abdownloadmanager.shared.utils.convertPositiveSizeToHumanReadable +import com.abdownloadmanager.shared.utils.div import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.compose.WithContentColor -import com.abdownloadmanager.utils.compose.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.WithContentColor +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon import ir.amirab.downloader.monitor.CompletedDownloadItemState import ir.amirab.util.compose.resources.myStringResource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/ShowDownloadDialogs.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/ShowDownloadDialogs.kt index 7817290..f862cd7 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/ShowDownloadDialogs.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/ShowDownloadDialogs.kt @@ -1,11 +1,11 @@ package com.abdownloadmanager.desktop.pages.singleDownloadPage import com.abdownloadmanager.desktop.DownloadDialogManager -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.customwindow.WindowIcon -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.utils.mvi.HandleEffects +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.desktop.window.custom.WindowIcon +import com.abdownloadmanager.desktop.window.custom.WindowTitle +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.mvi.HandleEffects import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.unit.DpSize @@ -14,7 +14,7 @@ import androidx.compose.ui.window.FrameWindowScope import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.WindowState import androidx.compose.ui.window.rememberWindowState -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale import ir.amirab.downloader.downloaditem.DownloadJobStatus import ir.amirab.downloader.monitor.CompletedDownloadItemState import ir.amirab.downloader.monitor.IDownloadItemState diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/SingleDownloadPage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/SingleDownloadPage.kt index ab12358..655ae1b 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/SingleDownloadPage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/SingleDownloadPage.kt @@ -2,17 +2,14 @@ package com.abdownloadmanager.desktop.pages.singleDownloadPage import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurable import com.abdownloadmanager.desktop.pages.singleDownloadPage.SingleDownloadPageSections.* -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.utils.compose.WithContentColor +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.WithContentColor import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.* -import com.abdownloadmanager.desktop.ui.widget.customtable.* -import com.abdownloadmanager.desktop.utils.* +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes import androidx.compose.animation.* import androidx.compose.animation.core.* import androidx.compose.foundation.* @@ -38,8 +35,16 @@ import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Popup import androidx.compose.ui.window.rememberComponentRectPositionProvider +import com.abdownloadmanager.shared.ui.widget.* +import com.abdownloadmanager.shared.ui.widget.customtable.CellSize +import com.abdownloadmanager.shared.ui.widget.customtable.Table +import com.abdownloadmanager.shared.ui.widget.customtable.TableCell +import com.abdownloadmanager.shared.ui.widget.customtable.TableState import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.compose.useIsInDebugMode +import com.abdownloadmanager.shared.utils.LocalSizeUnit +import com.abdownloadmanager.shared.utils.convertPositiveSizeToHumanReadable +import com.abdownloadmanager.shared.utils.ui.useIsInDebugMode +import com.abdownloadmanager.shared.utils.div import ir.amirab.downloader.downloaditem.DownloadJobStatus import ir.amirab.downloader.monitor.* import ir.amirab.downloader.part.PartDownloadStatus diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/SingleDownloadPageComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/SingleDownloadPageComponent.kt index abdb52d..de7d561 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/SingleDownloadPageComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/SingleDownloadPageComponent.kt @@ -3,17 +3,16 @@ package com.abdownloadmanager.desktop.pages.singleDownloadPage import androidx.compose.runtime.Immutable import com.abdownloadmanager.desktop.pages.settings.configurable.IntConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.SpeedLimitConfigurable -import com.abdownloadmanager.desktop.utils.* -import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects -import com.abdownloadmanager.desktop.utils.mvi.supportEffects +import com.abdownloadmanager.shared.utils.mvi.ContainsEffects +import com.abdownloadmanager.shared.utils.mvi.supportEffects import arrow.optics.copy import com.abdownloadmanager.desktop.pages.settings.configurable.BooleanConfigurable import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.storage.AppSettingsStorage import com.abdownloadmanager.desktop.storage.PageStatesStorage import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.utils.DownloadSystem -import com.abdownloadmanager.utils.FileIconProvider +import com.abdownloadmanager.shared.utils.* +import com.abdownloadmanager.shared.utils.FileIconProvider import com.arkivanov.decompose.ComponentContext import ir.amirab.downloader.DownloadManagerEvents import ir.amirab.downloader.downloaditem.DownloadJobStatus diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/NewUpdatePage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/NewUpdatePage.kt index b34f5ba..6d99cec 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/NewUpdatePage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/NewUpdatePage.kt @@ -3,35 +3,34 @@ package com.abdownloadmanager.desktop.pages.updater import androidx.compose.animation.animateColor import androidx.compose.animation.core.* import androidx.compose.foundation.* -import com.abdownloadmanager.desktop.ui.customwindow.WindowIcon -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.widget.ActionButton -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.desktop.window.custom.WindowIcon +import com.abdownloadmanager.desktop.window.custom.WindowTitle +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.ui.widget.ActionButton +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.div import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.BlurredEdgeTreatment -import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.blur import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Brush import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import com.abdownloadmanager.desktop.ui.theme.myMarkdownColors -import com.abdownloadmanager.desktop.ui.theme.myMarkdownTypography +import com.abdownloadmanager.shared.ui.theme.myMarkdownColors +import com.abdownloadmanager.shared.ui.theme.myMarkdownTypography import com.abdownloadmanager.resources.Res import io.github.z4kn4fein.semver.Version import com.abdownloadmanager.updatechecker.UpdateInfo -import com.abdownloadmanager.utils.compose.needScroll +import com.abdownloadmanager.shared.utils.ui.needScroll import com.mikepenz.markdown.compose.Markdown import ir.amirab.util.compose.resources.myStringResource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/UpdateComponent.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/UpdateComponent.kt index cfa8992..dbec0b6 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/UpdateComponent.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/UpdateComponent.kt @@ -1,7 +1,7 @@ package com.abdownloadmanager.desktop.pages.updater import com.abdownloadmanager.desktop.utils.AppVersion -import com.abdownloadmanager.desktop.utils.BaseComponent +import com.abdownloadmanager.shared.utils.BaseComponent import com.abdownloadmanager.UpdateManager import com.abdownloadmanager.desktop.NotificationSender import com.abdownloadmanager.desktop.ui.widget.MessageDialogType @@ -11,7 +11,6 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update import org.koin.core.component.KoinComponent import org.koin.core.component.inject -import com.abdownloadmanager.updatechecker.UpdateInfo import ir.amirab.util.compose.asStringSource class UpdateComponent( diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/UpdateDownloaderViaDownloadSystem.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/UpdateDownloaderViaDownloadSystem.kt index 34fb3cd..21661dc 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/UpdateDownloaderViaDownloadSystem.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/UpdateDownloaderViaDownloadSystem.kt @@ -3,7 +3,7 @@ package com.abdownloadmanager.desktop.pages.updater import com.abdownloadmanager.UpdateDownloadLocationProvider import com.abdownloadmanager.updateapplier.UpdateDownloader import com.abdownloadmanager.updatechecker.UpdateSource -import com.abdownloadmanager.utils.DownloadSystem +import com.abdownloadmanager.shared.utils.DownloadSystem import ir.amirab.downloader.downloaditem.DownloadItem import ir.amirab.downloader.downloaditem.EmptyContext import ir.amirab.downloader.utils.OnDuplicateStrategy diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/UpdaterDialog.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/UpdaterDialog.kt index ec8bcfe..8d004e4 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/UpdaterDialog.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/updater/UpdaterDialog.kt @@ -1,8 +1,8 @@ package com.abdownloadmanager.desktop.pages.updater -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.widget.NotificationType -import com.abdownloadmanager.desktop.ui.widget.ShowNotification +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.shared.ui.widget.NotificationType +import com.abdownloadmanager.shared.ui.widget.ShowNotification import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.unit.DpSize @@ -10,7 +10,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState import com.abdownloadmanager.UpdateCheckStatus -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale import com.abdownloadmanager.resources.Res import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.asStringSource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/repository/AppRepository.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/repository/AppRepository.kt index 5a565ed..b58852d 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/repository/AppRepository.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/repository/AppRepository.kt @@ -3,13 +3,13 @@ package com.abdownloadmanager.desktop.repository import ir.amirab.util.datasize.CommonSizeConvertConfigs import com.abdownloadmanager.desktop.storage.AppSettingsStorage import com.abdownloadmanager.desktop.utils.AutoStartManager -import com.abdownloadmanager.utils.DownloadSystem +import com.abdownloadmanager.shared.utils.DownloadSystem import ir.amirab.downloader.DownloadSettings import com.abdownloadmanager.integration.Integration import com.abdownloadmanager.integration.IntegrationResult -import com.abdownloadmanager.utils.autoremove.RemovedDownloadsFromDiskTracker -import com.abdownloadmanager.utils.category.CategoryManager -import com.abdownloadmanager.utils.proxy.ProxyManager +import com.abdownloadmanager.shared.utils.autoremove.RemovedDownloadsFromDiskTracker +import com.abdownloadmanager.shared.utils.category.CategoryManager +import com.abdownloadmanager.shared.utils.proxy.ProxyManager import ir.amirab.downloader.DownloadManager import ir.amirab.downloader.monitor.IDownloadMonitor import ir.amirab.util.datasize.BaseSize diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/AppSettingsStorage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/AppSettingsStorage.kt index 3f55a37..a919227 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/AppSettingsStorage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/AppSettingsStorage.kt @@ -1,13 +1,11 @@ package com.abdownloadmanager.desktop.storage -import com.abdownloadmanager.desktop.utils.* import androidx.datastore.core.DataStore import arrow.optics.Lens import arrow.optics.optics -import com.abdownloadmanager.desktop.App +import com.abdownloadmanager.shared.utils.ConfigBaseSettingsByMapConfig import ir.amirab.util.compose.localizationmanager.LanguageStorage import ir.amirab.util.config.* -import ir.amirab.util.datasize.BaseSize import kotlinx.serialization.Serializable import org.koin.core.component.KoinComponent import java.io.File diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/PageStatesStorage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/PageStatesStorage.kt index c07011e..73f9a6a 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/PageStatesStorage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/PageStatesStorage.kt @@ -1,11 +1,11 @@ package com.abdownloadmanager.desktop.storage import com.abdownloadmanager.desktop.pages.home.HomePageStateToPersist -import com.abdownloadmanager.desktop.utils.* import androidx.datastore.core.DataStore import arrow.optics.Lens import arrow.optics.optics import com.abdownloadmanager.desktop.pages.singleDownloadPage.SingleDownloadPageStateToPersist +import com.abdownloadmanager.shared.utils.ConfigBaseSettingsByMapConfig import ir.amirab.util.config.getDecoded import ir.amirab.util.config.keyOfEncoded import ir.amirab.util.config.putEncoded diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/ProxyDatastoreStorage.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/ProxyDatastoreStorage.kt index 16a8024..0bead4e 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/ProxyDatastoreStorage.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/storage/ProxyDatastoreStorage.kt @@ -1,11 +1,9 @@ package com.abdownloadmanager.desktop.storage import androidx.datastore.core.DataStore -import com.abdownloadmanager.desktop.utils.ConfigBaseSettingsByJson -import com.abdownloadmanager.utils.proxy.IProxyStorage -import com.abdownloadmanager.utils.proxy.ProxyData -import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.update +import com.abdownloadmanager.shared.utils.ConfigBaseSettingsByJson +import com.abdownloadmanager.shared.utils.proxy.IProxyStorage +import com.abdownloadmanager.shared.utils.proxy.ProxyData class ProxyDatastoreStorage( dataStore: DataStore, diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/Ui.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/Ui.kt index 79595f2..0bbe7c4 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/Ui.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/Ui.kt @@ -11,13 +11,15 @@ import com.abdownloadmanager.desktop.pages.newQueue.NewQueueDialog import com.abdownloadmanager.desktop.pages.queue.QueuesWindow import com.abdownloadmanager.desktop.pages.settings.SettingWindow import com.abdownloadmanager.desktop.pages.singleDownloadPage.ShowDownloadDialogs -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.ABDownloaderTheme -import com.abdownloadmanager.desktop.ui.widget.tray.ComposeTray +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.ui.theme.ABDownloaderTheme import ir.amirab.util.compose.action.buildMenu -import com.abdownloadmanager.desktop.utils.mvi.HandleEffects +import com.abdownloadmanager.shared.utils.mvi.HandleEffects import androidx.compose.runtime.* import androidx.compose.ui.window.* +import com.abdownloadmanager.shared.ui.widget.ProvideLanguageManager +import com.abdownloadmanager.shared.ui.widget.ProvideNotificationManager +import com.abdownloadmanager.shared.ui.widget.useNotification import com.abdownloadmanager.desktop.pages.batchdownload.BatchDownloadWindow import com.abdownloadmanager.desktop.pages.category.ShowCategoryDialogs import com.abdownloadmanager.desktop.pages.confirmexit.ConfirmExit @@ -28,8 +30,11 @@ import com.abdownloadmanager.desktop.pages.settings.ThemeManager import com.abdownloadmanager.desktop.pages.updater.ShowUpdaterDialog import com.abdownloadmanager.desktop.ui.widget.* import com.abdownloadmanager.desktop.utils.* -import com.abdownloadmanager.utils.compose.ProvideDebugInfo +import com.abdownloadmanager.shared.utils.ProvideSizeAndSpeedUnit +import com.abdownloadmanager.shared.utils.ui.ProvideDebugInfo +import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.localizationmanager.LanguageManager +import ir.amirab.util.desktop.systemtray.IComposeSystemTray import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import kotlinx.coroutines.withTimeout @@ -63,9 +68,8 @@ object Ui : KoinComponent { ) { ProvideGlobalExceptionHandler(globalAppExceptionHandler) { ProvideSizeUnits(appComponent) { - val trayState = rememberTrayState() HandleEffectsForApp(appComponent) - SystemTray(appComponent, trayState) + SystemTray(appComponent) val showHomeSlot = appComponent.showHomeSlot.collectAsState().value showHomeSlot.child?.instance?.let { HomeWindow(it, appComponent::closeHome) @@ -138,13 +142,11 @@ private fun HandleEffectsForApp(appComponent: AppComponent) { @Composable private fun ApplicationScope.SystemTray( component: AppComponent, - trayState: TrayState, ) { - ComposeTray( - icon = MyIcons.appIcon.rememberPainter(), + IComposeSystemTray.Instance.ComposeSystemTray( + icon = MyIcons.appIcon, onClick = showDownloadList, - tooltip = "Ab Download Manager", - state = trayState, + title = AppInfo.displayName.asStringSource(), menu = remember { buildMenu { +showDownloadList diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/error/ErrorUi.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/error/ErrorUi.kt index d0ec232..4457c15 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/error/ErrorUi.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/error/ErrorUi.kt @@ -1,11 +1,11 @@ package com.abdownloadmanager.desktop.ui.error -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.util.ScreenSurface -import com.abdownloadmanager.desktop.ui.widget.ActionButton +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.desktop.window.custom.WindowTitle +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.utils.ui.widget.ScreenSurface +import com.abdownloadmanager.shared.ui.widget.ActionButton import com.abdownloadmanager.desktop.utils.AppInfo import com.abdownloadmanager.desktop.utils.ClipboardUtil import androidx.compose.foundation.background @@ -13,14 +13,13 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.verticalScroll -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/Sizing.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/Sizing.kt deleted file mode 100644 index 3cbb726..0000000 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/Sizing.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.abdownloadmanager.desktop.ui.theme - -import androidx.compose.runtime.Composable -import androidx.compose.runtime.Stable -import androidx.compose.runtime.compositionLocalOf -import androidx.compose.runtime.staticCompositionLocalOf -import androidx.compose.ui.unit.Density -import androidx.compose.ui.unit.TextUnit - -val LocalSystemDensity = staticCompositionLocalOf { null } -val LocalUiScale = staticCompositionLocalOf { null } - -val LocalTextSizes = compositionLocalOf { - error("LocalTextSizes not provided") -} - -val myTextSizes - @Composable - get() = LocalTextSizes.current - -@Stable -data class TextSizes( - val xs: TextUnit, - val sm: TextUnit, - val base: TextUnit, - val lg: TextUnit, - val xl: TextUnit, -) \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/util/Hovered.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/util/Hovered.kt deleted file mode 100644 index feb86a1..0000000 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/util/Hovered.kt +++ /dev/null @@ -1,53 +0,0 @@ -package com.abdownloadmanager.desktop.ui.util - -import androidx.compose.foundation.hoverable -import androidx.compose.foundation.interaction.HoverInteraction -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.Stable -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier -import androidx.compose.ui.composed -import androidx.compose.ui.input.pointer.PointerEventType -import androidx.compose.ui.input.pointer.pointerInput -import jdk.jfr.Enabled -import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.filterIsInstance -import kotlinx.coroutines.flow.launchIn -import kotlinx.coroutines.flow.onEach - -@Stable -class HoveredState { - val isHovered = mutableStateOf(false) -} - -fun Modifier.listenToHoveredState( - hoveredState: HoveredState, - enabled: Boolean=true -): Modifier { - return composed { - val mis= remember{ - MutableInteractionSource() - } - LaunchedEffect(Unit){ - mis.interactions.filterIsInstance() - .onEach { - when(it){ - is HoverInteraction.Enter->{ - hoveredState.isHovered.value=true - } - is HoverInteraction.Exit->{ - hoveredState.isHovered.value=false - } - else->{ - - } - } - }.launchIn(this) - } - - hoverable(mis,enabled) - } -} - diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ConfirmDialog.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ConfirmDialog.kt index 845c0a4..86cece4 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ConfirmDialog.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ConfirmDialog.kt @@ -1,11 +1,11 @@ package com.abdownloadmanager.desktop.ui.widget -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.desktop.window.custom.WindowTitle +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -18,7 +18,10 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import com.abdownloadmanager.shared.ui.widget.ActionButton +import com.abdownloadmanager.shared.ui.widget.ActionContainer +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale import com.abdownloadmanager.resources.Res import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.resources.myStringResource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MessageDialogModel.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MessageDialogModel.kt index 701cdf1..3f160af 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MessageDialogModel.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MessageDialogModel.kt @@ -1,12 +1,12 @@ package com.abdownloadmanager.desktop.ui.widget import com.abdownloadmanager.desktop.AppComponent -import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes +import com.abdownloadmanager.desktop.window.custom.CustomWindow +import com.abdownloadmanager.desktop.window.custom.WindowTitle +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -19,7 +19,9 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.rememberWindowState -import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import com.abdownloadmanager.shared.ui.widget.ActionButton +import com.abdownloadmanager.shared.ui.widget.Text +import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale import com.abdownloadmanager.resources.Res import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.resources.myStringResource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/CellPadding.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/CellPadding.kt deleted file mode 100644 index 57798d3..0000000 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/CellPadding.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.abdownloadmanager.desktop.ui.widget.customtable - -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.runtime.compositionLocalOf -import androidx.compose.ui.unit.dp - - diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/tray/MyTray.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/tray/MyTray.kt deleted file mode 100644 index c91c07c..0000000 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/tray/MyTray.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.abdownloadmanager.desktop.ui.widget.tray - -import com.abdownloadmanager.desktop.ui.customwindow.BaseOptionDialog -import com.abdownloadmanager.desktop.ui.widget.menu.SubMenu -import ir.amirab.util.compose.action.MenuItem -import com.abdownloadmanager.desktop.utils.windowUtil.moveSafe -import androidx.compose.runtime.* -import androidx.compose.ui.graphics.painter.Painter -import androidx.compose.ui.unit.* -import androidx.compose.ui.window.* -import ir.amirab.util.desktop.systemtray.AwtTray - -@Composable -fun ComposeTray( - tooltip: String, - icon: Painter, - state: TrayState = rememberTrayState(), - onClick: () -> Unit, - menu: List, -) { - var popUpPosition by remember { mutableStateOf(null as DpOffset?) } - val closeOptions = { popUpPosition = null } - AwtTray( - tooltip = tooltip, - icon = icon, - state = state, - onClick = onClick, - onRightClick = { - popUpPosition = it - } - ) - popUpPosition.let { position -> - if(position!=null){ - TrayOptions( - position, - closeOptions, - ) { - SubMenu(menu,closeOptions) - } - } - } -} - -@Composable -private fun TrayOptions( - position: DpOffset, - onRequestClose: () -> Unit, - content: @Composable () -> Unit, -) { - val state = rememberDialogState( - size = DpSize.Unspecified, - position = WindowPosition.Absolute( - x = position.x, - y = position.y, - ) - ) - - BaseOptionDialog( - onCloseRequest = onRequestClose, - resizeable = false, - state = state, - content = { - LaunchedEffect(window){ - window.moveSafe(position) - } - content() - } - ) -} diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ContainsShortcuts.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ContainsShortcuts.kt deleted file mode 100644 index c5b4bc5..0000000 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ContainsShortcuts.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.abdownloadmanager.desktop.utils - -import com.abdownloadmanager.desktop.actions.ShortcutManager - -interface ContainsShortcuts { - val shortcutManager:ShortcutManager -} diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/DesktopShortcutManager.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/DesktopShortcutManager.kt new file mode 100644 index 0000000..dfe2d06 --- /dev/null +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/DesktopShortcutManager.kt @@ -0,0 +1,64 @@ +package com.abdownloadmanager.desktop.utils + +import androidx.compose.ui.awt.awtEventOrNull +import androidx.compose.ui.input.key.KeyEvent +import com.abdownloadmanager.shared.utils.PlatformKeyStroke +import com.abdownloadmanager.shared.utils.ShortcutManager +import java.awt.Toolkit +import java.awt.event.InputEvent +import javax.swing.KeyStroke + +class DesktopShortcutManager : ShortcutManager() { + override fun stringToKeyStroke(keyStrokeString: String): PlatformKeyStroke { + return KeyStroke + .getKeyStroke(keyStrokeString) + .asPlatformKeyStroke() + } + + override fun getKeyStrokeFromEvent(s: KeyEvent): PlatformKeyStroke? { + val awtEvent = s.awtEventOrNull ?: return null + return runCatching { + KeyStroke.getKeyStrokeForEvent(awtEvent) + }.getOrNull()?.asPlatformKeyStroke() + } +} + +data class DesktopKeyStroke( + val awtKeyStroke: KeyStroke, +) : PlatformKeyStroke { + override fun getModifiers(): List { + return KeyUtil.getModifiers(awtKeyStroke.modifiers) + } + + override fun getKeyText(): String { + return KeyUtil.getKeyText(awtKeyStroke.keyCode) + } +} + +fun KeyStroke.asPlatformKeyStroke() = DesktopKeyStroke(this) + +object KeyUtil { + fun getKeyText(keyCode: Int): String { + return java.awt.event.KeyEvent.getKeyText(keyCode) + } + + fun getModifiers(modifiers: Int): List { + return buildList { + if (modifiers and InputEvent.META_DOWN_MASK != 0) { + add(Toolkit.getProperty("AWT.meta", "Meta")) + } + if (modifiers and InputEvent.CTRL_DOWN_MASK != 0) { + add(Toolkit.getProperty("AWT.control", "Ctrl")) + } + if (modifiers and InputEvent.ALT_DOWN_MASK != 0) { + add(Toolkit.getProperty("AWT.alt", "Alt")) + } + if (modifiers and InputEvent.SHIFT_DOWN_MASK != 0) { + add(Toolkit.getProperty("AWT.shift", "Shift")) + } + if (modifiers and InputEvent.ALT_GRAPH_DOWN_MASK != 0) { + add(Toolkit.getProperty("AWT.altGraph", "Alt Graph")) + } + } + } +} \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/SystemThemeDetector.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/DesktopSystemThemeDetector.kt similarity index 71% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/SystemThemeDetector.kt rename to desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/DesktopSystemThemeDetector.kt index f953372..c56b532 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/SystemThemeDetector.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/DesktopSystemThemeDetector.kt @@ -1,13 +1,14 @@ -package com.abdownloadmanager.desktop.ui.theme +package com.abdownloadmanager.desktop.utils +import com.abdownloadmanager.shared.utils.ui.theme.ISystemThemeDetector import com.jthemedetecor.OsThemeDetector import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.emitAll import kotlinx.coroutines.flow.flow -class SystemThemeDetector { - val isSupported by lazy { +class DesktopSystemThemeDetector : ISystemThemeDetector { + override val isSupported by lazy { OsThemeDetector.isSupported() } private val detector by lazy { OsThemeDetector.getDetector() } @@ -21,8 +22,8 @@ class SystemThemeDetector { detector.removeListener(listener) } } - val isDark = detector.isDark - val systemThemeFlow = flow { + override val isDark = detector.isDark + override val systemThemeFlow = flow { if (!isSupported){ return@flow } diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/GlobalAppExceptionHandler.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/GlobalAppExceptionHandler.kt index 07fbe84..f3e29d2 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/GlobalAppExceptionHandler.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/GlobalAppExceptionHandler.kt @@ -1,12 +1,11 @@ package com.abdownloadmanager.desktop.utils import com.abdownloadmanager.desktop.ui.error.ErrorWindow -import com.abdownloadmanager.desktop.ui.theme.ABDownloaderTheme +import com.abdownloadmanager.shared.ui.theme.ABDownloaderTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.collectAsState -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.window.* import com.abdownloadmanager.desktop.pages.settings.ThemeManager import kotlinx.coroutines.flow.MutableStateFlow diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/KeyUtil.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/KeyUtil.kt deleted file mode 100644 index fb6046d..0000000 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/KeyUtil.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.abdownloadmanager.desktop.utils - -import java.awt.Toolkit -import java.awt.event.InputEvent -import java.awt.event.KeyEvent - -object KeyUtil{ - fun getKeyText(keyCode:Int): String { - return KeyEvent.getKeyText(keyCode) - } - fun getModifiers(modifiers:Int): List { - return buildList { - if (modifiers and InputEvent.META_DOWN_MASK != 0) { - add(Toolkit.getProperty("AWT.meta", "Meta")) - } - if (modifiers and InputEvent.CTRL_DOWN_MASK != 0) { - add(Toolkit.getProperty("AWT.control", "Ctrl")) - } - if (modifiers and InputEvent.ALT_DOWN_MASK != 0) { - add(Toolkit.getProperty("AWT.alt", "Alt")) - } - if (modifiers and InputEvent.SHIFT_DOWN_MASK != 0) { - add(Toolkit.getProperty("AWT.shift", "Shift")) - } - if (modifiers and InputEvent.ALT_GRAPH_DOWN_MASK != 0) { - add(Toolkit.getProperty("AWT.altGraph", "Alt Graph")) - } - } - } -} \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/UiConstants.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/UiConstants.kt deleted file mode 100644 index a2431f4..0000000 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/UiConstants.kt +++ /dev/null @@ -1 +0,0 @@ -const val DOUBLE_CLICK_DELAY = 500L \ No newline at end of file diff --git a/desktop/shared/build.gradle.kts b/desktop/shared/build.gradle.kts index 5179e1e..69d98c6 100644 --- a/desktop/shared/build.gradle.kts +++ b/desktop/shared/build.gradle.kts @@ -4,6 +4,7 @@ plugins{ } dependencies { + implementation(project(":shared:app")) implementation(project(":shared:app-utils")) implementation(project(":shared:utils")) } \ No newline at end of file diff --git a/desktop/tray/build.gradle.kts b/desktop/tray/build.gradle.kts deleted file mode 100644 index 036e8d1..0000000 --- a/desktop/tray/build.gradle.kts +++ /dev/null @@ -1,7 +0,0 @@ -plugins{ - id(MyPlugins.kotlin) - id(MyPlugins.composeDesktop) -} -dependencies{ - implementation(project(":desktop:shared")) -} \ No newline at end of file diff --git a/desktop/tray/common/build.gradle.kts b/desktop/tray/common/build.gradle.kts new file mode 100644 index 0000000..ab44d26 --- /dev/null +++ b/desktop/tray/common/build.gradle.kts @@ -0,0 +1,9 @@ +plugins{ + id(MyPlugins.kotlin) + id(MyPlugins.composeDesktop) +} +dependencies{ + api(project(":desktop:shared")) + api(project(":desktop:app-utils")) + api(project(":shared:app-utils")) +} \ No newline at end of file diff --git a/desktop/tray/common/src/main/kotlin/ir/amirab/util/desktop/systemtray/IComposeSystemTray.kt b/desktop/tray/common/src/main/kotlin/ir/amirab/util/desktop/systemtray/IComposeSystemTray.kt new file mode 100644 index 0000000..0e606ce --- /dev/null +++ b/desktop/tray/common/src/main/kotlin/ir/amirab/util/desktop/systemtray/IComposeSystemTray.kt @@ -0,0 +1,29 @@ +package ir.amirab.util.desktop.systemtray + +import androidx.compose.runtime.Composable +import ir.amirab.util.compose.IconSource +import ir.amirab.util.compose.StringSource +import ir.amirab.util.compose.action.MenuItem +import java.util.ServiceLoader + +interface IComposeSystemTray { + @Composable + fun ComposeSystemTray( + icon: IconSource, + title: StringSource, + menu: List, + onClick: () -> Unit, + ) + + companion object { + val Instance by lazy { + requireNotNull( + ServiceLoader + .load(IComposeSystemTray::class.java) + .firstOrNull() + ) { + "Implementation for IComposeSystemTray not found" + } + } + } +} \ No newline at end of file diff --git a/desktop/tray/linux/build.gradle.kts b/desktop/tray/linux/build.gradle.kts new file mode 100644 index 0000000..f877a4f --- /dev/null +++ b/desktop/tray/linux/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + id(MyPlugins.kotlin) + id(MyPlugins.composeDesktop) + id(Plugins.ksp) +} +dependencies { + api(project(":desktop:tray:common")) + ksp(libs.autoService.ksp) + implementation(libs.autoService.annoations) +} \ No newline at end of file diff --git a/desktop/tray/linux/src/main/kotlin/ir/amirab/util/desktop/systemtray/impl/ComposeSystemTrayForLinux.kt b/desktop/tray/linux/src/main/kotlin/ir/amirab/util/desktop/systemtray/impl/ComposeSystemTrayForLinux.kt new file mode 100644 index 0000000..231c57d --- /dev/null +++ b/desktop/tray/linux/src/main/kotlin/ir/amirab/util/desktop/systemtray/impl/ComposeSystemTrayForLinux.kt @@ -0,0 +1,14 @@ +package ir.amirab.util.desktop.systemtray.impl + +import com.google.auto.service.AutoService +import ir.amirab.util.compose.IconSource +import ir.amirab.util.compose.StringSource +import ir.amirab.util.compose.action.MenuItem +import ir.amirab.util.desktop.systemtray.IComposeSystemTray + +@AutoService(IComposeSystemTray::class) +class ComposeSystemTrayForLinux : IComposeSystemTray { + override fun ComposeSystemTray(icon: IconSource, title: StringSource, menu: List, onClick: () -> Unit) { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/desktop/tray/windows/build.gradle.kts b/desktop/tray/windows/build.gradle.kts new file mode 100644 index 0000000..f877a4f --- /dev/null +++ b/desktop/tray/windows/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + id(MyPlugins.kotlin) + id(MyPlugins.composeDesktop) + id(Plugins.ksp) +} +dependencies { + api(project(":desktop:tray:common")) + ksp(libs.autoService.ksp) + implementation(libs.autoService.annoations) +} \ No newline at end of file diff --git a/desktop/tray/src/main/kotlin/ir/amirab/util/desktop/systemtray/AwtTray.kt b/desktop/tray/windows/src/main/kotlin/ir/amirab/util/desktop/systemtray/impl/AwtTray.kt similarity index 74% rename from desktop/tray/src/main/kotlin/ir/amirab/util/desktop/systemtray/AwtTray.kt rename to desktop/tray/windows/src/main/kotlin/ir/amirab/util/desktop/systemtray/impl/AwtTray.kt index 146e671..adbea96 100644 --- a/desktop/tray/src/main/kotlin/ir/amirab/util/desktop/systemtray/AwtTray.kt +++ b/desktop/tray/windows/src/main/kotlin/ir/amirab/util/desktop/systemtray/impl/AwtTray.kt @@ -1,18 +1,13 @@ -package ir.amirab.util.desktop.systemtray +package ir.amirab.util.desktop.systemtray.impl import androidx.compose.runtime.* import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.toAwtImage import androidx.compose.ui.unit.DpOffset -import androidx.compose.ui.window.Notification -import androidx.compose.ui.window.TrayState import androidx.compose.ui.window.isTraySupported -import androidx.compose.ui.window.rememberTrayState import ir.amirab.util.desktop.GlobalDensity import ir.amirab.util.desktop.GlobalLayoutDirection import ir.amirab.util.desktop.trayIconSize -import kotlinx.coroutines.flow.launchIn -import kotlinx.coroutines.flow.onEach import java.awt.SystemTray import java.awt.TrayIcon import java.awt.event.ActionListener @@ -20,10 +15,9 @@ import java.awt.event.MouseEvent import java.awt.event.MouseListener @Composable -fun AwtTray( +internal fun AwtTray( tooltip: String, icon: Painter, - state: TrayState = rememberTrayState(), onClick: () -> Unit, //it is a dp offset on the screen onRightClick: (DpOffset) -> Unit, @@ -57,11 +51,11 @@ fun AwtTray( val doubleClickListener = object : MouseListener { override fun mouseClicked(p0: MouseEvent?) { when (p0?.button) { - 1-> currentOnAction() + 1 -> currentOnAction() 3 -> { - with(density){ + with(density) { currentRightClick( - DpOffset(p0.x.toDp(),p0.y.toDp()) + DpOffset(p0.x.toDp(), p0.y.toDp()) ) } } @@ -90,8 +84,6 @@ fun AwtTray( if (trayIcon.toolTip != tooltip) trayIcon.toolTip = tooltip } - val coroutineScope = rememberCoroutineScope() - DisposableEffect(Unit) { val systemTray = kotlin.runCatching { // some linux users reporting that system tray will not support by distro and throws exception after entering to lock screen @@ -99,12 +91,7 @@ fun AwtTray( SystemTray.getSystemTray() }.getOrNull() - if (systemTray!=null){ - systemTray.add(trayIcon) - state.notificationFlow - .onEach(trayIcon::displayMessage) - .launchIn(coroutineScope) - } + systemTray?.add(trayIcon) onDispose { // don't get hard! @@ -115,14 +102,3 @@ fun AwtTray( } } } - -private fun TrayIcon.displayMessage(notification: Notification) { - val messageType = when (notification.type) { - Notification.Type.None -> TrayIcon.MessageType.NONE - Notification.Type.Info -> TrayIcon.MessageType.INFO - Notification.Type.Warning -> TrayIcon.MessageType.WARNING - Notification.Type.Error -> TrayIcon.MessageType.ERROR - } - - displayMessage(notification.title, notification.message, messageType) -} \ No newline at end of file diff --git a/desktop/tray/windows/src/main/kotlin/ir/amirab/util/desktop/systemtray/impl/ComposeSystemTrayForWindows.kt b/desktop/tray/windows/src/main/kotlin/ir/amirab/util/desktop/systemtray/impl/ComposeSystemTrayForWindows.kt new file mode 100644 index 0000000..42222bf --- /dev/null +++ b/desktop/tray/windows/src/main/kotlin/ir/amirab/util/desktop/systemtray/impl/ComposeSystemTrayForWindows.kt @@ -0,0 +1,74 @@ +package ir.amirab.util.desktop.systemtray.impl + +import androidx.compose.runtime.* +import androidx.compose.ui.unit.DpOffset +import androidx.compose.ui.unit.DpSize +import androidx.compose.ui.window.WindowPosition +import androidx.compose.ui.window.rememberDialogState +import com.abdownloadmanager.shared.ui.widget.menu.SubMenu +import ir.amirab.util.compose.IconSource +import ir.amirab.util.compose.StringSource +import ir.amirab.util.compose.action.MenuItem +import ir.amirab.util.desktop.systemtray.IComposeSystemTray +import com.abdownloadmanager.desktop.window.custom.BaseOptionDialog +import com.abdownloadmanager.desktop.window.moveSafe +import com.google.auto.service.AutoService + +@AutoService(IComposeSystemTray::class) +class ComposeSystemTrayForWindows : IComposeSystemTray { + @Composable + override fun ComposeSystemTray( + icon: IconSource, + title: StringSource, + menu: List, + onClick: () -> Unit, + ) { + var popUpPosition by remember { mutableStateOf(null as DpOffset?) } + val closeOptions = { popUpPosition = null } + AwtTray( + tooltip = title.rememberString(), + icon = icon.rememberPainter(), + onClick = onClick, + onRightClick = { + popUpPosition = it + } + ) + popUpPosition.let { position -> + if (position != null) { + TrayOptions( + position, + closeOptions, + ) { + SubMenu(menu, closeOptions) + } + } + } + } +} + +@Composable +private fun TrayOptions( + position: DpOffset, + onRequestClose: () -> Unit, + content: @Composable () -> Unit, +) { + val state = rememberDialogState( + size = DpSize.Unspecified, + position = WindowPosition.Absolute( + x = position.x, + y = position.y, + ) + ) + + BaseOptionDialog( + onCloseRequest = onRequestClose, + resizeable = false, + state = state, + content = { + LaunchedEffect(window) { + window.moveSafe(position) + } + content() + } + ) +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 71915fa..18cfbce 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -27,6 +27,8 @@ jgit = "6.9.0.202403050737-r" osThemeDetector = "3.9.1" kotlinFileWatcher = "1.3.0" markdownRenderer = "0.27.0" +autoServiceKsp = "1.2.0" +autoService = "1.1.1" [libraries] @@ -123,6 +125,9 @@ handlebarsJava = "com.github.jknack:handlebars:4.4.0" kotlinFileWatcher = { module = "io.github.irgaly.kfswatch:kfswatch", version.ref = "kotlinFileWatcher" } +autoService-ksp = { module = "dev.zacsweers.autoservice:auto-service-ksp", version.ref = "autoServiceKsp" } +autoService-annoations = { module = "com.google.auto.service:auto-service-annotations", version.ref = "autoService" } + [plugins] kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } compose = { id = "org.jetbrains.compose", version.ref = "compose" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 861f22f..c7526b7 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -16,13 +16,17 @@ dependencyResolutionManagement { rootProject.name = "ABDownloadManager" include("desktop:app") +include("desktop:app-utils") include("desktop:custom-window-frame") include("desktop:shared") -include("desktop:tray") +include("desktop:tray:common") +include("desktop:tray:windows") +include("desktop:tray:linux") include("downloader:core") include("downloader:monitor") include("integration:server") include("shared:utils") +include("shared:app") include("shared:app-utils") include("shared:compose-utils") include("shared:resources") diff --git a/shared/app-utils/build.gradle.kts b/shared/app-utils/build.gradle.kts index 4ea687c..cd6acdd 100644 --- a/shared/app-utils/build.gradle.kts +++ b/shared/app-utils/build.gradle.kts @@ -4,17 +4,26 @@ plugins { id(Plugins.Kotlin.serialization) } dependencies { - implementation(project(":downloader:core")) - implementation(project(":downloader:monitor")) + api(project(":downloader:core")) + api(project(":downloader:monitor")) api(project(":shared:config")) api(project(":shared:utils")) api(project(":shared:compose-utils")) - implementation(libs.androidx.datastore) - implementation(libs.kotlin.coroutines.core) - implementation(libs.kotlin.serialization.json) + api(project(":shared:resources")) + + api(libs.decompose) + + api(libs.androidx.datastore) + api(libs.kotlin.coroutines.core) + api(libs.kotlin.serialization.json) implementation(libs.kotlinFileWatcher) - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.ui) + api(libs.koin.core) + + api(compose.runtime) + api(compose.foundation) + api(compose.ui) + + //because we don't have material design, but we use ripple effect + implementation(libs.compose.material.rippleEffect) } \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/BaseComponent.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BaseComponent.kt similarity index 83% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/BaseComponent.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BaseComponent.kt index 2c5eb4b..957d6d4 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/BaseComponent.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BaseComponent.kt @@ -1,6 +1,5 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils -import com.abdownloadmanager.desktop.pages.home.HomeComponent import com.arkivanov.decompose.ComponentContext import com.arkivanov.essenty.lifecycle.doOnDestroy import kotlinx.coroutines.CoroutineScope diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BaseConstants.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BaseConstants.kt new file mode 100644 index 0000000..1d0c06b --- /dev/null +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BaseConstants.kt @@ -0,0 +1,15 @@ +package com.abdownloadmanager.shared.utils + +interface BaseConstants { + val appName: String + val appDisplayName: String + val packageName: String + val projectWebsite: String + val projectSourceCode: String + val projectTranslations: String + val projectGithubOwner: String + val projectGithubRepo: String + val browserIntegrations: List + val telegramGroupUrl: String + val telegramChannelUrl: String +} \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/BaseSettings.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BaseSettings.kt similarity index 97% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/BaseSettings.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BaseSettings.kt index 39d48b7..3343097 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/BaseSettings.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BaseSettings.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import androidx.datastore.core.DataStore import arrow.optics.Lens diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/BottomSheet.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BottomSheet.kt similarity index 98% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/BottomSheet.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BottomSheet.kt index 1143aaa..2f20e07 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/BottomSheet.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BottomSheet.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import androidx.compose.animation.* import androidx.compose.foundation.background diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/BrowserIntegrationModel.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BrowserIntegrationModel.kt similarity index 70% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/BrowserIntegrationModel.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BrowserIntegrationModel.kt index ec11c3d..99ae2e4 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/BrowserIntegrationModel.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/BrowserIntegrationModel.kt @@ -1,16 +1,16 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import androidx.compose.runtime.Immutable import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.desktop.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons sealed class BrowserType( val code:String ){ - data object Firefox:BrowserType("firefox") - data object Chrome:BrowserType("chrome") - data object Opera:BrowserType("opera") - data object Edge:BrowserType("edge") + data object Firefox : BrowserType("firefox") + data object Chrome : BrowserType("chrome") + data object Opera : BrowserType("opera") + data object Edge : BrowserType("edge") } fun BrowserType.getName():String{ return when(this){ @@ -30,6 +30,6 @@ fun BrowserType.getIcon(): IconSource { } @Immutable data class BrowserIntegrationModel( - val type:BrowserType, + val type: BrowserType, val url:String, ) \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ColorUtils.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ColorUtils.kt similarity index 98% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ColorUtils.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ColorUtils.kt index 292a019..61ea374 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ColorUtils.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ColorUtils.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import androidx.compose.ui.graphics.Color diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ContainsShortcuts.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ContainsShortcuts.kt new file mode 100644 index 0000000..35c9b7c --- /dev/null +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ContainsShortcuts.kt @@ -0,0 +1,5 @@ +package com.abdownloadmanager.shared.utils + +interface ContainsShortcuts { + val shortcutManager: ShortcutManager +} diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/DownloadFoldersRegistry.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/DownloadFoldersRegistry.kt similarity index 93% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/DownloadFoldersRegistry.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/DownloadFoldersRegistry.kt index 1d230cd..7c7010f 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/DownloadFoldersRegistry.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/DownloadFoldersRegistry.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils +package com.abdownloadmanager.shared.utils import java.io.File diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/DownloadItemOpener.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/DownloadItemOpener.kt similarity index 86% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/DownloadItemOpener.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/DownloadItemOpener.kt index 7694994..c5d1d38 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/DownloadItemOpener.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/DownloadItemOpener.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import ir.amirab.downloader.downloaditem.DownloadItem diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/DownloadLinkCecker.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/DownloadLinkCecker.kt similarity index 94% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/DownloadLinkCecker.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/DownloadLinkCecker.kt index fd03c09..068e0f4 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/DownloadLinkCecker.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/DownloadLinkCecker.kt @@ -1,9 +1,7 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils -import com.abdownloadmanager.utils.DownloadSystem import ir.amirab.util.osfileutil.FileUtils import ir.amirab.util.flow.mapStateFlow -import com.abdownloadmanager.utils.isValidUrl import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.* diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/DownloadSystem.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/DownloadSystem.kt similarity index 97% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/DownloadSystem.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/DownloadSystem.kt index d504a29..c6eff6a 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/DownloadSystem.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/DownloadSystem.kt @@ -1,8 +1,8 @@ -package com.abdownloadmanager.utils +package com.abdownloadmanager.shared.utils -import com.abdownloadmanager.utils.category.CategoryItemWithId -import com.abdownloadmanager.utils.category.CategoryManager -import com.abdownloadmanager.utils.category.CategorySelectionMode +import com.abdownloadmanager.shared.utils.category.CategoryItemWithId +import com.abdownloadmanager.shared.utils.category.CategoryManager +import com.abdownloadmanager.shared.utils.category.CategorySelectionMode import ir.amirab.downloader.DownloadManager import ir.amirab.downloader.db.IDownloadListDb import ir.amirab.downloader.downloaditem.* diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ExceptionToString.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ExceptionToString.kt similarity index 75% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ExceptionToString.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ExceptionToString.kt index 3719405..89516f3 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ExceptionToString.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ExceptionToString.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils fun exceptionToString(exception: Exception): String { return exception.message?:exception::class.qualifiedName?:"Unknown Error" diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/FileIconProvider.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/FileIconProvider.kt similarity index 85% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/FileIconProvider.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/FileIconProvider.kt index 1dfdc81..084b20e 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/FileIconProvider.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/FileIconProvider.kt @@ -1,13 +1,13 @@ -package com.abdownloadmanager.utils +package com.abdownloadmanager.shared.utils import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.remember -import com.abdownloadmanager.utils.category.CategoryManager -import com.abdownloadmanager.utils.category.DefaultCategories -import com.abdownloadmanager.utils.category.iconSource -import com.abdownloadmanager.utils.compose.IMyIcons +import com.abdownloadmanager.shared.utils.category.CategoryManager +import com.abdownloadmanager.shared.utils.category.DefaultCategories +import com.abdownloadmanager.shared.utils.category.iconSource +import com.abdownloadmanager.shared.utils.ui.IMyIcons import ir.amirab.util.compose.IconSource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/FileNameValidator.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/FileNameValidator.kt similarity index 86% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/FileNameValidator.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/FileNameValidator.kt index 1957401..48bc516 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/FileNameValidator.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/FileNameValidator.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import java.io.File diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/IPUtils.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/IPUtils.kt similarity index 98% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/IPUtils.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/IPUtils.kt index 96d5af2..36bc7d0 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/IPUtils.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/IPUtils.kt @@ -1,7 +1,7 @@ @file:OptIn(ExperimentalUnsignedTypes::class) @file:Suppress("unused", "MemberVisibilityCanBePrivate") -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import java.net.NetworkInterface diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/IsValidUrl.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/IsValidUrl.kt similarity index 71% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/IsValidUrl.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/IsValidUrl.kt index 4c62483..a2a67c1 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/IsValidUrl.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/IsValidUrl.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils +package com.abdownloadmanager.shared.utils import java.net.URL diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/LinkChecker.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/LinkChecker.kt similarity index 96% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/LinkChecker.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/LinkChecker.kt index 9a4c342..da2d534 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/LinkChecker.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/LinkChecker.kt @@ -1,9 +1,8 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import ir.amirab.downloader.connection.DownloaderClient import ir.amirab.downloader.connection.response.ResponseInfo import ir.amirab.downloader.downloaditem.DownloadCredentials -import com.abdownloadmanager.utils.isValidUrl import ir.amirab.downloader.downloaditem.IDownloadCredentials import ir.amirab.util.UrlUtils import kotlinx.coroutines.flow.MutableStateFlow diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/Platform.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/Platform.kt similarity index 58% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/Platform.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/Platform.kt index 6fdb5c0..d86116b 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/Platform.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/Platform.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils //expect object Platform { // val type: OSInfo.OSType diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/PlatformKeyStroke.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/PlatformKeyStroke.kt new file mode 100644 index 0000000..f6e333a --- /dev/null +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/PlatformKeyStroke.kt @@ -0,0 +1,6 @@ +package com.abdownloadmanager.shared.utils + +interface PlatformKeyStroke { + fun getModifiers(): List + fun getKeyText(): String +} \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/PopUpContainer.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/PopUpContainer.kt similarity index 95% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/PopUpContainer.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/PopUpContainer.kt index 20714a3..7b6e936 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/PopUpContainer.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/PopUpContainer.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import androidx.compose.runtime.* import java.util.* diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/RememberDotLoading.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/RememberDotLoading.kt similarity index 93% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/RememberDotLoading.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/RememberDotLoading.kt index 6c3678d..c3cd2ca 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/RememberDotLoading.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/RememberDotLoading.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import androidx.compose.animation.core.* import androidx.compose.runtime.Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/Responsive.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/Responsive.kt similarity index 97% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/Responsive.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/Responsive.kt index 87926c8..c57c4d7 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/Responsive.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/Responsive.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.BoxWithConstraintsScope diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ShortcutManager.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ShortcutManager.kt new file mode 100644 index 0000000..2003ffc --- /dev/null +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ShortcutManager.kt @@ -0,0 +1,46 @@ +package com.abdownloadmanager.shared.utils + +import androidx.compose.runtime.compositionLocalOf +import androidx.compose.ui.input.key.KeyEvent + +abstract class ShortcutManager { + private val shortcuts = mutableMapOf Unit>() + fun register(keyStroke: PlatformKeyStroke, action: () -> Unit) { + shortcuts[keyStroke] = action + } + + abstract fun stringToKeyStroke(keyStrokeString: String): PlatformKeyStroke + abstract fun getKeyStrokeFromEvent(s: KeyEvent): PlatformKeyStroke? + + infix fun String.to(action: () -> Unit) { + register(stringToKeyStroke(this), action) + } + + fun executeShortcut( + keyStroke: PlatformKeyStroke, + ): Boolean { + val action = shortcuts[keyStroke] ?: return false + runCatching { + action() + } + return true + } + + fun getShortCutOf(action: () -> Unit): PlatformKeyStroke? { + return shortcuts.firstNotNullOfOrNull { + if (it.value == action) { + it.key + } else null + } + } + + fun handle(event: KeyEvent): Boolean { + val keyStroke = getKeyStrokeFromEvent(event) ?: return false + executeShortcut(keyStroke) + return true + } +} + +val LocalShortCutManager = compositionLocalOf { + null as ShortcutManager? +} \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ShouldValidate.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ShouldValidate.kt similarity index 70% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ShouldValidate.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ShouldValidate.kt index d8b96d6..7b6ca1f 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ShouldValidate.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ShouldValidate.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import kotlinx.coroutines.flow.StateFlow diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/SizeUtil.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/SizeUtil.kt similarity index 97% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/SizeUtil.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/SizeUtil.kt index fb90396..9c08e9b 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/SizeUtil.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/SizeUtil.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import ir.amirab.util.datasize.CommonSizeConvertConfigs import ir.amirab.util.datasize.ConvertSizeConfig diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/StateUtils.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/StateUtils.kt similarity index 97% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/StateUtils.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/StateUtils.kt index e076bf7..e226704 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/StateUtils.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/StateUtils.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import androidx.compose.runtime.* import ir.amirab.util.flow.DerivedStateFlow diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/StringUtils.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/StringUtils.kt similarity index 80% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/StringUtils.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/StringUtils.kt index 5202237..d755363 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/StringUtils.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/StringUtils.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils fun String.takeOrAppendDots(takeCount: Int): String { val take = take(takeCount) diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/TimeUtil.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/TimeUtil.kt similarity index 98% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/TimeUtil.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/TimeUtil.kt index 3c5a4d0..029c7c5 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/TimeUtil.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/TimeUtil.kt @@ -1,9 +1,8 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import androidx.compose.runtime.* import com.abdownloadmanager.resources.Res import ir.amirab.util.compose.StringSource -import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.asStringSourceWithARgs import kotlinx.coroutines.delay import kotlinx.coroutines.isActive diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/UiConstants.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/UiConstants.kt new file mode 100644 index 0000000..3eb463b --- /dev/null +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/UiConstants.kt @@ -0,0 +1,3 @@ +package com.abdownloadmanager.shared.utils + +const val DOUBLE_CLICK_DELAY = 500L \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ValueUtils.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ValueUtils.kt similarity index 87% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ValueUtils.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ValueUtils.kt index ab475a4..35b55a0 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/ValueUtils.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ValueUtils.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils +package com.abdownloadmanager.shared.utils import com.arkivanov.decompose.value.Value import kotlinx.coroutines.flow.MutableStateFlow diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/appinfo/PreviousVersion.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/appinfo/PreviousVersion.kt similarity index 93% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/appinfo/PreviousVersion.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/appinfo/PreviousVersion.kt index 48d798b..a70588f 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/appinfo/PreviousVersion.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/appinfo/PreviousVersion.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.appinfo +package com.abdownloadmanager.shared.utils.appinfo import io.github.z4kn4fein.semver.Version import java.io.File diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/autoremove/RemovedDownloadsFromDiskTracker.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/autoremove/RemovedDownloadsFromDiskTracker.kt similarity index 97% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/autoremove/RemovedDownloadsFromDiskTracker.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/autoremove/RemovedDownloadsFromDiskTracker.kt index d9f6717..1f41415 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/autoremove/RemovedDownloadsFromDiskTracker.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/autoremove/RemovedDownloadsFromDiskTracker.kt @@ -1,6 +1,6 @@ -package com.abdownloadmanager.utils.autoremove +package com.abdownloadmanager.shared.utils.autoremove -import com.abdownloadmanager.utils.DownloadSystem +import com.abdownloadmanager.shared.utils.DownloadSystem import io.github.irgaly.kfswatch.KfsDirectoryWatcher import io.github.irgaly.kfswatch.KfsEvent import ir.amirab.downloader.downloaditem.contexts.CanPerformRemove diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/Category.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/Category.kt similarity index 97% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/Category.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/Category.kt index b635d4b..1e3a7d6 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/Category.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/Category.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.category +package com.abdownloadmanager.shared.utils.category import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryFileStorage.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryFileStorage.kt similarity index 92% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryFileStorage.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryFileStorage.kt index b6bdcb8..6fbb86b 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryFileStorage.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryFileStorage.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.category +package com.abdownloadmanager.shared.utils.category import ir.amirab.downloader.db.TransactionalFileSaver import kotlinx.coroutines.sync.Mutex diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryItem.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryItem.kt similarity index 87% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryItem.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryItem.kt index 0d3400f..a935901 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryItem.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryItem.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.category +package com.abdownloadmanager.shared.utils.category import androidx.compose.runtime.Immutable diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryManager.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryManager.kt similarity index 99% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryManager.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryManager.kt index a8dd82c..762281f 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryManager.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryManager.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.category +package com.abdownloadmanager.shared.utils.category import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryManagerExtensions.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryManagerExtensions.kt similarity index 89% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryManagerExtensions.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryManagerExtensions.kt index b7765ae..854f5c2 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryManagerExtensions.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryManagerExtensions.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.category +package com.abdownloadmanager.shared.utils.category import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategorySelectionMode.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategorySelectionMode.kt similarity index 80% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategorySelectionMode.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategorySelectionMode.kt index 761520f..07ab8d6 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategorySelectionMode.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategorySelectionMode.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.category +package com.abdownloadmanager.shared.utils.category import androidx.compose.runtime.Immutable diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryStorage.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryStorage.kt similarity index 77% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryStorage.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryStorage.kt index d1a6873..c41112f 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/CategoryStorage.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/CategoryStorage.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.category +package com.abdownloadmanager.shared.utils.category interface CategoryStorage { suspend fun setCategories(categories: List) diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/DefaultCategories.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/DefaultCategories.kt similarity index 97% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/DefaultCategories.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/DefaultCategories.kt index 4cee588..5a31e8a 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/DefaultCategories.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/DefaultCategories.kt @@ -1,6 +1,6 @@ -package com.abdownloadmanager.utils.category +package com.abdownloadmanager.shared.utils.category -import com.abdownloadmanager.utils.compose.IMyIcons +import com.abdownloadmanager.shared.utils.ui.IMyIcons import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.uriOrNull import java.io.File diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/DownloadManagerCategoryItemProvider.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/DownloadManagerCategoryItemProvider.kt similarity index 89% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/DownloadManagerCategoryItemProvider.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/DownloadManagerCategoryItemProvider.kt index 5c4f663..0523fc8 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/DownloadManagerCategoryItemProvider.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/DownloadManagerCategoryItemProvider.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.category +package com.abdownloadmanager.shared.utils.category import ir.amirab.downloader.DownloadManager diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/ICategoryItemProvider.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/ICategoryItemProvider.kt similarity index 62% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/ICategoryItemProvider.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/ICategoryItemProvider.kt index 39c62de..59f29f7 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/ICategoryItemProvider.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/ICategoryItemProvider.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.category +package com.abdownloadmanager.shared.utils.category interface ICategoryItemProvider { suspend fun getAll(): List diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/InMemoryCategoryStorage.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/InMemoryCategoryStorage.kt similarity index 88% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/InMemoryCategoryStorage.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/InMemoryCategoryStorage.kt index 58b916f..31e45ac 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/category/InMemoryCategoryStorage.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/category/InMemoryCategoryStorage.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.category +package com.abdownloadmanager.shared.utils.category class InMemoryCategoryStorage : CategoryStorage { private var categories = emptyList() diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/extractors/Extractor.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/extractors/Extractor.kt similarity index 59% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/extractors/Extractor.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/extractors/Extractor.kt index 652d0f5..bb39c43 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/extractors/Extractor.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/extractors/Extractor.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.extractors +package com.abdownloadmanager.shared.utils.extractors interface Extractor{ fun extract(input:Input):Output diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/extractors/linkextractor/DownloadCredentialExtractor.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/extractors/linkextractor/DownloadCredentialExtractor.kt similarity index 78% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/extractors/linkextractor/DownloadCredentialExtractor.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/extractors/linkextractor/DownloadCredentialExtractor.kt index 495eb95..64a01bc 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/extractors/linkextractor/DownloadCredentialExtractor.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/extractors/linkextractor/DownloadCredentialExtractor.kt @@ -1,7 +1,7 @@ -package com.abdownloadmanager.utils.extractors.linkextractor +package com.abdownloadmanager.shared.utils.extractors.linkextractor import ir.amirab.downloader.downloaditem.DownloadCredentials -import com.abdownloadmanager.utils.extractors.Extractor +import com.abdownloadmanager.shared.utils.extractors.Extractor interface DownloadCredentialExtractor: Extractor> { diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/extractors/linkextractor/URLExtractors.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/extractors/linkextractor/URLExtractors.kt similarity index 82% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/extractors/linkextractor/URLExtractors.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/extractors/linkextractor/URLExtractors.kt index 4ca00cc..ade4cb5 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/extractors/linkextractor/URLExtractors.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/extractors/linkextractor/URLExtractors.kt @@ -1,7 +1,7 @@ -package com.abdownloadmanager.utils.extractors.linkextractor +package com.abdownloadmanager.shared.utils.extractors.linkextractor -import com.abdownloadmanager.utils.extractors.Extractor -import com.abdownloadmanager.utils.isValidUrl +import com.abdownloadmanager.shared.utils.extractors.Extractor +import com.abdownloadmanager.shared.utils.isValidUrl object StringUrlExtractor : Extractor> { private val urlRegex by lazy { Regex("""\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]""") } diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/mvi/ContainsEffects.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/mvi/ContainsEffects.kt similarity index 85% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/mvi/ContainsEffects.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/mvi/ContainsEffects.kt index 0185838..fe42dc2 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/mvi/ContainsEffects.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/mvi/ContainsEffects.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils.mvi +package com.abdownloadmanager.shared.utils.mvi import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -24,11 +24,11 @@ private class SupportsEffects: ContainsEffects { } } -fun supportEffects():ContainsEffects = SupportsEffects() +fun supportEffects(): ContainsEffects = SupportsEffects() @Composable fun HandleEffects( - effectContainer :ContainsEffects, + effectContainer: ContainsEffects, handle:(T)->Unit ){ LaunchedEffect(effectContainer){ diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/mvi/ContainsScreenState.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/mvi/ContainsScreenState.kt similarity index 91% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/mvi/ContainsScreenState.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/mvi/ContainsScreenState.kt index adee263..f8fbd5e 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/mvi/ContainsScreenState.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/mvi/ContainsScreenState.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils.mvi +package com.abdownloadmanager.shared.utils.mvi import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.flow.* diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/mvi/EventHandler.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/mvi/EventHandler.kt similarity index 82% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/mvi/EventHandler.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/mvi/EventHandler.kt index 9ec095c..e3362bd 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/utils/mvi/EventHandler.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/mvi/EventHandler.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.utils.mvi +package com.abdownloadmanager.shared.utils.mvi import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.channels.BufferOverflow @@ -7,7 +7,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach -interface SupportsEvents :IEventHandlerAndReceiver { +interface SupportsEvents : IEventHandlerAndReceiver { fun getEventHandler(): IEventHandlerAndReceiver override fun sendEvent(event: Event) { getEventHandler().sendEvent(event) @@ -32,11 +32,11 @@ interface IEventHandler{ suspend fun handleEvent(event: Event) } -interface IEventHandlerAndReceiver :IEventReceiver,IEventHandler +interface IEventHandlerAndReceiver : IEventReceiver, IEventHandler abstract class EventHandler( private val scope: CoroutineScope, -) :IEventHandlerAndReceiver { +) : IEventHandlerAndReceiver { private val _eventsFlow = MutableSharedFlow( extraBufferCapacity = 64, onBufferOverflow = BufferOverflow.DROP_OLDEST diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/proxy/IProxyStorage.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/proxy/IProxyStorage.kt similarity index 72% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/proxy/IProxyStorage.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/proxy/IProxyStorage.kt index 22f84fd..3961094 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/proxy/IProxyStorage.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/proxy/IProxyStorage.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.proxy +package com.abdownloadmanager.shared.utils.proxy import kotlinx.coroutines.flow.MutableStateFlow diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/proxy/Proxy.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/proxy/Proxy.kt similarity index 95% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/proxy/Proxy.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/proxy/Proxy.kt index 4b8c9b8..27c866d 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/proxy/Proxy.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/proxy/Proxy.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.proxy +package com.abdownloadmanager.shared.utils.proxy import ir.amirab.downloader.connection.proxy.Proxy import kotlinx.serialization.SerialName diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/proxy/ProxyManager.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/proxy/ProxyManager.kt similarity index 97% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/proxy/ProxyManager.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/proxy/ProxyManager.kt index d0155a6..3b6b49b 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/proxy/ProxyManager.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/proxy/ProxyManager.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.proxy +package com.abdownloadmanager.shared.utils.proxy import ir.amirab.downloader.connection.proxy.Proxy import ir.amirab.downloader.connection.proxy.ProxyStrategy diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/IMyIcons.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/IMyIcons.kt similarity index 98% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/IMyIcons.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/IMyIcons.kt index e7fbe49..c0b8fb9 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/IMyIcons.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/IMyIcons.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.compose +package com.abdownloadmanager.shared.utils.ui import androidx.compose.ui.graphics.vector.ImageVector import ir.amirab.util.compose.IconSource diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/LocalIsDebugMode.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/LocalIsDebugMode.kt similarity index 91% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/LocalIsDebugMode.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/LocalIsDebugMode.kt index e47134c..27d1a06 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/LocalIsDebugMode.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/LocalIsDebugMode.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.compose +package com.abdownloadmanager.shared.utils.ui import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/LocalProviders.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/LocalProviders.kt similarity index 96% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/LocalProviders.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/LocalProviders.kt index 81aae72..4145ce4 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/LocalProviders.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/LocalProviders.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.compose +package com.abdownloadmanager.shared.utils.ui import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/LocalTitleBarDirection.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/LocalTitleBarDirection.kt similarity index 91% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/LocalTitleBarDirection.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/LocalTitleBarDirection.kt index ee1da6a..9688e0e 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/customwindow/LocalTitleBarDirection.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/LocalTitleBarDirection.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.ui.customwindow +package com.abdownloadmanager.shared.utils.ui import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/MyColors.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/MyColors.kt similarity index 94% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/MyColors.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/MyColors.kt index e1621b9..7e22bad 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/MyColors.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/MyColors.kt @@ -1,14 +1,11 @@ -package com.abdownloadmanager.desktop.ui.theme +package com.abdownloadmanager.shared.utils.ui -import com.abdownloadmanager.desktop.utils.darker -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.darker +import com.abdownloadmanager.shared.utils.div import androidx.compose.animation.animateColorAsState import androidx.compose.animation.core.AnimationSpec -import androidx.compose.animation.core.animateDp import androidx.compose.animation.core.tween -import androidx.compose.animation.core.updateTransition import androidx.compose.runtime.* -import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/Scrollbar.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/Scrollbar.kt similarity index 71% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/Scrollbar.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/Scrollbar.kt index af8adbb..29d7899 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/Scrollbar.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/Scrollbar.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.compose +package com.abdownloadmanager.shared.utils.ui fun androidx.compose.foundation.v2.ScrollbarAdapter.needScroll(): Boolean { return contentSize > viewportSize diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/icon/MyIcons.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/icon/MyIcons.kt similarity index 96% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/icon/MyIcons.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/icon/MyIcons.kt index 7f6f983..776db66 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/icon/MyIcons.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/icon/MyIcons.kt @@ -1,8 +1,8 @@ -package com.abdownloadmanager.desktop.ui.icon +package com.abdownloadmanager.shared.utils.ui.icon -import com.abdownloadmanager.utils.compose.IMyIcons +import com.abdownloadmanager.shared.utils.ui.IMyIcons import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.utils.compose.asIconSource +import com.abdownloadmanager.shared.utils.ui.asIconSource object MyIcons : IMyIcons { override val appIcon: IconSource get() = "/icons/app_icon.svg".asIconSource(false) diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/theme/ISystemThemeDetector.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/theme/ISystemThemeDetector.kt new file mode 100644 index 0000000..3bc0a3e --- /dev/null +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/theme/ISystemThemeDetector.kt @@ -0,0 +1,9 @@ +package com.abdownloadmanager.shared.utils.ui.theme + +import kotlinx.coroutines.flow.Flow + +interface ISystemThemeDetector { + val isSupported: Boolean + val isDark: Boolean + val systemThemeFlow: Flow +} \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/MaterialRipple.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/theme/MaterialRipple.kt similarity index 98% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/MaterialRipple.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/theme/MaterialRipple.kt index c0786ce..e308f73 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/MaterialRipple.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/theme/MaterialRipple.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.abdownloadmanager.desktop.ui.theme +package com.abdownloadmanager.shared.utils.ui.theme import androidx.compose.foundation.Indication import androidx.compose.foundation.IndicationNodeFactory @@ -38,7 +38,8 @@ import androidx.compose.ui.node.ObserverModifierNode import androidx.compose.ui.node.currentValueOf import androidx.compose.ui.node.observeReads import androidx.compose.ui.unit.Dp -import com.abdownloadmanager.utils.compose.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.LocalMyColors /** * Creates a Ripple using the provided values and values inferred from the theme. diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/theme/Sizing.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/theme/Sizing.kt new file mode 100644 index 0000000..70bf3c1 --- /dev/null +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/theme/Sizing.kt @@ -0,0 +1,48 @@ +package com.abdownloadmanager.shared.utils.ui.theme + +import androidx.compose.runtime.* +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.TextUnit + +val LocalSystemDensity = staticCompositionLocalOf { null } +val LocalUiScale = staticCompositionLocalOf { null } + +val LocalTextSizes = compositionLocalOf { + error("LocalTextSizes not provided") +} + +val myTextSizes + @Composable + get() = LocalTextSizes.current + +@Stable +data class TextSizes( + val xs: TextUnit, + val sm: TextUnit, + val base: TextUnit, + val lg: TextUnit, + val xl: TextUnit, +) + +/** + * put this in every window because [Window] composable override [LocalDensity] + */ +@Composable +fun UiScaledContent( + defaultDensity: Density = LocalDensity.current, + uiScale: Float? = LocalUiScale.current, + content: @Composable () -> Unit, +) { + val density = remember(uiScale) { + if (uiScale == null) { + defaultDensity + } else { + Density(uiScale) + } + } + CompositionLocalProvider( + LocalDensity provides density, + content, + ) +} \ No newline at end of file diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/widget/Icon.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/widget/Icon.kt similarity index 95% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/widget/Icon.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/widget/Icon.kt index 5cc51e8..90ffa2a 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/widget/Icon.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/widget/Icon.kt @@ -1,8 +1,8 @@ -package com.abdownloadmanager.utils.compose.widget +package com.abdownloadmanager.shared.utils.ui.widget import androidx.compose.foundation.Image -import com.abdownloadmanager.utils.compose.LocalContentAlpha -import com.abdownloadmanager.utils.compose.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.LocalContentAlpha +import com.abdownloadmanager.shared.utils.ui.LocalContentColor import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/util/ScreenSurface.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/widget/ScreenSurface.kt similarity index 84% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/util/ScreenSurface.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/widget/ScreenSurface.kt index 31a8ac3..43ed0cd 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/util/ScreenSurface.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/widget/ScreenSurface.kt @@ -1,7 +1,7 @@ -package com.abdownloadmanager.desktop.ui.util +package com.abdownloadmanager.shared.utils.ui.widget -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.utils.compose.WithContentColor +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.WithContentColor import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column import androidx.compose.runtime.Composable diff --git a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/widget/ScrolFade.kt b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/widget/ScrolFade.kt similarity index 97% rename from shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/widget/ScrolFade.kt rename to shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/widget/ScrolFade.kt index fe6d530..c6cc428 100644 --- a/shared/app-utils/src/main/kotlin/com/abdownloadmanager/utils/compose/widget/ScrolFade.kt +++ b/shared/app-utils/src/main/kotlin/com/abdownloadmanager/shared/utils/ui/widget/ScrolFade.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.utils.compose.widget +package com.abdownloadmanager.shared.utils.ui.widget import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn diff --git a/desktop/app/src/main/resources/icons/add_link.svg b/shared/app-utils/src/main/resources/icons/add_link.svg similarity index 100% rename from desktop/app/src/main/resources/icons/add_link.svg rename to shared/app-utils/src/main/resources/icons/add_link.svg diff --git a/desktop/app/src/main/resources/icons/app_icon.svg b/shared/app-utils/src/main/resources/icons/app_icon.svg similarity index 100% rename from desktop/app/src/main/resources/icons/app_icon.svg rename to shared/app-utils/src/main/resources/icons/app_icon.svg diff --git a/desktop/app/src/main/resources/icons/back.svg b/shared/app-utils/src/main/resources/icons/back.svg similarity index 100% rename from desktop/app/src/main/resources/icons/back.svg rename to shared/app-utils/src/main/resources/icons/back.svg diff --git a/desktop/app/src/main/resources/icons/browser_google_chrome.svg b/shared/app-utils/src/main/resources/icons/browser_google_chrome.svg similarity index 100% rename from desktop/app/src/main/resources/icons/browser_google_chrome.svg rename to shared/app-utils/src/main/resources/icons/browser_google_chrome.svg diff --git a/desktop/app/src/main/resources/icons/browser_microsoft_edge.svg b/shared/app-utils/src/main/resources/icons/browser_microsoft_edge.svg similarity index 100% rename from desktop/app/src/main/resources/icons/browser_microsoft_edge.svg rename to shared/app-utils/src/main/resources/icons/browser_microsoft_edge.svg diff --git a/desktop/app/src/main/resources/icons/browser_mozilla_firefox.svg b/shared/app-utils/src/main/resources/icons/browser_mozilla_firefox.svg similarity index 100% rename from desktop/app/src/main/resources/icons/browser_mozilla_firefox.svg rename to shared/app-utils/src/main/resources/icons/browser_mozilla_firefox.svg diff --git a/desktop/app/src/main/resources/icons/browser_opera.svg b/shared/app-utils/src/main/resources/icons/browser_opera.svg similarity index 100% rename from desktop/app/src/main/resources/icons/browser_opera.svg rename to shared/app-utils/src/main/resources/icons/browser_opera.svg diff --git a/desktop/app/src/main/resources/icons/check.svg b/shared/app-utils/src/main/resources/icons/check.svg similarity index 100% rename from desktop/app/src/main/resources/icons/check.svg rename to shared/app-utils/src/main/resources/icons/check.svg diff --git a/desktop/app/src/main/resources/icons/clear.svg b/shared/app-utils/src/main/resources/icons/clear.svg similarity index 100% rename from desktop/app/src/main/resources/icons/clear.svg rename to shared/app-utils/src/main/resources/icons/clear.svg diff --git a/desktop/app/src/main/resources/icons/clipboard.svg b/shared/app-utils/src/main/resources/icons/clipboard.svg similarity index 100% rename from desktop/app/src/main/resources/icons/clipboard.svg rename to shared/app-utils/src/main/resources/icons/clipboard.svg diff --git a/desktop/app/src/main/resources/icons/color.svg b/shared/app-utils/src/main/resources/icons/color.svg similarity index 100% rename from desktop/app/src/main/resources/icons/color.svg rename to shared/app-utils/src/main/resources/icons/color.svg diff --git a/desktop/app/src/main/resources/icons/copy.svg b/shared/app-utils/src/main/resources/icons/copy.svg similarity index 100% rename from desktop/app/src/main/resources/icons/copy.svg rename to shared/app-utils/src/main/resources/icons/copy.svg diff --git a/desktop/app/src/main/resources/icons/delete.svg b/shared/app-utils/src/main/resources/icons/delete.svg similarity index 100% rename from desktop/app/src/main/resources/icons/delete.svg rename to shared/app-utils/src/main/resources/icons/delete.svg diff --git a/desktop/app/src/main/resources/icons/down.svg b/shared/app-utils/src/main/resources/icons/down.svg similarity index 100% rename from desktop/app/src/main/resources/icons/down.svg rename to shared/app-utils/src/main/resources/icons/down.svg diff --git a/desktop/app/src/main/resources/icons/down_speed.svg b/shared/app-utils/src/main/resources/icons/down_speed.svg similarity index 100% rename from desktop/app/src/main/resources/icons/down_speed.svg rename to shared/app-utils/src/main/resources/icons/down_speed.svg diff --git a/desktop/app/src/main/resources/icons/earth.svg b/shared/app-utils/src/main/resources/icons/earth.svg similarity index 100% rename from desktop/app/src/main/resources/icons/earth.svg rename to shared/app-utils/src/main/resources/icons/earth.svg diff --git a/desktop/app/src/main/resources/icons/edit.svg b/shared/app-utils/src/main/resources/icons/edit.svg similarity index 100% rename from desktop/app/src/main/resources/icons/edit.svg rename to shared/app-utils/src/main/resources/icons/edit.svg diff --git a/desktop/app/src/main/resources/icons/exit.svg b/shared/app-utils/src/main/resources/icons/exit.svg similarity index 100% rename from desktop/app/src/main/resources/icons/exit.svg rename to shared/app-utils/src/main/resources/icons/exit.svg diff --git a/desktop/app/src/main/resources/icons/external_link.svg b/shared/app-utils/src/main/resources/icons/external_link.svg similarity index 100% rename from desktop/app/src/main/resources/icons/external_link.svg rename to shared/app-utils/src/main/resources/icons/external_link.svg diff --git a/desktop/app/src/main/resources/icons/file.svg b/shared/app-utils/src/main/resources/icons/file.svg similarity index 100% rename from desktop/app/src/main/resources/icons/file.svg rename to shared/app-utils/src/main/resources/icons/file.svg diff --git a/desktop/app/src/main/resources/icons/file_application.svg b/shared/app-utils/src/main/resources/icons/file_application.svg similarity index 100% rename from desktop/app/src/main/resources/icons/file_application.svg rename to shared/app-utils/src/main/resources/icons/file_application.svg diff --git a/desktop/app/src/main/resources/icons/file_document.svg b/shared/app-utils/src/main/resources/icons/file_document.svg similarity index 100% rename from desktop/app/src/main/resources/icons/file_document.svg rename to shared/app-utils/src/main/resources/icons/file_document.svg diff --git a/desktop/app/src/main/resources/icons/file_music.svg b/shared/app-utils/src/main/resources/icons/file_music.svg similarity index 100% rename from desktop/app/src/main/resources/icons/file_music.svg rename to shared/app-utils/src/main/resources/icons/file_music.svg diff --git a/desktop/app/src/main/resources/icons/file_picture.svg b/shared/app-utils/src/main/resources/icons/file_picture.svg similarity index 100% rename from desktop/app/src/main/resources/icons/file_picture.svg rename to shared/app-utils/src/main/resources/icons/file_picture.svg diff --git a/desktop/app/src/main/resources/icons/file_unknown.svg b/shared/app-utils/src/main/resources/icons/file_unknown.svg similarity index 100% rename from desktop/app/src/main/resources/icons/file_unknown.svg rename to shared/app-utils/src/main/resources/icons/file_unknown.svg diff --git a/desktop/app/src/main/resources/icons/file_video.svg b/shared/app-utils/src/main/resources/icons/file_video.svg similarity index 100% rename from desktop/app/src/main/resources/icons/file_video.svg rename to shared/app-utils/src/main/resources/icons/file_video.svg diff --git a/desktop/app/src/main/resources/icons/file_zip.svg b/shared/app-utils/src/main/resources/icons/file_zip.svg similarity index 100% rename from desktop/app/src/main/resources/icons/file_zip.svg rename to shared/app-utils/src/main/resources/icons/file_zip.svg diff --git a/desktop/app/src/main/resources/icons/folder.svg b/shared/app-utils/src/main/resources/icons/folder.svg similarity index 100% rename from desktop/app/src/main/resources/icons/folder.svg rename to shared/app-utils/src/main/resources/icons/folder.svg diff --git a/desktop/app/src/main/resources/icons/folder_finished.svg b/shared/app-utils/src/main/resources/icons/folder_finished.svg similarity index 100% rename from desktop/app/src/main/resources/icons/folder_finished.svg rename to shared/app-utils/src/main/resources/icons/folder_finished.svg diff --git a/desktop/app/src/main/resources/icons/folder_unfinished.svg b/shared/app-utils/src/main/resources/icons/folder_unfinished.svg similarity index 100% rename from desktop/app/src/main/resources/icons/folder_unfinished.svg rename to shared/app-utils/src/main/resources/icons/folder_unfinished.svg diff --git a/desktop/app/src/main/resources/icons/group.svg b/shared/app-utils/src/main/resources/icons/group.svg similarity index 100% rename from desktop/app/src/main/resources/icons/group.svg rename to shared/app-utils/src/main/resources/icons/group.svg diff --git a/desktop/app/src/main/resources/icons/hearth.svg b/shared/app-utils/src/main/resources/icons/hearth.svg similarity index 100% rename from desktop/app/src/main/resources/icons/hearth.svg rename to shared/app-utils/src/main/resources/icons/hearth.svg diff --git a/desktop/app/src/main/resources/icons/info.svg b/shared/app-utils/src/main/resources/icons/info.svg similarity index 100% rename from desktop/app/src/main/resources/icons/info.svg rename to shared/app-utils/src/main/resources/icons/info.svg diff --git a/desktop/app/src/main/resources/icons/language.svg b/shared/app-utils/src/main/resources/icons/language.svg similarity index 100% rename from desktop/app/src/main/resources/icons/language.svg rename to shared/app-utils/src/main/resources/icons/language.svg diff --git a/desktop/app/src/main/resources/icons/list.svg b/shared/app-utils/src/main/resources/icons/list.svg similarity index 100% rename from desktop/app/src/main/resources/icons/list.svg rename to shared/app-utils/src/main/resources/icons/list.svg diff --git a/desktop/app/src/main/resources/icons/lock.svg b/shared/app-utils/src/main/resources/icons/lock.svg similarity index 100% rename from desktop/app/src/main/resources/icons/lock.svg rename to shared/app-utils/src/main/resources/icons/lock.svg diff --git a/desktop/app/src/main/resources/icons/network.svg b/shared/app-utils/src/main/resources/icons/network.svg similarity index 100% rename from desktop/app/src/main/resources/icons/network.svg rename to shared/app-utils/src/main/resources/icons/network.svg diff --git a/desktop/app/src/main/resources/icons/next.svg b/shared/app-utils/src/main/resources/icons/next.svg similarity index 100% rename from desktop/app/src/main/resources/icons/next.svg rename to shared/app-utils/src/main/resources/icons/next.svg diff --git a/desktop/app/src/main/resources/icons/open_source.svg b/shared/app-utils/src/main/resources/icons/open_source.svg similarity index 100% rename from desktop/app/src/main/resources/icons/open_source.svg rename to shared/app-utils/src/main/resources/icons/open_source.svg diff --git a/desktop/app/src/main/resources/icons/pause.svg b/shared/app-utils/src/main/resources/icons/pause.svg similarity index 100% rename from desktop/app/src/main/resources/icons/pause.svg rename to shared/app-utils/src/main/resources/icons/pause.svg diff --git a/desktop/app/src/main/resources/icons/plus.svg b/shared/app-utils/src/main/resources/icons/plus.svg similarity index 100% rename from desktop/app/src/main/resources/icons/plus.svg rename to shared/app-utils/src/main/resources/icons/plus.svg diff --git a/desktop/app/src/main/resources/icons/question_mark.svg b/shared/app-utils/src/main/resources/icons/question_mark.svg similarity index 100% rename from desktop/app/src/main/resources/icons/question_mark.svg rename to shared/app-utils/src/main/resources/icons/question_mark.svg diff --git a/desktop/app/src/main/resources/icons/queue.svg b/shared/app-utils/src/main/resources/icons/queue.svg similarity index 100% rename from desktop/app/src/main/resources/icons/queue.svg rename to shared/app-utils/src/main/resources/icons/queue.svg diff --git a/desktop/app/src/main/resources/icons/refresh.svg b/shared/app-utils/src/main/resources/icons/refresh.svg similarity index 100% rename from desktop/app/src/main/resources/icons/refresh.svg rename to shared/app-utils/src/main/resources/icons/refresh.svg diff --git a/desktop/app/src/main/resources/icons/resume.svg b/shared/app-utils/src/main/resources/icons/resume.svg similarity index 100% rename from desktop/app/src/main/resources/icons/resume.svg rename to shared/app-utils/src/main/resources/icons/resume.svg diff --git a/desktop/app/src/main/resources/icons/scheduler.svg b/shared/app-utils/src/main/resources/icons/scheduler.svg similarity index 100% rename from desktop/app/src/main/resources/icons/scheduler.svg rename to shared/app-utils/src/main/resources/icons/scheduler.svg diff --git a/desktop/app/src/main/resources/icons/search.svg b/shared/app-utils/src/main/resources/icons/search.svg similarity index 100% rename from desktop/app/src/main/resources/icons/search.svg rename to shared/app-utils/src/main/resources/icons/search.svg diff --git a/desktop/app/src/main/resources/icons/settings.svg b/shared/app-utils/src/main/resources/icons/settings.svg similarity index 100% rename from desktop/app/src/main/resources/icons/settings.svg rename to shared/app-utils/src/main/resources/icons/settings.svg diff --git a/desktop/app/src/main/resources/icons/share.svg b/shared/app-utils/src/main/resources/icons/share.svg similarity index 100% rename from desktop/app/src/main/resources/icons/share.svg rename to shared/app-utils/src/main/resources/icons/share.svg diff --git a/desktop/app/src/main/resources/icons/sort_123.svg b/shared/app-utils/src/main/resources/icons/sort_123.svg similarity index 100% rename from desktop/app/src/main/resources/icons/sort_123.svg rename to shared/app-utils/src/main/resources/icons/sort_123.svg diff --git a/desktop/app/src/main/resources/icons/sort_321.svg b/shared/app-utils/src/main/resources/icons/sort_321.svg similarity index 100% rename from desktop/app/src/main/resources/icons/sort_321.svg rename to shared/app-utils/src/main/resources/icons/sort_321.svg diff --git a/desktop/app/src/main/resources/icons/speaker.svg b/shared/app-utils/src/main/resources/icons/speaker.svg similarity index 100% rename from desktop/app/src/main/resources/icons/speaker.svg rename to shared/app-utils/src/main/resources/icons/speaker.svg diff --git a/desktop/app/src/main/resources/icons/speed_limiter.svg b/shared/app-utils/src/main/resources/icons/speed_limiter.svg similarity index 100% rename from desktop/app/src/main/resources/icons/speed_limiter.svg rename to shared/app-utils/src/main/resources/icons/speed_limiter.svg diff --git a/desktop/app/src/main/resources/icons/stop.svg b/shared/app-utils/src/main/resources/icons/stop.svg similarity index 100% rename from desktop/app/src/main/resources/icons/stop.svg rename to shared/app-utils/src/main/resources/icons/stop.svg diff --git a/desktop/app/src/main/resources/icons/stop_all.svg b/shared/app-utils/src/main/resources/icons/stop_all.svg similarity index 100% rename from desktop/app/src/main/resources/icons/stop_all.svg rename to shared/app-utils/src/main/resources/icons/stop_all.svg diff --git a/desktop/app/src/main/resources/icons/telegram.svg b/shared/app-utils/src/main/resources/icons/telegram.svg similarity index 100% rename from desktop/app/src/main/resources/icons/telegram.svg rename to shared/app-utils/src/main/resources/icons/telegram.svg diff --git a/desktop/app/src/main/resources/icons/theme.svg b/shared/app-utils/src/main/resources/icons/theme.svg similarity index 100% rename from desktop/app/src/main/resources/icons/theme.svg rename to shared/app-utils/src/main/resources/icons/theme.svg diff --git a/desktop/app/src/main/resources/icons/undo.svg b/shared/app-utils/src/main/resources/icons/undo.svg similarity index 100% rename from desktop/app/src/main/resources/icons/undo.svg rename to shared/app-utils/src/main/resources/icons/undo.svg diff --git a/desktop/app/src/main/resources/icons/up.svg b/shared/app-utils/src/main/resources/icons/up.svg similarity index 100% rename from desktop/app/src/main/resources/icons/up.svg rename to shared/app-utils/src/main/resources/icons/up.svg diff --git a/desktop/app/src/main/resources/icons/vertical_direction.svg b/shared/app-utils/src/main/resources/icons/vertical_direction.svg similarity index 100% rename from desktop/app/src/main/resources/icons/vertical_direction.svg rename to shared/app-utils/src/main/resources/icons/vertical_direction.svg diff --git a/desktop/app/src/main/resources/icons/window_close.svg b/shared/app-utils/src/main/resources/icons/window_close.svg similarity index 100% rename from desktop/app/src/main/resources/icons/window_close.svg rename to shared/app-utils/src/main/resources/icons/window_close.svg diff --git a/desktop/app/src/main/resources/icons/window_floating.svg b/shared/app-utils/src/main/resources/icons/window_floating.svg similarity index 100% rename from desktop/app/src/main/resources/icons/window_floating.svg rename to shared/app-utils/src/main/resources/icons/window_floating.svg diff --git a/desktop/app/src/main/resources/icons/window_maximize.svg b/shared/app-utils/src/main/resources/icons/window_maximize.svg similarity index 100% rename from desktop/app/src/main/resources/icons/window_maximize.svg rename to shared/app-utils/src/main/resources/icons/window_maximize.svg diff --git a/desktop/app/src/main/resources/icons/window_minimize.svg b/shared/app-utils/src/main/resources/icons/window_minimize.svg similarity index 100% rename from desktop/app/src/main/resources/icons/window_minimize.svg rename to shared/app-utils/src/main/resources/icons/window_minimize.svg diff --git a/shared/app/build.gradle.kts b/shared/app/build.gradle.kts new file mode 100644 index 0000000..74d639f --- /dev/null +++ b/shared/app/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + id(MyPlugins.kotlin) + id(MyPlugins.composeBase) + id(Plugins.Kotlin.serialization) +} +dependencies { + api(project(":shared:app-utils")) + api(libs.markdownRenderer.core) +} \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/ABDownloaderTheme.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/theme/ABDownloaderTheme.kt similarity index 91% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/ABDownloaderTheme.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/theme/ABDownloaderTheme.kt index 43ab5fa..a1b05a9 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/ABDownloaderTheme.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/theme/ABDownloaderTheme.kt @@ -1,26 +1,24 @@ -package com.abdownloadmanager.desktop.ui.theme +package com.abdownloadmanager.shared.ui.theme -import com.abdownloadmanager.utils.compose.LocalContentAlpha -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.utils.compose.LocalTextStyle -import com.abdownloadmanager.desktop.ui.widget.menu.SubMenu import ir.amirab.util.compose.action.buildMenu -import com.abdownloadmanager.desktop.utils.darker -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.darker +import com.abdownloadmanager.shared.utils.div import androidx.compose.animation.core.tween import androidx.compose.foundation.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.runtime.* import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Popup import androidx.compose.ui.window.PopupProperties import androidx.compose.ui.window.rememberPopupPositionProviderAtPosition -import com.abdownloadmanager.desktop.ui.customwindow.UiScaledContent +import com.abdownloadmanager.shared.ui.widget.menu.SubMenu +import com.abdownloadmanager.shared.utils.ui.* +import com.abdownloadmanager.shared.utils.ui.theme.* +import com.abdownloadmanager.shared.utils.ui.theme.UiScaledContent import ir.amirab.util.compose.asStringSource /* diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/Markdown.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/theme/Markdown.kt similarity index 90% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/Markdown.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/theme/Markdown.kt index 211b90a..5b7461c 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/theme/Markdown.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/theme/Markdown.kt @@ -1,10 +1,12 @@ -package com.abdownloadmanager.desktop.ui.theme +package com.abdownloadmanager.shared.ui.theme import androidx.compose.runtime.Composable import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.utils.compose.LocalTextStyle +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.LocalTextStyle +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes import com.mikepenz.markdown.model.DefaultMarkdownColors import com.mikepenz.markdown.model.DefaultMarkdownTypography diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ActionButton.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/ActionButton.kt similarity index 82% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ActionButton.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/ActionButton.kt index 26cdb1e..3e68430 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ActionButton.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/ActionButton.kt @@ -1,18 +1,17 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.utils.compose.WithContentColor -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.WithContentColor +import com.abdownloadmanager.shared.utils.div import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Brush diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ActionContainer.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/ActionContainer.kt similarity index 84% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ActionContainer.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/ActionContainer.kt index 5750c59..ab2465d 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ActionContainer.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/ActionContainer.kt @@ -1,12 +1,12 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.div @Composable fun ActionContainer( diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/AddUrlButton.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/AddUrlButton.kt similarity index 83% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/AddUrlButton.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/AddUrlButton.kt index 90541a1..78763fe 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/AddUrlButton.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/AddUrlButton.kt @@ -1,10 +1,10 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/CheckBox.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/CheckBox.kt similarity index 88% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/CheckBox.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/CheckBox.kt index 30b08f0..7a6394b 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/CheckBox.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/CheckBox.kt @@ -1,11 +1,11 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.utils.div import androidx.compose.animation.AnimatedContent import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.tween diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/DashedBorder.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/DashedBorder.kt similarity index 99% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/DashedBorder.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/DashedBorder.kt index 2cdf569..650b246 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/DashedBorder.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/DashedBorder.kt @@ -1,9 +1,8 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget import androidx.compose.foundation.BorderStroke import androidx.compose.ui.Modifier import androidx.compose.ui.composed -import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.draw.drawWithCache import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ExpandableItem.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/ExpandableItem.kt similarity index 90% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ExpandableItem.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/ExpandableItem.kt index d0b0770..6d286d0 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ExpandableItem.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/ExpandableItem.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.layout.Column diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Handle.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Handle.kt similarity index 95% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Handle.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Handle.kt index 464b031..18e7f62 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Handle.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Handle.kt @@ -1,7 +1,7 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.div import androidx.compose.animation.animateColorAsState import androidx.compose.foundation.background import androidx.compose.foundation.gestures.Orientation diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Help.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Help.kt similarity index 70% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Help.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Help.kt index 42d1340..bf4c66f 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Help.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Help.kt @@ -1,25 +1,18 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.runtime.* -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp -import androidx.compose.ui.window.Popup -import androidx.compose.ui.window.rememberComponentRectPositionProvider -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.utils.compose.WithContentColor -import com.abdownloadmanager.utils.compose.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon @Composable fun Help( diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/IconPick.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/IconPick.kt similarity index 93% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/IconPick.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/IconPick.kt index 71736c3..0336806 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/IconPick.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/IconPick.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn @@ -19,11 +19,11 @@ import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.ui.widget.menu.MyDropDown -import com.abdownloadmanager.desktop.utils.div -import com.abdownloadmanager.utils.compose.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.myColors +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.ui.widget.menu.MyDropDown +import com.abdownloadmanager.shared.utils.div +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon import ir.amirab.util.compose.IconSource @Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Language.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Language.kt similarity index 89% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Language.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Language.kt index c507184..5dee84d 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Language.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Language.kt @@ -1,11 +1,11 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.collectAsState import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.unit.LayoutDirection -import com.abdownloadmanager.desktop.ui.customwindow.LocalTitleBarDirection +import com.abdownloadmanager.shared.utils.ui.LocalTitleBarDirection import ir.amirab.util.compose.localizationmanager.LanguageManager import ir.amirab.util.compose.localizationmanager.LocalLanguageManager import ir.amirab.util.compose.localizationmanager.LocaleLanguageDirection diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/LoadingIndicator.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/LoadingIndicator.kt similarity index 96% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/LoadingIndicator.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/LoadingIndicator.kt index 121d7ce..80e71d7 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/LoadingIndicator.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/LoadingIndicator.kt @@ -1,6 +1,6 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget -import com.abdownloadmanager.desktop.ui.theme.myColors +import com.abdownloadmanager.shared.utils.ui.myColors import androidx.annotation.FloatRange import androidx.compose.animation.core.* import androidx.compose.foundation.Canvas diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Multiselect.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Multiselect.kt similarity index 85% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Multiselect.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Multiselect.kt index 9afa0bd..991044e 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Multiselect.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Multiselect.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -13,11 +13,11 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape import androidx.compose.ui.unit.dp -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.utils.div -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.myColors +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.utils.div +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha @Composable fun Multiselect( diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MyIconButton.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/MyIconButton.kt similarity index 87% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MyIconButton.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/MyIconButton.kt index 7a94de9..0df1ceb 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MyIconButton.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/MyIconButton.kt @@ -1,10 +1,10 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.myColors +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.utils.div import androidx.compose.animation.core.* import androidx.compose.foundation.background import androidx.compose.foundation.border diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MyTextField.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/MyTextField.kt similarity index 94% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MyTextField.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/MyTextField.kt index bee603c..1c297e3 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MyTextField.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/MyTextField.kt @@ -1,10 +1,10 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.utils.compose.LocalTextStyle -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.LocalTextStyle +import com.abdownloadmanager.shared.utils.ui.myColors +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.utils.div import androidx.compose.animation.* import androidx.compose.foundation.background import androidx.compose.foundation.border diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/NavigateableItem.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/NavigateableItem.kt similarity index 90% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/NavigateableItem.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/NavigateableItem.kt index 3a9a2d2..f7562d1 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/NavigateableItem.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/NavigateableItem.kt @@ -1,7 +1,7 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.layout.* diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Notification.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Notification.kt similarity index 95% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Notification.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Notification.kt index 8de4eaa..34a3b40 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Notification.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Notification.kt @@ -1,11 +1,11 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha +import com.abdownloadmanager.shared.utils.div import androidx.compose.animation.animateContentSize import androidx.compose.foundation.background import androidx.compose.foundation.border diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/NumberTextField.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/NumberTextField.kt similarity index 97% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/NumberTextField.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/NumberTextField.kt index 174867c..e1c7c76 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/NumberTextField.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/NumberTextField.kt @@ -1,9 +1,9 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.hoverable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Switch.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Switch.kt similarity index 91% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Switch.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Switch.kt index b601ec8..27fab38 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Switch.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Switch.kt @@ -1,8 +1,8 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.myColors +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.utils.div import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.background import androidx.compose.foundation.interaction.MutableInteractionSource diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Tabs.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Tabs.kt similarity index 85% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Tabs.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Tabs.kt index 7b4f037..a60bf42 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Tabs.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Tabs.kt @@ -1,10 +1,10 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget import ir.amirab.util.compose.IconSource -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.onClick diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Text.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Text.kt similarity index 94% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Text.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Text.kt index bdba660..029b941 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Text.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Text.kt @@ -1,8 +1,8 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget -import com.abdownloadmanager.utils.compose.LocalContentAlpha -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.utils.compose.LocalTextStyle +import com.abdownloadmanager.shared.utils.ui.LocalContentAlpha +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.LocalTextStyle import androidx.compose.foundation.text.BasicText import androidx.compose.foundation.text.InlineTextContent import androidx.compose.runtime.Composable diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Tooltip.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Tooltip.kt similarity index 92% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Tooltip.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Tooltip.kt index d98adf6..247a712 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/Tooltip.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/Tooltip.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.ui.widget +package com.abdownloadmanager.shared.ui.widget import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -18,9 +18,9 @@ import androidx.compose.ui.draw.shadow import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Popup import androidx.compose.ui.window.rememberComponentRectPositionProvider -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.utils.compose.WithContentColor +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import com.abdownloadmanager.shared.utils.ui.WithContentColor import ir.amirab.util.compose.StringSource import kotlinx.coroutines.delay diff --git a/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/CellPadding.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/CellPadding.kt new file mode 100644 index 0000000..9367b1e --- /dev/null +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/CellPadding.kt @@ -0,0 +1,3 @@ +package com.abdownloadmanager.shared.ui.widget.customtable + + diff --git a/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/SortIndicatorMode.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/SortIndicatorMode.kt new file mode 100644 index 0000000..5f11b2a --- /dev/null +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/SortIndicatorMode.kt @@ -0,0 +1,29 @@ +package com.abdownloadmanager.shared.ui.widget.customtable + +enum class SortIndicatorMode { + None, + Ascending, + Descending, +} + +fun SortIndicatorMode.isAscending(): Boolean { + return when (this) { + SortIndicatorMode.Ascending -> true + else -> false + } +} + +fun SortIndicatorMode.isDescending(): Boolean { + return when (this) { + SortIndicatorMode.Descending -> true + else -> false + } +} + +fun SortIndicatorMode.next(): SortIndicatorMode { + return when (this) { + SortIndicatorMode.None -> SortIndicatorMode.Ascending + SortIndicatorMode.Ascending -> SortIndicatorMode.Descending + SortIndicatorMode.Descending -> SortIndicatorMode.Ascending + } +} \ No newline at end of file diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/Table.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/Table.kt similarity index 94% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/Table.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/Table.kt index 06d51a4..5bc267b 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/Table.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/Table.kt @@ -1,23 +1,20 @@ -package com.abdownloadmanager.desktop.ui.widget.customtable +package com.abdownloadmanager.shared.ui.widget.customtable -import com.abdownloadmanager.desktop.pages.home.sections.SortIndicatorMode -import com.abdownloadmanager.desktop.pages.home.sections.isAscending -import com.abdownloadmanager.desktop.pages.home.sections.isDescending -import com.abdownloadmanager.utils.compose.LocalContentColor -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.ui.widget.CheckBox -import com.abdownloadmanager.desktop.ui.widget.IconActionButton -import com.abdownloadmanager.desktop.ui.widget.menu.MenuColumn -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.LocalContentColor +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.ui.widget.CheckBox +import com.abdownloadmanager.shared.ui.widget.IconActionButton +import com.abdownloadmanager.shared.ui.widget.menu.MenuColumn +import com.abdownloadmanager.shared.utils.div import ir.amirab.util.flow.saved import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.* -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/TableUtils.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/TableUtils.kt similarity index 96% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/TableUtils.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/TableUtils.kt index 2d7f32d..be63b68 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/TableUtils.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/TableUtils.kt @@ -1,9 +1,8 @@ -package com.abdownloadmanager.desktop.ui.widget.customtable +package com.abdownloadmanager.shared.ui.widget.customtable -import com.abdownloadmanager.desktop.pages.home.sections.SortIndicatorMode -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.widget.resizeHandle -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.ui.widget.resizeHandle +import com.abdownloadmanager.shared.utils.div import androidx.compose.animation.animateColorAsState import androidx.compose.foundation.background import androidx.compose.foundation.gestures.Orientation @@ -13,7 +12,7 @@ import androidx.compose.foundation.interaction.collectIsDraggedAsState import androidx.compose.foundation.interaction.collectIsHoveredAsState import androidx.compose.foundation.layout.* import androidx.compose.foundation.onClick -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -362,7 +361,7 @@ class TableState>( } } - fun sortedList(list: List, sortBy:Sort>? = this.sortBy.value):List { + fun sortedList(list: List, sortBy: Sort>? = this.sortBy.value):List { return sortBy.let { sortedBy -> if (sortedBy == null) { list diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/styled/MyStyledHeader.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/styled/MyStyledHeader.kt similarity index 81% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/styled/MyStyledHeader.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/styled/MyStyledHeader.kt index b5bcb4e..12fc3b2 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/customtable/styled/MyStyledHeader.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/customtable/styled/MyStyledHeader.kt @@ -1,8 +1,8 @@ -package com.abdownloadmanager.desktop.ui.widget.customtable.styled +package com.abdownloadmanager.shared.ui.widget.customtable.styled -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.widget.customtable.TableScope -import com.abdownloadmanager.utils.compose.WithContentAlpha +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.ui.widget.customtable.TableScope +import com.abdownloadmanager.shared.utils.ui.WithContentAlpha import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.padding diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/DropDown.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/DropDown.kt similarity index 87% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/DropDown.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/DropDown.kt index 2506dd3..f68e0d1 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/DropDown.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/DropDown.kt @@ -1,9 +1,6 @@ -package com.abdownloadmanager.desktop.ui.widget.menu +package com.abdownloadmanager.shared.ui.widget.menu -import DropdownMenuPositionProvider -import SiblingMenuPositionProvider import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.window.Popup diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/DropDownMenuProvider.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/DropDownMenuProvider.kt similarity index 100% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/DropDownMenuProvider.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/DropDownMenuProvider.kt diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/MenuBar.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/MenuBar.kt similarity index 90% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/MenuBar.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/MenuBar.kt index c74dfe5..597d15a 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/MenuBar.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/MenuBar.kt @@ -1,23 +1,21 @@ -package com.abdownloadmanager.desktop.ui.widget.menu +package com.abdownloadmanager.shared.ui.widget.menu -import com.abdownloadmanager.desktop.actions.LocalShortCutManager -import com.abdownloadmanager.utils.compose.ProvideTextStyle -import com.abdownloadmanager.utils.compose.widget.MyIcon -import com.abdownloadmanager.desktop.ui.icon.MyIcons -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes -import com.abdownloadmanager.desktop.ui.util.ifThen -import com.abdownloadmanager.desktop.utils.KeyUtil -import com.abdownloadmanager.utils.compose.WithContentAlpha -import com.abdownloadmanager.utils.compose.WithContentColor +import com.abdownloadmanager.shared.utils.LocalShortCutManager +import com.abdownloadmanager.shared.utils.ui.ProvideTextStyle +import com.abdownloadmanager.shared.utils.ui.widget.MyIcon +import com.abdownloadmanager.shared.utils.ui.icon.MyIcons +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes +import ir.amirab.util.ifThen +import com.abdownloadmanager.shared.utils.ui.WithContentColor import ir.amirab.util.compose.action.MenuItem -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.div import androidx.compose.foundation.* import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.collectIsHoveredAsState import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -27,14 +25,10 @@ import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.graphics.Shape -import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.buildAnnotatedString -import androidx.compose.ui.text.style.TextDecoration -import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp +import com.abdownloadmanager.shared.utils.PlatformKeyStroke import ir.amirab.util.compose.modifiers.autoMirror -import javax.swing.KeyStroke enum class MenuDisabledItemBehavior { Filter, @@ -372,11 +366,11 @@ fun RenderSingleItem( } @Composable -fun RenderShortcutStroke(shortcutStroke: KeyStroke) { +fun RenderShortcutStroke(shortcutStroke: PlatformKeyStroke) { val modifiers = remember(shortcutStroke) { buildList { - addAll(KeyUtil.getModifiers(shortcutStroke.modifiers)) - add(KeyUtil.getKeyText(shortcutStroke.keyCode)) + addAll(shortcutStroke.getModifiers()) + add(shortcutStroke.getKeyText()) } } ProvideTextStyle( diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/Option.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/Option.kt similarity index 85% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/Option.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/Option.kt index 82efbbf..afe6bfe 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/Option.kt +++ b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/Option.kt @@ -1,13 +1,13 @@ -package com.abdownloadmanager.desktop.ui.widget.menu +package com.abdownloadmanager.shared.ui.widget.menu -import com.abdownloadmanager.desktop.ui.theme.myColors -import com.abdownloadmanager.desktop.ui.theme.myTextSizes +import com.abdownloadmanager.shared.utils.ui.myColors +import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes import ir.amirab.util.compose.action.MenuItem -import com.abdownloadmanager.desktop.utils.div +import com.abdownloadmanager.shared.utils.div import androidx.compose.foundation.background import androidx.compose.foundation.basicMarquee import androidx.compose.foundation.layout.* -import com.abdownloadmanager.desktop.ui.widget.Text +import com.abdownloadmanager.shared.ui.widget.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue @@ -15,7 +15,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Popup import androidx.compose.ui.window.rememberCursorPositionProvider diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/SiblingMenuPositionProvider.kt b/shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/SiblingMenuPositionProvider.kt similarity index 100% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/menu/SiblingMenuPositionProvider.kt rename to shared/app/src/main/kotlin/com/abdownloadmanager/shared/ui/widget/menu/SiblingMenuPositionProvider.kt diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/util/IfThen.kt b/shared/utils/src/main/kotlin/ir/amirab/util/IfThen.kt similarity index 77% rename from desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/util/IfThen.kt rename to shared/utils/src/main/kotlin/ir/amirab/util/IfThen.kt index e562898..0703509 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/util/IfThen.kt +++ b/shared/utils/src/main/kotlin/ir/amirab/util/IfThen.kt @@ -1,4 +1,4 @@ -package com.abdownloadmanager.desktop.ui.util +package ir.amirab.util inline fun T.ifThen(condition:Boolean, block:T.()->Base): Base { return if (condition){