extracting common code to shared modules (#345)

This commit is contained in:
AmirHossein Abdolmotallebi 2025-01-05 17:55:21 +03:30 committed by GitHub
parent 3f7824dab8
commit 40ca2a51fc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
282 changed files with 1244 additions and 1197 deletions

View File

@ -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"))
}

View File

@ -1,21 +1,15 @@
package com.abdownloadmanager.desktop.ui.customwindow package com.abdownloadmanager.desktop.window.custom
import ir.amirab.util.customwindow.ProvideWindowSpotContainer import ir.amirab.util.customwindow.ProvideWindowSpotContainer
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentColor import com.abdownloadmanager.shared.utils.ui.WithContentColor
import ir.amirab.util.compose.IconSource 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.Image
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.border import androidx.compose.foundation.border
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.onClick import androidx.compose.foundation.onClick
import androidx.compose.foundation.window.WindowDraggableArea import androidx.compose.foundation.window.WindowDraggableArea
import com.abdownloadmanager.desktop.ui.widget.Text
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier 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.painter.Painter
import androidx.compose.ui.graphics.takeOrElse import androidx.compose.ui.graphics.takeOrElse
import androidx.compose.ui.input.key.KeyEvent 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.platform.LocalWindowInfo
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.FrameWindowScope import androidx.compose.ui.window.FrameWindowScope
import androidx.compose.ui.window.Window import androidx.compose.ui.window.Window
import androidx.compose.ui.window.WindowPlacement import androidx.compose.ui.window.WindowPlacement
import androidx.compose.ui.window.WindowState 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.desktop.LocalWindow
import ir.amirab.util.customwindow.HitSpots import ir.amirab.util.customwindow.HitSpots
import ir.amirab.util.customwindow.util.CustomWindowDecorationAccessing import ir.amirab.util.customwindow.util.CustomWindowDecorationAccessing
import ir.amirab.util.customwindow.windowFrameItem import ir.amirab.util.customwindow.windowFrameItem
import ir.amirab.util.ifThen
// a window frame which totally rendered with compose // 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 @Composable
private fun PreventMinimize() { private fun PreventMinimize() {
val state = LocalWindowState.current val state = LocalWindowState.current

View File

@ -1,7 +1,8 @@
package com.abdownloadmanager.desktop.ui.customwindow package com.abdownloadmanager.desktop.window.custom
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.window.* import androidx.compose.ui.window.*
import com.abdownloadmanager.shared.utils.ui.theme.UiScaledContent
import java.awt.event.WindowEvent import java.awt.event.WindowEvent
import java.awt.event.WindowFocusListener import java.awt.event.WindowFocusListener

View File

@ -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 ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import androidx.compose.animation.animateColorAsState import androidx.compose.animation.animateColorAsState
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
@ -20,6 +18,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.FrameWindowScope 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.HitSpots
import ir.amirab.util.customwindow.windowFrameItem import ir.amirab.util.customwindow.windowFrameItem

View File

@ -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.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.awt.ComposeWindow
import java.awt.Toolkit import java.awt.Toolkit
import java.awt.Window import java.awt.Window
import kotlin.math.max import kotlin.math.max

View File

@ -1,4 +1,4 @@
package com.abdownloadmanager.desktop.utils.windowUtil package com.abdownloadmanager.desktop.window
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Offset

View File

@ -21,9 +21,6 @@ dependencies {
implementation(libs.decompose) implementation(libs.decompose)
implementation(libs.decompose.jbCompose) 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.koin.core)
implementation(libs.kotlin.serialization.json) implementation(libs.kotlin.serialization.json)
@ -64,14 +61,23 @@ dependencies {
implementation(project(":integration:server")) implementation(project(":integration:server"))
implementation(project(":desktop:shared")) implementation(project(":desktop:shared"))
implementation(project(":desktop:tray")) implementation(project(":desktop:app-utils"))
implementation(project(":desktop:custom-window-frame"))
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:app-utils"))
implementation(project(":shared:utils")) implementation(project(":shared:utils"))
implementation(project(":shared:updater")) implementation(project(":shared:updater"))
implementation(project(":shared:auto-start")) implementation(project(":shared:auto-start"))
implementation(project(":shared:nanohttp4k")) implementation(project(":shared:nanohttp4k"))
implementation(project(":shared:resources"))
} }
aboutLibraries { aboutLibraries {

View File

@ -9,8 +9,8 @@ import com.abdownloadmanager.desktop.ui.Ui
import com.abdownloadmanager.desktop.utils.* import com.abdownloadmanager.desktop.utils.*
import com.abdownloadmanager.desktop.utils.singleInstance.* import com.abdownloadmanager.desktop.utils.singleInstance.*
import com.abdownloadmanager.integration.Integration import com.abdownloadmanager.integration.Integration
import com.abdownloadmanager.utils.DownloadSystem import com.abdownloadmanager.shared.utils.DownloadSystem
import com.abdownloadmanager.utils.appinfo.PreviousVersion import com.abdownloadmanager.shared.utils.appinfo.PreviousVersion
import ir.amirab.util.platform.Platform import ir.amirab.util.platform.Platform
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import okio.Path.Companion.toOkioPath import okio.Path.Companion.toOkioPath

View File

@ -17,11 +17,11 @@ import com.abdownloadmanager.desktop.repository.AppRepository
import com.abdownloadmanager.desktop.storage.AppSettingsStorage import com.abdownloadmanager.desktop.storage.AppSettingsStorage
import com.abdownloadmanager.desktop.ui.widget.MessageDialogModel import com.abdownloadmanager.desktop.ui.widget.MessageDialogModel
import com.abdownloadmanager.desktop.ui.widget.MessageDialogType import com.abdownloadmanager.desktop.ui.widget.MessageDialogType
import com.abdownloadmanager.desktop.ui.widget.NotificationModel import com.abdownloadmanager.shared.ui.widget.NotificationModel
import com.abdownloadmanager.desktop.ui.widget.NotificationType import com.abdownloadmanager.shared.ui.widget.NotificationType
import com.abdownloadmanager.desktop.utils.* import com.abdownloadmanager.desktop.utils.*
import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects import com.abdownloadmanager.shared.utils.mvi.ContainsEffects
import com.abdownloadmanager.desktop.utils.mvi.supportEffects import com.abdownloadmanager.shared.utils.mvi.supportEffects
import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.ComponentContext
import com.arkivanov.decompose.router.children.ChildNavState import com.arkivanov.decompose.router.children.ChildNavState
import com.arkivanov.decompose.router.pages.Pages 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.Integration
import com.abdownloadmanager.integration.IntegrationResult import com.abdownloadmanager.integration.IntegrationResult
import com.abdownloadmanager.resources.* import com.abdownloadmanager.resources.*
import com.abdownloadmanager.utils.DownloadSystem import com.abdownloadmanager.shared.utils.BaseComponent
import com.abdownloadmanager.utils.category.CategoryManager import com.abdownloadmanager.shared.utils.DownloadItemOpener
import com.abdownloadmanager.utils.category.CategorySelectionMode 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 com.arkivanov.decompose.childContext
import ir.amirab.downloader.exception.TooManyErrorException import ir.amirab.downloader.exception.TooManyErrorException
import ir.amirab.downloader.monitor.isDownloadActiveFlow import ir.amirab.downloader.monitor.isDownloadActiveFlow

View File

@ -1,21 +1,8 @@
package com.abdownloadmanager.desktop package com.abdownloadmanager.desktop
import com.abdownloadmanager.desktop.utils.BrowserIntegrationModel import com.abdownloadmanager.shared.utils.BaseConstants
import com.abdownloadmanager.desktop.utils.BrowserType 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<BrowserIntegrationModel>
val telegramGroupUrl:String
val telegramChannelUrl:String
}
object SharedConstants : BaseConstants { object SharedConstants : BaseConstants {
override val appName: String = BuildConfig.APP_NAME override val appName: String = BuildConfig.APP_NAME

View File

@ -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<KeyStroke, () -> 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
}

View File

@ -2,7 +2,7 @@ package com.abdownloadmanager.desktop.actions
import com.abdownloadmanager.desktop.AppComponent import com.abdownloadmanager.desktop.AppComponent
import com.abdownloadmanager.desktop.di.Di 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 com.abdownloadmanager.desktop.ui.widget.MessageDialogType
import ir.amirab.util.compose.action.AnAction import ir.amirab.util.compose.action.AnAction
import ir.amirab.util.compose.action.MenuItem import ir.amirab.util.compose.action.MenuItem

View File

@ -3,22 +3,22 @@ package com.abdownloadmanager.desktop.actions
import com.abdownloadmanager.desktop.AppComponent import com.abdownloadmanager.desktop.AppComponent
import com.abdownloadmanager.desktop.SharedConstants import com.abdownloadmanager.desktop.SharedConstants
import com.abdownloadmanager.desktop.di.Di 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.AppInfo
import com.abdownloadmanager.desktop.utils.ClipboardUtil import com.abdownloadmanager.desktop.utils.ClipboardUtil
import ir.amirab.util.compose.action.AnAction import ir.amirab.util.compose.action.AnAction
import ir.amirab.util.compose.action.MenuItem import ir.amirab.util.compose.action.MenuItem
import ir.amirab.util.compose.action.buildMenu import ir.amirab.util.compose.action.buildMenu
import ir.amirab.util.compose.action.simpleAction import ir.amirab.util.compose.action.simpleAction
import com.abdownloadmanager.desktop.utils.getIcon import com.abdownloadmanager.shared.utils.getIcon
import com.abdownloadmanager.desktop.utils.getName import com.abdownloadmanager.shared.utils.getName
import com.abdownloadmanager.resources.Res 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.downloaditem.DownloadCredentials
import ir.amirab.downloader.queue.DownloadQueue import ir.amirab.downloader.queue.DownloadQueue
import ir.amirab.downloader.queue.activeQueuesFlow import ir.amirab.downloader.queue.activeQueuesFlow
import ir.amirab.downloader.queue.inactiveQueuesFlow 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.UrlUtils
import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.asStringSource
import ir.amirab.util.flow.combineStateFlows import ir.amirab.util.flow.combineStateFlows

View File

@ -13,7 +13,8 @@ import com.abdownloadmanager.desktop.pages.updater.UpdateDownloaderViaDownloadSy
import ir.amirab.downloader.queue.QueueManager import ir.amirab.downloader.queue.QueueManager
import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.repository.AppRepository
import com.abdownloadmanager.desktop.storage.* 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.*
import com.abdownloadmanager.desktop.utils.native_messaging.NativeMessaging import com.abdownloadmanager.desktop.utils.native_messaging.NativeMessaging
import com.abdownloadmanager.desktop.utils.native_messaging.NativeMessagingManifestApplier import com.abdownloadmanager.desktop.utils.native_messaging.NativeMessagingManifestApplier
@ -42,18 +43,18 @@ import org.koin.dsl.bind
import org.koin.dsl.module import org.koin.dsl.module
import com.abdownloadmanager.updatechecker.GithubUpdateChecker import com.abdownloadmanager.updatechecker.GithubUpdateChecker
import com.abdownloadmanager.updatechecker.UpdateChecker import com.abdownloadmanager.updatechecker.UpdateChecker
import com.abdownloadmanager.utils.DownloadFoldersRegistry import com.abdownloadmanager.shared.utils.DownloadFoldersRegistry
import com.abdownloadmanager.utils.DownloadSystem import com.abdownloadmanager.shared.utils.DownloadSystem
import com.abdownloadmanager.utils.FileIconProvider import com.abdownloadmanager.shared.utils.FileIconProvider
import com.abdownloadmanager.utils.FileIconProviderUsingCategoryIcons import com.abdownloadmanager.shared.utils.FileIconProviderUsingCategoryIcons
import ir.amirab.util.AppVersionTracker import ir.amirab.util.AppVersionTracker
import com.abdownloadmanager.utils.appinfo.PreviousVersion import com.abdownloadmanager.shared.utils.appinfo.PreviousVersion
import com.abdownloadmanager.utils.autoremove.RemovedDownloadsFromDiskTracker import com.abdownloadmanager.shared.utils.autoremove.RemovedDownloadsFromDiskTracker
import com.abdownloadmanager.utils.category.* import com.abdownloadmanager.shared.utils.category.*
import com.abdownloadmanager.utils.compose.IMyIcons import com.abdownloadmanager.shared.utils.ui.IMyIcons
import com.abdownloadmanager.utils.proxy.IProxyStorage import com.abdownloadmanager.shared.utils.proxy.IProxyStorage
import com.abdownloadmanager.utils.proxy.ProxyData import com.abdownloadmanager.shared.utils.proxy.ProxyData
import com.abdownloadmanager.utils.proxy.ProxyManager import com.abdownloadmanager.shared.utils.proxy.ProxyManager
import ir.amirab.downloader.connection.proxy.ProxyStrategyProvider import ir.amirab.downloader.connection.proxy.ProxyStrategyProvider
import ir.amirab.downloader.monitor.IDownloadMonitor import ir.amirab.downloader.monitor.IDownloadMonitor
import ir.amirab.downloader.utils.EmptyFileCreator import ir.amirab.downloader.utils.EmptyFileCreator
@ -92,6 +93,9 @@ val downloaderModule = module {
single<IDiskStat> { single<IDiskStat> {
DesktopDiskStat() DesktopDiskStat()
} }
single<ISystemThemeDetector> {
DesktopSystemThemeDetector()
}
single { single {
QueueManager(get(), get()) QueueManager(get(), get())
} }
@ -265,7 +269,7 @@ val appModule = module {
AppRepository() AppRepository()
} }
single { single {
ThemeManager(get(), get()) ThemeManager(get(), get(), get())
} }
single { single {
LanguageManager(get()) LanguageManager(get())

View File

@ -2,7 +2,7 @@ package com.abdownloadmanager.desktop.integration
import com.abdownloadmanager.desktop.AppComponent import com.abdownloadmanager.desktop.AppComponent
import com.abdownloadmanager.desktop.repository.AppRepository 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.IntegrationHandler
import com.abdownloadmanager.integration.NewDownloadInfoFromIntegration import com.abdownloadmanager.integration.NewDownloadInfoFromIntegration
import com.abdownloadmanager.integration.NewDownloadTask import com.abdownloadmanager.integration.NewDownloadTask

View File

@ -1,8 +1,8 @@
package com.abdownloadmanager.desktop.pages.about package com.abdownloadmanager.desktop.pages.about
import com.abdownloadmanager.desktop.AppComponent import com.abdownloadmanager.desktop.AppComponent
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.ui.Alignment 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.unit.dp
import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.rememberWindowState import androidx.compose.ui.window.rememberWindowState
import com.abdownloadmanager.desktop.ui.customwindow.WindowIcon import com.abdownloadmanager.desktop.window.custom.WindowIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.LocalUiScale import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
import ir.amirab.util.desktop.screen.applyUiScale import ir.amirab.util.desktop.screen.applyUiScale

View File

@ -1,13 +1,13 @@
package com.abdownloadmanager.desktop.pages.about package com.abdownloadmanager.desktop.pages.about
import androidx.compose.foundation.* import androidx.compose.foundation.*
import com.abdownloadmanager.utils.compose.LocalTextStyle import com.abdownloadmanager.shared.utils.ui.LocalTextStyle
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.Text import com.abdownloadmanager.shared.ui.widget.Text
import com.abdownloadmanager.desktop.utils.AppInfo 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.MutableInteractionSource
import androidx.compose.foundation.interaction.collectIsHoveredAsState import androidx.compose.foundation.interaction.collectIsHoveredAsState
import androidx.compose.foundation.layout.* 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 androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.desktop.SharedConstants import com.abdownloadmanager.desktop.SharedConstants
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.util.ifThen import ir.amirab.util.ifThen
import com.abdownloadmanager.desktop.ui.widget.IconActionButton import com.abdownloadmanager.shared.ui.widget.IconActionButton
import com.abdownloadmanager.desktop.ui.widget.Tooltip import com.abdownloadmanager.shared.ui.widget.Tooltip
import com.abdownloadmanager.desktop.utils.div import com.abdownloadmanager.shared.utils.div
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import ir.amirab.util.UrlUtils import ir.amirab.util.UrlUtils
import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.IconSource

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.pages.addDownload package com.abdownloadmanager.desktop.pages.addDownload
import com.abdownloadmanager.desktop.storage.PageStatesStorage import com.abdownloadmanager.desktop.storage.PageStatesStorage
import com.abdownloadmanager.desktop.utils.BaseComponent import com.abdownloadmanager.shared.utils.BaseComponent
import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.ComponentContext
import ir.amirab.downloader.downloaditem.DownloadCredentials import ir.amirab.downloader.downloaditem.DownloadCredentials
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow

View File

@ -1,7 +1,8 @@
package com.abdownloadmanager.desktop.pages.addDownload package com.abdownloadmanager.desktop.pages.addDownload
import com.abdownloadmanager.desktop.utils.* import com.abdownloadmanager.shared.utils.AddDownloadChecker
import com.abdownloadmanager.utils.DownloadSystem import com.abdownloadmanager.shared.utils.DownloadSystem
import com.abdownloadmanager.shared.utils.LinkChecker
import ir.amirab.downloader.connection.DownloaderClient import ir.amirab.downloader.connection.DownloaderClient
import ir.amirab.downloader.downloaditem.DownloadCredentials import ir.amirab.downloader.downloaditem.DownloadCredentials
import ir.amirab.util.flow.onEachLatest import ir.amirab.util.flow.onEachLatest

View File

@ -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.multiple.AddMultiItemPage
import com.abdownloadmanager.desktop.pages.addDownload.single.AddDownloadPage import com.abdownloadmanager.desktop.pages.addDownload.single.AddDownloadPage
import com.abdownloadmanager.desktop.pages.addDownload.single.AddSingleDownloadComponent import com.abdownloadmanager.desktop.pages.addDownload.single.AddSingleDownloadComponent
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.WindowIcon import com.abdownloadmanager.desktop.window.custom.WindowIcon
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState 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.unit.dp
import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.rememberWindowState 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 com.abdownloadmanager.resources.Res
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
import ir.amirab.util.desktop.screen.applyUiScale import ir.amirab.util.desktop.screen.applyUiScale

View File

@ -3,17 +3,17 @@ package com.abdownloadmanager.desktop.pages.addDownload.multiple
import com.abdownloadmanager.desktop.pages.addDownload.AddDownloadComponent import com.abdownloadmanager.desktop.pages.addDownload.AddDownloadComponent
import com.abdownloadmanager.desktop.pages.addDownload.DownloadUiChecker import com.abdownloadmanager.desktop.pages.addDownload.DownloadUiChecker
import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.repository.AppRepository
import com.abdownloadmanager.desktop.ui.widget.customtable.TableState import com.abdownloadmanager.shared.ui.widget.customtable.TableState
import com.abdownloadmanager.utils.DownloadSystem import com.abdownloadmanager.shared.utils.DownloadSystem
import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import com.abdownloadmanager.utils.FileIconProvider import com.abdownloadmanager.shared.utils.FileIconProvider
import com.abdownloadmanager.utils.category.Category import com.abdownloadmanager.shared.utils.category.Category
import com.abdownloadmanager.utils.category.CategoryItem import com.abdownloadmanager.shared.utils.category.CategoryItem
import com.abdownloadmanager.utils.category.CategoryManager import com.abdownloadmanager.shared.utils.category.CategoryManager
import com.abdownloadmanager.utils.category.CategorySelectionMode import com.abdownloadmanager.shared.utils.category.CategorySelectionMode
import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.ComponentContext
import ir.amirab.downloader.connection.DownloaderClient import ir.amirab.downloader.connection.DownloaderClient
import ir.amirab.downloader.downloaditem.DownloadCredentials import ir.amirab.downloader.downloaditem.DownloadCredentials

View File

@ -1,6 +1,5 @@
package com.abdownloadmanager.desktop.pages.addDownload.multiple package com.abdownloadmanager.desktop.pages.addDownload.multiple
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.onClick import androidx.compose.foundation.onClick
@ -8,17 +7,17 @@ import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp 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.CategoryAddButton
import com.abdownloadmanager.desktop.pages.addDownload.shared.CategorySelect import com.abdownloadmanager.desktop.pages.addDownload.shared.CategorySelect
import com.abdownloadmanager.desktop.pages.addDownload.shared.LocationTextField import com.abdownloadmanager.desktop.pages.addDownload.shared.LocationTextField
import com.abdownloadmanager.desktop.pages.addDownload.shared.ShowAddToQueueDialog import com.abdownloadmanager.desktop.pages.addDownload.shared.ShowAddToQueueDialog
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.* import com.abdownloadmanager.shared.utils.div
import com.abdownloadmanager.desktop.utils.div
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.utils.category.Category import com.abdownloadmanager.shared.utils.category.Category
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
@Composable @Composable

View File

@ -1,13 +1,10 @@
package com.abdownloadmanager.desktop.pages.addDownload.multiple package com.abdownloadmanager.desktop.pages.addDownload.multiple
import com.abdownloadmanager.desktop.pages.addDownload.DownloadUiChecker import com.abdownloadmanager.desktop.pages.addDownload.DownloadUiChecker
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.* import com.abdownloadmanager.shared.ui.widget.customtable.styled.MyStyledTableHeader
import com.abdownloadmanager.desktop.ui.widget.customtable.*
import com.abdownloadmanager.desktop.ui.widget.customtable.styled.MyStyledTableHeader
import com.abdownloadmanager.desktop.utils.*
import androidx.compose.foundation.* import androidx.compose.foundation.*
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.* 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.input.pointer.isShiftPressed
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp 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.resources.Res
import com.abdownloadmanager.utils.FileIconProvider import com.abdownloadmanager.shared.utils.FileIconProvider
import com.abdownloadmanager.utils.compose.widget.MyIcon 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.StringSource
import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.asStringSource

View File

@ -11,14 +11,14 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.* import androidx.compose.ui.unit.*
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.util.ifThen import ir.amirab.util.ifThen
import com.abdownloadmanager.desktop.ui.widget.Text import com.abdownloadmanager.shared.ui.widget.Text
import com.abdownloadmanager.desktop.utils.div import com.abdownloadmanager.shared.utils.div
import com.abdownloadmanager.utils.category.Category import com.abdownloadmanager.shared.utils.category.Category
import com.abdownloadmanager.utils.category.rememberIconPainter import com.abdownloadmanager.shared.utils.category.rememberIconPainter
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
@Composable @Composable
fun CategorySelect( fun CategorySelect(

View File

@ -22,18 +22,17 @@ import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.rememberDialogState import androidx.compose.ui.window.rememberDialogState
import com.abdownloadmanager.desktop.ui.customwindow.BaseOptionDialog import com.abdownloadmanager.desktop.window.custom.BaseOptionDialog
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.LocalUiScale import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.util.ifThen import ir.amirab.util.ifThen
import com.abdownloadmanager.desktop.ui.widget.Text import com.abdownloadmanager.shared.ui.widget.Text
import com.abdownloadmanager.desktop.utils.div import com.abdownloadmanager.shared.utils.div
import com.abdownloadmanager.desktop.utils.windowUtil.moveSafe import com.abdownloadmanager.desktop.window.moveSafe
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.resources.* import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.utils.compose.widget.MyIcon
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
import ir.amirab.util.desktop.screen.applyUiScale import ir.amirab.util.desktop.screen.applyUiScale
import java.awt.MouseInfo import java.awt.MouseInfo

View File

@ -1,12 +1,12 @@
package com.abdownloadmanager.desktop.pages.addDownload.shared package com.abdownloadmanager.desktop.pages.addDownload.shared
import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurable
import com.abdownloadmanager.desktop.ui.customwindow.BaseOptionDialog import com.abdownloadmanager.desktop.window.custom.BaseOptionDialog
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.widget.Text import com.abdownloadmanager.shared.ui.widget.Text
import com.abdownloadmanager.utils.compose.WithContentColor import com.abdownloadmanager.shared.utils.ui.WithContentColor
import com.abdownloadmanager.desktop.utils.div import com.abdownloadmanager.shared.utils.div
import com.abdownloadmanager.desktop.utils.windowUtil.moveSafe import com.abdownloadmanager.desktop.window.moveSafe
import androidx.compose.foundation.* import androidx.compose.foundation.*
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape 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.unit.dp
import androidx.compose.ui.window.rememberDialogState import androidx.compose.ui.window.rememberDialogState
import com.abdownloadmanager.desktop.pages.settings.configurable.Configurable 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 ir.amirab.util.desktop.screen.applyUiScale
import java.awt.Dimension import java.awt.Dimension
import java.awt.MouseInfo import java.awt.MouseInfo

View File

@ -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.AddDownloadPageTextField
import com.abdownloadmanager.desktop.pages.addDownload.single.MyTextFieldIcon import com.abdownloadmanager.desktop.pages.addDownload.single.MyTextFieldIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.Text import com.abdownloadmanager.shared.ui.widget.Text
import com.abdownloadmanager.desktop.ui.widget.menu.MyDropDown import com.abdownloadmanager.shared.ui.widget.menu.MyDropDown
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.* 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 androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.resources.*
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
import io.github.vinceglb.filekit.compose.rememberDirectoryPickerLauncher import io.github.vinceglb.filekit.compose.rememberDirectoryPickerLauncher
import io.github.vinceglb.filekit.core.FileKitPlatformSettings import io.github.vinceglb.filekit.core.FileKitPlatformSettings

View File

@ -1,16 +1,16 @@
package com.abdownloadmanager.desktop.pages.addDownload.shared package com.abdownloadmanager.desktop.pages.addDownload.shared
import com.abdownloadmanager.desktop.actions.newQueueAction import com.abdownloadmanager.desktop.actions.newQueueAction
import com.abdownloadmanager.desktop.ui.customwindow.BaseOptionDialog import com.abdownloadmanager.desktop.window.custom.BaseOptionDialog
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.ActionButton import com.abdownloadmanager.shared.ui.widget.ActionButton
import com.abdownloadmanager.desktop.ui.widget.IconActionButton import com.abdownloadmanager.shared.ui.widget.IconActionButton
import com.abdownloadmanager.desktop.ui.widget.Text import com.abdownloadmanager.shared.ui.widget.Text
import com.abdownloadmanager.utils.compose.WithContentColor import com.abdownloadmanager.shared.utils.ui.WithContentColor
import com.abdownloadmanager.desktop.utils.div import com.abdownloadmanager.shared.utils.div
import com.abdownloadmanager.desktop.utils.windowUtil.moveSafe import com.abdownloadmanager.desktop.window.moveSafe
import androidx.compose.foundation.* import androidx.compose.foundation.*
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape 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.DpSize
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.rememberDialogState 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.Res
import com.abdownloadmanager.resources.*
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
import ir.amirab.downloader.queue.DownloadQueue import ir.amirab.downloader.queue.DownloadQueue
import ir.amirab.util.desktop.screen.applyUiScale import ir.amirab.util.desktop.screen.applyUiScale

View File

@ -1,16 +1,15 @@
package com.abdownloadmanager.desktop.pages.addDownload.single package com.abdownloadmanager.desktop.pages.addDownload.single
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentColor import com.abdownloadmanager.shared.utils.ui.WithContentColor
import com.abdownloadmanager.desktop.ui.customwindow.BaseOptionDialog import com.abdownloadmanager.desktop.window.custom.BaseOptionDialog
import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.*
import com.abdownloadmanager.desktop.utils.* 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.animation.*
import androidx.compose.foundation.* import androidx.compose.foundation.*
import androidx.compose.foundation.interaction.MutableInteractionSource 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.text.font.FontWeight
import androidx.compose.ui.unit.* import androidx.compose.ui.unit.*
import androidx.compose.ui.window.* import androidx.compose.ui.window.*
import com.abdownloadmanager.shared.ui.widget.*
import com.abdownloadmanager.desktop.pages.addDownload.shared.* 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.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.util.compose.resources.myStringResource
import ir.amirab.downloader.utils.OnDuplicateStrategy import ir.amirab.downloader.utils.OnDuplicateStrategy
import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.asStringSource

View File

@ -8,11 +8,12 @@ import com.abdownloadmanager.desktop.pages.settings.configurable.StringConfigura
import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.repository.AppRepository
import com.abdownloadmanager.desktop.utils.* import com.abdownloadmanager.desktop.utils.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects import com.abdownloadmanager.shared.utils.mvi.ContainsEffects
import com.abdownloadmanager.desktop.utils.mvi.supportEffects import com.abdownloadmanager.shared.utils.mvi.supportEffects
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.utils.DownloadSystem import com.abdownloadmanager.shared.utils.*
import com.abdownloadmanager.utils.extractors.linkextractor.DownloadCredentialFromStringExtractor import com.abdownloadmanager.shared.utils.FileIconProvider
import com.abdownloadmanager.shared.utils.extractors.linkextractor.DownloadCredentialFromStringExtractor
import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.ComponentContext
import ir.amirab.downloader.connection.DownloaderClient import ir.amirab.downloader.connection.DownloaderClient
import ir.amirab.downloader.downloaditem.DownloadCredentials import ir.amirab.downloader.downloaditem.DownloadCredentials
@ -29,10 +30,9 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.koin.core.component.KoinComponent import org.koin.core.component.KoinComponent
import org.koin.core.component.inject import org.koin.core.component.inject
import com.abdownloadmanager.utils.FileIconProvider import com.abdownloadmanager.shared.utils.category.Category
import com.abdownloadmanager.utils.category.Category import com.abdownloadmanager.shared.utils.category.CategoryItem
import com.abdownloadmanager.utils.category.CategoryItem import com.abdownloadmanager.shared.utils.category.CategoryManager
import com.abdownloadmanager.utils.category.CategoryManager
import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.asStringSource
import ir.amirab.util.compose.asStringSourceWithARgs import ir.amirab.util.compose.asStringSourceWithARgs

View File

@ -1,10 +1,10 @@
package com.abdownloadmanager.desktop.pages.batchdownload 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.ClipboardUtil
import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects import com.abdownloadmanager.shared.utils.mvi.ContainsEffects
import com.abdownloadmanager.desktop.utils.mvi.supportEffects import com.abdownloadmanager.shared.utils.mvi.supportEffects
import com.abdownloadmanager.utils.isValidUrl import com.abdownloadmanager.shared.utils.isValidUrl
import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.ComponentContext
import ir.amirab.util.flow.combineStateFlows import ir.amirab.util.flow.combineStateFlows
import ir.amirab.util.flow.mapStateFlow import ir.amirab.util.flow.mapStateFlow

View File

@ -6,9 +6,9 @@ import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.rememberWindowState import androidx.compose.ui.window.rememberWindowState
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.theme.LocalUiScale import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale
import com.abdownloadmanager.desktop.utils.mvi.HandleEffects import com.abdownloadmanager.shared.utils.mvi.HandleEffects
import ir.amirab.util.desktop.screen.applyUiScale import ir.amirab.util.desktop.screen.applyUiScale
@Composable @Composable

View File

@ -17,21 +17,19 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.pointer.PointerIcon import androidx.compose.ui.input.pointer.PointerIcon
import androidx.compose.ui.input.pointer.pointerHoverIcon import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.unit.dp 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.pages.batchdownload.WildcardSelect.*
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.ui.widget.*
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.util.ifThen import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.* import ir.amirab.util.ifThen
import com.abdownloadmanager.desktop.utils.ClipboardUtil 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.Res
import com.abdownloadmanager.resources.* import com.abdownloadmanager.shared.utils.ui.LocalContentColor
import com.abdownloadmanager.utils.compose.LocalContentColor import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.utils.compose.widget.MyIcon
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.IconSource
import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.StringSource

View File

@ -1,10 +1,10 @@
package com.abdownloadmanager.desktop.pages.category package com.abdownloadmanager.desktop.pages.category
import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.repository.AppRepository
import com.abdownloadmanager.desktop.utils.BaseComponent import com.abdownloadmanager.shared.utils.BaseComponent
import com.abdownloadmanager.utils.category.Category import com.abdownloadmanager.shared.utils.category.Category
import com.abdownloadmanager.utils.category.CategoryManager import com.abdownloadmanager.shared.utils.category.CategoryManager
import com.abdownloadmanager.utils.category.iconSource import com.abdownloadmanager.shared.utils.category.iconSource
import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.ComponentContext
import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.IconSource
import ir.amirab.util.compose.uriOrNull import ir.amirab.util.compose.uriOrNull

View File

@ -13,20 +13,19 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.desktop.pages.addDownload.single.MyTextFieldIcon import com.abdownloadmanager.desktop.pages.addDownload.single.MyTextFieldIcon
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.ui.widget.*
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.util.ifThen import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.* import ir.amirab.util.ifThen
import com.abdownloadmanager.desktop.utils.div import com.abdownloadmanager.shared.utils.div
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import io.github.vinceglb.filekit.compose.rememberDirectoryPickerLauncher import io.github.vinceglb.filekit.compose.rememberDirectoryPickerLauncher
import io.github.vinceglb.filekit.core.FileKitPlatformSettings import io.github.vinceglb.filekit.core.FileKitPlatformSettings
import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.IconSource
import ir.amirab.util.compose.asStringSource
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
import ir.amirab.util.desktop.LocalWindow import ir.amirab.util.desktop.LocalWindow
import java.io.File import java.io.File

View File

@ -8,8 +8,8 @@ import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.rememberWindowState import androidx.compose.ui.window.rememberWindowState
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.theme.LocalUiScale import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale
import ir.amirab.util.desktop.screen.applyUiScale import ir.amirab.util.desktop.screen.applyUiScale
@Composable @Composable

View File

@ -4,13 +4,10 @@ import androidx.compose.foundation.*
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight 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 androidx.compose.ui.unit.dp
import com.abdownloadmanager.desktop.di.Di import com.abdownloadmanager.desktop.di.Di
import com.abdownloadmanager.desktop.pages.about.MaybeLinkText import com.abdownloadmanager.desktop.pages.about.MaybeLinkText
import com.abdownloadmanager.desktop.ui.theme.LocalMyColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.ui.widget.ActionButton
import com.abdownloadmanager.desktop.ui.widget.ActionButton import com.abdownloadmanager.shared.ui.widget.Text
import com.abdownloadmanager.desktop.ui.widget.Text import com.abdownloadmanager.shared.ui.widget.customtable.Table
import com.abdownloadmanager.desktop.ui.widget.customtable.Table import com.abdownloadmanager.shared.ui.widget.customtable.TableState
import com.abdownloadmanager.desktop.ui.widget.customtable.TableState import com.abdownloadmanager.shared.ui.widget.customtable.styled.MyStyledTableHeader
import com.abdownloadmanager.desktop.ui.widget.customtable.styled.MyStyledTableHeader
import com.abdownloadmanager.desktop.utils.AppInfo 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.resources.Res
import com.abdownloadmanager.utils.compose.LocalContentColor import com.abdownloadmanager.shared.utils.ui.LocalContentColor
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import ir.amirab.util.UrlUtils import ir.amirab.util.UrlUtils
import ir.amirab.util.compose.localizationmanager.LanguageNameProvider import ir.amirab.util.compose.localizationmanager.LanguageNameProvider
import ir.amirab.util.compose.localizationmanager.MyLocale import ir.amirab.util.compose.localizationmanager.MyLocale

View File

@ -1,8 +1,8 @@
package com.abdownloadmanager.desktop.pages.credits.translators package com.abdownloadmanager.desktop.pages.credits.translators
import com.abdownloadmanager.desktop.ui.widget.customtable.CellSize import com.abdownloadmanager.shared.ui.widget.customtable.CellSize
import com.abdownloadmanager.desktop.ui.widget.customtable.SortableCell import com.abdownloadmanager.shared.ui.widget.customtable.SortableCell
import com.abdownloadmanager.desktop.ui.widget.customtable.TableCell import com.abdownloadmanager.shared.ui.widget.customtable.TableCell
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.StringSource

View File

@ -8,8 +8,8 @@ import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.rememberWindowState import androidx.compose.ui.window.rememberWindowState
import com.abdownloadmanager.desktop.AppComponent import com.abdownloadmanager.desktop.AppComponent
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource

View File

@ -2,13 +2,12 @@ package com.abdownloadmanager.desktop.pages.editdownload
import androidx.compose.runtime.Composable 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 ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.*
import com.abdownloadmanager.desktop.utils.* import com.abdownloadmanager.desktop.utils.*
import androidx.compose.animation.* import androidx.compose.animation.*
import androidx.compose.animation.core.animateDpAsState 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.text.font.FontWeight
import androidx.compose.ui.unit.* import androidx.compose.ui.unit.*
import androidx.compose.ui.window.* import androidx.compose.ui.window.*
import com.abdownloadmanager.shared.ui.widget.*
import com.abdownloadmanager.desktop.pages.addDownload.shared.ExtraConfig import com.abdownloadmanager.desktop.pages.addDownload.shared.ExtraConfig
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import com.abdownloadmanager.desktop.ui.theme.LocalUiScale import com.abdownloadmanager.shared.utils.ui.theme.LocalUiScale
import com.abdownloadmanager.desktop.ui.util.ifThen import ir.amirab.util.ifThen
import com.abdownloadmanager.desktop.utils.mvi.HandleEffects import com.abdownloadmanager.shared.utils.mvi.HandleEffects
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.utils.FileIconProvider import com.abdownloadmanager.shared.utils.FileIconProvider
import com.abdownloadmanager.utils.compose.WithContentColor 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.UrlUtils
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.asStringSource

View File

@ -1,11 +1,11 @@
package com.abdownloadmanager.desktop.pages.editdownload package com.abdownloadmanager.desktop.pages.editdownload
import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.repository.AppRepository
import com.abdownloadmanager.desktop.utils.* import com.abdownloadmanager.shared.utils.mvi.ContainsEffects
import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects import com.abdownloadmanager.shared.utils.mvi.supportEffects
import com.abdownloadmanager.desktop.utils.mvi.supportEffects import com.abdownloadmanager.shared.utils.BaseComponent
import com.abdownloadmanager.utils.DownloadSystem import com.abdownloadmanager.shared.utils.DownloadSystem
import com.abdownloadmanager.utils.FileIconProvider import com.abdownloadmanager.shared.utils.FileIconProvider
import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.ComponentContext
import ir.amirab.downloader.connection.DownloaderClient import ir.amirab.downloader.connection.DownloaderClient
import ir.amirab.downloader.downloaditem.DownloadCredentials import ir.amirab.downloader.downloaditem.DownloadCredentials

View File

@ -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.SpeedLimitConfigurable
import com.abdownloadmanager.desktop.pages.settings.configurable.StringConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.StringConfigurable
import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.repository.AppRepository
import com.abdownloadmanager.desktop.utils.FileNameValidator import com.abdownloadmanager.shared.utils.FileNameValidator
import com.abdownloadmanager.desktop.utils.LinkChecker import com.abdownloadmanager.shared.utils.LinkChecker
import com.abdownloadmanager.desktop.utils.convertPositiveSpeedToHumanReadable import com.abdownloadmanager.shared.utils.convertPositiveSpeedToHumanReadable
import com.abdownloadmanager.resources.Res 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.connection.DownloaderClient
import ir.amirab.downloader.downloaditem.DownloadCredentials import ir.amirab.downloader.downloaditem.DownloadCredentials
import ir.amirab.downloader.downloaditem.DownloadItem import ir.amirab.downloader.downloaditem.DownloadItem

View File

@ -1,15 +1,15 @@
package com.abdownloadmanager.desktop.pages.extenallibs package com.abdownloadmanager.desktop.pages.extenallibs
import com.abdownloadmanager.utils.compose.ProvideTextStyle import com.abdownloadmanager.shared.utils.ui.ProvideTextStyle
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.customtable.Table import com.abdownloadmanager.shared.ui.widget.customtable.Table
import com.abdownloadmanager.desktop.ui.widget.customtable.TableState import com.abdownloadmanager.shared.ui.widget.customtable.TableState
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import com.abdownloadmanager.desktop.ui.widget.Text import com.abdownloadmanager.shared.ui.widget.Text
import com.abdownloadmanager.desktop.ui.widget.customtable.styled.MyStyledTableHeader import com.abdownloadmanager.shared.ui.widget.customtable.styled.MyStyledTableHeader
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.useResource import androidx.compose.ui.res.useResource

View File

@ -1,15 +1,14 @@
package com.abdownloadmanager.desktop.pages.extenallibs package com.abdownloadmanager.desktop.pages.extenallibs
import com.abdownloadmanager.desktop.AppComponent import com.abdownloadmanager.desktop.AppComponent
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.rememberWindowState import androidx.compose.ui.window.rememberWindowState
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.resources.*
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
@Composable @Composable

View File

@ -1,17 +1,17 @@
package com.abdownloadmanager.desktop.pages.extenallibs package com.abdownloadmanager.desktop.pages.extenallibs
import com.abdownloadmanager.desktop.pages.about.MaybeLinkText import com.abdownloadmanager.desktop.pages.about.MaybeLinkText
import com.abdownloadmanager.utils.compose.ProvideTextStyle import com.abdownloadmanager.shared.utils.ui.ProvideTextStyle
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.ActionButton import com.abdownloadmanager.shared.ui.widget.ActionButton
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.desktop.utils.div import com.abdownloadmanager.shared.utils.div
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.border import androidx.compose.foundation.border
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape 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.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip 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.Dialog
import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogProperties
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.resources.*
import com.mikepenz.aboutlibraries.entity.Developer import com.mikepenz.aboutlibraries.entity.Developer
import com.mikepenz.aboutlibraries.entity.Library import com.mikepenz.aboutlibraries.entity.Library
import com.mikepenz.aboutlibraries.entity.License import com.mikepenz.aboutlibraries.entity.License

View File

@ -1,8 +1,8 @@
package com.abdownloadmanager.desktop.pages.extenallibs package com.abdownloadmanager.desktop.pages.extenallibs
import com.abdownloadmanager.desktop.ui.widget.customtable.CellSize import com.abdownloadmanager.shared.ui.widget.customtable.CellSize
import com.abdownloadmanager.desktop.ui.widget.customtable.SortableCell import com.abdownloadmanager.shared.ui.widget.customtable.SortableCell
import com.abdownloadmanager.desktop.ui.widget.customtable.TableCell import com.abdownloadmanager.shared.ui.widget.customtable.TableCell
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.mikepenz.aboutlibraries.entity.Library import com.mikepenz.aboutlibraries.entity.Library

View File

@ -1,29 +1,23 @@
package com.abdownloadmanager.desktop.pages.home package com.abdownloadmanager.desktop.pages.home
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.util.ifThen import ir.amirab.util.ifThen
import com.abdownloadmanager.desktop.ui.widget.menu.MyDropDown import com.abdownloadmanager.shared.ui.widget.menu.MyDropDown
import com.abdownloadmanager.desktop.ui.widget.menu.SubMenu import com.abdownloadmanager.shared.ui.widget.menu.SubMenu
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentColor import com.abdownloadmanager.shared.utils.ui.WithContentColor
import ir.amirab.util.compose.action.MenuItem 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.*
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.layout.* 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.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha 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 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 @Composable
fun Actions(list: List<MenuItem>) { fun Actions(list: List<MenuItem>) {

View File

@ -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.DefinedStatusCategories
import com.abdownloadmanager.desktop.pages.home.sections.category.DownloadStatusCategoryFilter import com.abdownloadmanager.desktop.pages.home.sections.category.DownloadStatusCategoryFilter
import com.abdownloadmanager.desktop.storage.PageStatesStorage import com.abdownloadmanager.desktop.storage.PageStatesStorage
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.widget.NotificationType import com.abdownloadmanager.shared.ui.widget.NotificationType
import com.abdownloadmanager.desktop.ui.widget.customtable.Sort import com.abdownloadmanager.shared.ui.widget.customtable.Sort
import com.abdownloadmanager.desktop.ui.widget.customtable.TableState import com.abdownloadmanager.shared.ui.widget.customtable.TableState
import com.abdownloadmanager.desktop.utils.* import com.abdownloadmanager.desktop.utils.*
import ir.amirab.util.compose.action.MenuItem import ir.amirab.util.compose.action.MenuItem
import ir.amirab.util.compose.action.buildMenu import ir.amirab.util.compose.action.buildMenu
import ir.amirab.util.compose.action.simpleAction import ir.amirab.util.compose.action.simpleAction
import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects import com.abdownloadmanager.shared.utils.mvi.ContainsEffects
import com.abdownloadmanager.desktop.utils.mvi.supportEffects import com.abdownloadmanager.shared.utils.mvi.supportEffects
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.DpSize
@ -23,14 +23,13 @@ import androidx.compose.ui.unit.dp
import com.abdownloadmanager.UpdateManager import com.abdownloadmanager.UpdateManager
import com.abdownloadmanager.desktop.pages.category.CategoryDialogManager import com.abdownloadmanager.desktop.pages.category.CategoryDialogManager
import com.abdownloadmanager.desktop.storage.AppSettingsStorage import com.abdownloadmanager.desktop.storage.AppSettingsStorage
import com.abdownloadmanager.desktop.ui.widget.MessageDialogType
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.utils.DownloadSystem import com.abdownloadmanager.shared.utils.*
import com.abdownloadmanager.utils.FileIconProvider import com.abdownloadmanager.shared.utils.FileIconProvider
import com.abdownloadmanager.utils.category.Category import com.abdownloadmanager.shared.utils.category.Category
import com.abdownloadmanager.utils.category.CategoryItemWithId import com.abdownloadmanager.shared.utils.category.CategoryItemWithId
import com.abdownloadmanager.utils.category.CategoryManager import com.abdownloadmanager.shared.utils.category.CategoryManager
import com.abdownloadmanager.utils.category.DefaultCategories import com.abdownloadmanager.shared.utils.category.DefaultCategories
import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.ComponentContext
import ir.amirab.downloader.downloaditem.DownloadCredentials import ir.amirab.downloader.downloaditem.DownloadCredentials
import ir.amirab.downloader.downloaditem.DownloadJobStatus 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.combineStateFlows
import ir.amirab.util.flow.mapStateFlow import ir.amirab.util.flow.mapStateFlow
import ir.amirab.util.flow.mapTwoWayStateFlow 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.RemovedBy
import ir.amirab.downloader.downloaditem.contexts.User import ir.amirab.downloader.downloaditem.contexts.User
import ir.amirab.util.AppVersionTracker import ir.amirab.util.AppVersionTracker
@ -956,7 +955,7 @@ class HomeComponent(
categoryActions.value = null categoryActions.value = null
} }
override val shortcutManager = ShortcutManager().apply { override val shortcutManager = DesktopShortcutManager().apply {
"ctrl N" to newDownloadAction "ctrl N" to newDownloadAction
"ctrl V" to newDownloadFromClipboardAction "ctrl V" to newDownloadFromClipboardAction
"ctrl C" to downloadActions.copyDownloadLinkAction "ctrl C" to downloadActions.copyDownloadLinkAction

View File

@ -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.DownloadList
import com.abdownloadmanager.desktop.pages.home.sections.SearchBox import com.abdownloadmanager.desktop.pages.home.sections.SearchBox
import com.abdownloadmanager.desktop.pages.home.sections.category.* 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 ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.* import com.abdownloadmanager.shared.ui.widget.menu.MenuBar
import com.abdownloadmanager.desktop.ui.widget.menu.MenuBar
import com.abdownloadmanager.desktop.utils.*
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeIn
@ -19,7 +17,7 @@ import androidx.compose.animation.fadeOut
import androidx.compose.foundation.* import androidx.compose.foundation.*
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape 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.runtime.*
import androidx.compose.ui.* import androidx.compose.ui.*
import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.alpha
@ -28,7 +26,6 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import com.abdownloadmanager.desktop.ui.widget.ActionButton
import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.core.animateDpAsState
import androidx.compose.foundation.draganddrop.dragAndDropTarget import androidx.compose.foundation.draganddrop.dragAndDropTarget
import androidx.compose.foundation.interaction.MutableInteractionSource 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.LocalDensity
import androidx.compose.ui.platform.LocalWindowInfo import androidx.compose.ui.platform.LocalWindowInfo
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import com.abdownloadmanager.desktop.ui.customwindow.* import com.abdownloadmanager.shared.ui.widget.*
import com.abdownloadmanager.desktop.ui.widget.menu.ShowOptionsInDropDown 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.resources.Res
import com.abdownloadmanager.utils.category.Category import com.abdownloadmanager.shared.utils.LocalSpeedUnit
import com.abdownloadmanager.utils.category.rememberIconPainter 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.resources.myStringResource
import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.StringSource
import ir.amirab.util.compose.action.MenuItem import ir.amirab.util.compose.action.MenuItem

View File

@ -1,6 +1,6 @@
package com.abdownloadmanager.desktop.pages.home 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 arrow.optics.Lens
import ir.amirab.util.config.floatKeyOf import ir.amirab.util.config.floatKeyOf
import ir.amirab.util.config.getDecoded import ir.amirab.util.config.getDecoded

View File

@ -6,13 +6,12 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.window.WindowPlacement import androidx.compose.ui.window.WindowPlacement
import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.rememberWindowState import androidx.compose.ui.window.rememberWindowState
import com.abdownloadmanager.desktop.actions.LocalShortCutManager import com.abdownloadmanager.shared.utils.LocalShortCutManager
import com.abdownloadmanager.desktop.actions.handle import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.rememberWindowController
import com.abdownloadmanager.desktop.ui.customwindow.rememberWindowController import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.utils.AppInfo import com.abdownloadmanager.desktop.utils.AppInfo
import com.abdownloadmanager.desktop.utils.mvi.HandleEffects import com.abdownloadmanager.shared.utils.mvi.HandleEffects
import java.awt.Dimension import java.awt.Dimension
@Composable @Composable

View File

@ -1,16 +1,15 @@
package com.abdownloadmanager.desktop.pages.home.sections package com.abdownloadmanager.desktop.pages.home.sections
import DOUBLE_CLICK_DELAY import com.abdownloadmanager.shared.utils.DOUBLE_CLICK_DELAY
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.widget.CheckBox import com.abdownloadmanager.shared.ui.widget.CheckBox
import com.abdownloadmanager.desktop.ui.widget.Text import com.abdownloadmanager.shared.ui.widget.Text
import com.abdownloadmanager.desktop.ui.widget.customtable.Table import com.abdownloadmanager.shared.ui.widget.customtable.Table
import com.abdownloadmanager.desktop.ui.widget.customtable.* import com.abdownloadmanager.shared.ui.widget.customtable.styled.MyStyledTableHeader
import com.abdownloadmanager.desktop.ui.widget.customtable.styled.MyStyledTableHeader import com.abdownloadmanager.shared.ui.widget.menu.LocalMenuDisabledItemBehavior
import com.abdownloadmanager.desktop.ui.widget.menu.LocalMenuDisabledItemBehavior import com.abdownloadmanager.shared.ui.widget.menu.MenuDisabledItemBehavior
import com.abdownloadmanager.desktop.ui.widget.menu.MenuDisabledItemBehavior import com.abdownloadmanager.shared.ui.widget.menu.ShowOptionsInDropDown
import com.abdownloadmanager.desktop.ui.widget.menu.ShowOptionsInDropDown
import ir.amirab.util.compose.action.MenuItem import ir.amirab.util.compose.action.MenuItem
import androidx.compose.foundation.* import androidx.compose.foundation.*
import androidx.compose.foundation.interaction.MutableInteractionSource 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.key.*
import androidx.compose.ui.input.pointer.* import androidx.compose.ui.input.pointer.*
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.shared.ui.widget.customtable.*
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.utils.FileIconProvider import com.abdownloadmanager.shared.utils.FileIconProvider
import com.abdownloadmanager.utils.category.CategoryManager import com.abdownloadmanager.shared.utils.category.CategoryManager
import com.abdownloadmanager.utils.category.rememberCategoryOf import com.abdownloadmanager.shared.utils.category.rememberCategoryOf
import ir.amirab.downloader.monitor.* import ir.amirab.downloader.monitor.*
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.StringSource

View File

@ -1,11 +1,11 @@
package com.abdownloadmanager.desktop.pages.home.sections package com.abdownloadmanager.desktop.pages.home.sections
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.MyTextField import com.abdownloadmanager.shared.ui.widget.MyTextField
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import androidx.compose.animation.* import androidx.compose.animation.*
import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.foundation.clickable 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.input.pointer.pointerHoverIcon
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.resources.*
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
@Composable @Composable

View File

@ -1,12 +1,9 @@
package com.abdownloadmanager.desktop.pages.home.sections package com.abdownloadmanager.desktop.pages.home.sections
import com.abdownloadmanager.desktop.pages.home.sections.SortIndicatorMode.* import com.abdownloadmanager.shared.utils.ui.LocalContentColor
import com.abdownloadmanager.utils.compose.LocalContentColor import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.*
import com.abdownloadmanager.desktop.utils.*
import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.core.tween import androidx.compose.animation.core.tween
import androidx.compose.foundation.background 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.graphics.Brush
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp 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.resources.Res
import com.abdownloadmanager.utils.FileIconProvider import com.abdownloadmanager.shared.utils.*
import com.abdownloadmanager.utils.category.Category import com.abdownloadmanager.shared.utils.FileIconProvider
import com.abdownloadmanager.shared.utils.category.Category
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
import ir.amirab.downloader.downloaditem.DownloadJobStatus import ir.amirab.downloader.downloaditem.DownloadJobStatus
import ir.amirab.downloader.monitor.CompletedDownloadItemState import ir.amirab.downloader.monitor.CompletedDownloadItemState
@ -48,34 +48,6 @@ private fun isSelected(): Boolean {
return LocalDownloadItemProperties.current.isSelected 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 @Composable
fun CheckCell( fun CheckCell(

View File

@ -4,18 +4,18 @@ import androidx.compose.animation.*
import androidx.compose.foundation.PointerMatcher import androidx.compose.foundation.PointerMatcher
import androidx.compose.foundation.background import androidx.compose.foundation.background
import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.ExpandableItem import com.abdownloadmanager.shared.ui.widget.ExpandableItem
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.onClick import androidx.compose.foundation.onClick
import androidx.compose.foundation.selection.selectable import androidx.compose.foundation.selection.selectable
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape 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.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier 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.input.pointer.PointerButton
import androidx.compose.ui.text.font.FontWeight 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.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.utils.div import com.abdownloadmanager.shared.utils.div
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.resources.* import com.abdownloadmanager.shared.utils.category.Category
import com.abdownloadmanager.utils.category.Category import com.abdownloadmanager.shared.utils.category.rememberIconPainter
import com.abdownloadmanager.utils.category.rememberIconPainter
import ir.amirab.downloader.downloaditem.DownloadStatus import ir.amirab.downloader.downloaditem.DownloadStatus
import ir.amirab.downloader.monitor.IDownloadItemState import ir.amirab.downloader.monitor.IDownloadItemState
import ir.amirab.downloader.monitor.statusOrFinished import ir.amirab.downloader.monitor.statusOrFinished
@ -212,7 +211,8 @@ fun StatusFilterItem(
fontSize = myTextSizes.lg, fontSize = myTextSizes.lg,
maxLines = 1, maxLines = 1,
) )
MyIcon(MyIcons.up, null, Modifier MyIcon(
MyIcons.up, null, Modifier
.fillMaxHeight().wrapContentHeight() .fillMaxHeight().wrapContentHeight()
.clip(CircleShape) .clip(CircleShape)
.size(24.dp) .size(24.dp)

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.pages.newQueue package com.abdownloadmanager.desktop.pages.newQueue
import com.abdownloadmanager.desktop.AppComponent 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.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.ui.Alignment 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.unit.dp
import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.rememberWindowState 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 import ir.amirab.util.desktop.screen.applyUiScale
@Composable @Composable

View File

@ -1,8 +1,8 @@
package com.abdownloadmanager.desktop.pages.newQueue package com.abdownloadmanager.desktop.pages.newQueue
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import com.abdownloadmanager.desktop.ui.widget.ActionButton import com.abdownloadmanager.shared.ui.widget.ActionButton
import com.abdownloadmanager.desktop.ui.widget.MyTextField import com.abdownloadmanager.shared.ui.widget.MyTextField
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Modifier 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.focus.focusRequester
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.resources.*
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
@Composable @Composable

View File

@ -2,13 +2,12 @@ package com.abdownloadmanager.desktop.pages.queue
import com.abdownloadmanager.desktop.pages.settings.configurable.* import com.abdownloadmanager.desktop.pages.settings.configurable.*
import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.ConfigurableGroup 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.createMutableStateFlowFromStateFlow
import ir.amirab.util.flow.mapStateFlow import ir.amirab.util.flow.mapStateFlow
import com.abdownloadmanager.desktop.utils.newScopeBasedOn import com.abdownloadmanager.desktop.utils.newScopeBasedOn
import androidx.compose.runtime.toMutableStateList import androidx.compose.runtime.toMutableStateList
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.resources.*
import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.ComponentContext
import ir.amirab.downloader.monitor.IDownloadItemState import ir.amirab.downloader.monitor.IDownloadItemState
import ir.amirab.downloader.monitor.IDownloadMonitor import ir.amirab.downloader.monitor.IDownloadMonitor

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.pages.queue package com.abdownloadmanager.desktop.pages.queue
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.utils.mvi.HandleEffects import com.abdownloadmanager.shared.utils.mvi.HandleEffects
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.window.rememberWindowState import androidx.compose.ui.window.rememberWindowState

View File

@ -2,9 +2,12 @@ package com.abdownloadmanager.desktop.pages.queue
import com.abdownloadmanager.desktop.actions.newQueueAction import com.abdownloadmanager.desktop.actions.newQueueAction
import com.abdownloadmanager.desktop.utils.* import com.abdownloadmanager.desktop.utils.*
import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects import com.abdownloadmanager.shared.utils.mvi.ContainsEffects
import com.abdownloadmanager.desktop.utils.mvi.supportEffects import com.abdownloadmanager.shared.utils.mvi.supportEffects
import androidx.compose.runtime.* 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.ComponentContext
import com.arkivanov.decompose.router.slot.SlotNavigation import com.arkivanov.decompose.router.slot.SlotNavigation
import com.arkivanov.decompose.router.slot.childSlot import com.arkivanov.decompose.router.slot.childSlot

View File

@ -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.ConfigurableGroup
import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurableGroup import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurableGroup
import com.abdownloadmanager.utils.compose.LocalContentAlpha import com.abdownloadmanager.shared.utils.ui.LocalContentAlpha
import com.abdownloadmanager.utils.compose.LocalContentColor import com.abdownloadmanager.shared.utils.ui.LocalContentColor
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.*
import com.abdownloadmanager.desktop.utils.*
import androidx.compose.animation.animateColorAsState import androidx.compose.animation.animateColorAsState
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.border 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.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import com.abdownloadmanager.desktop.ui.widget.Text
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier 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.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.shared.ui.widget.*
import com.abdownloadmanager.resources.Res 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.util.compose.resources.myStringResource
import ir.amirab.downloader.downloaditem.DownloadJobStatus import ir.amirab.downloader.downloaditem.DownloadJobStatus
import ir.amirab.downloader.monitor.IDownloadItemState import ir.amirab.downloader.monitor.IDownloadItemState

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.pages.settings package com.abdownloadmanager.desktop.pages.settings
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.utils.mvi.HandleEffects import com.abdownloadmanager.shared.utils.mvi.HandleEffects
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.DpSize

View File

@ -5,15 +5,15 @@ import com.abdownloadmanager.desktop.pages.settings.configurable.*
import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.repository.AppRepository
import com.abdownloadmanager.desktop.storage.AppSettingsStorage import com.abdownloadmanager.desktop.storage.AppSettingsStorage
import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.utils.BaseComponent import com.abdownloadmanager.shared.utils.BaseComponent
import com.abdownloadmanager.desktop.utils.convertPositiveSpeedToHumanReadable import com.abdownloadmanager.shared.utils.convertPositiveSpeedToHumanReadable
import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects import com.abdownloadmanager.shared.utils.mvi.ContainsEffects
import com.abdownloadmanager.desktop.utils.mvi.supportEffects import com.abdownloadmanager.shared.utils.mvi.supportEffects
import androidx.compose.runtime.* import androidx.compose.runtime.*
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.utils.proxy.ProxyManager import com.abdownloadmanager.shared.utils.proxy.ProxyManager
import com.abdownloadmanager.utils.proxy.ProxyMode import com.abdownloadmanager.shared.utils.proxy.ProxyMode
import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.ComponentContext
import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.StringSource
import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.asStringSource

View File

@ -1,16 +1,15 @@
package com.abdownloadmanager.desktop.pages.settings package com.abdownloadmanager.desktop.pages.settings
import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurable
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.desktop.ui.customwindow.WindowIcon import com.abdownloadmanager.desktop.window.custom.WindowIcon
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.widget.Handle import com.abdownloadmanager.shared.ui.widget.Handle
import com.abdownloadmanager.desktop.ui.widget.Text import com.abdownloadmanager.shared.ui.widget.Text
import com.abdownloadmanager.desktop.utils.*
import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedContent
import androidx.compose.foundation.* import androidx.compose.foundation.*
import androidx.compose.foundation.gestures.Orientation 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.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.resources.Res 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.util.compose.resources.myStringResource
import kotlinx.coroutines.channels.ticker
@Composable @Composable
private fun SideBar( private fun SideBar(

View File

@ -3,10 +3,10 @@ package com.abdownloadmanager.desktop.pages.settings
import androidx.compose.runtime.Stable import androidx.compose.runtime.Stable
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import com.abdownloadmanager.desktop.storage.AppSettingsStorage import com.abdownloadmanager.desktop.storage.AppSettingsStorage
import com.abdownloadmanager.desktop.ui.theme.MyColors import com.abdownloadmanager.shared.utils.ui.theme.ISystemThemeDetector
import com.abdownloadmanager.desktop.ui.theme.SystemThemeDetector import com.abdownloadmanager.shared.utils.ui.MyColors
import com.abdownloadmanager.desktop.ui.theme.darkColors import com.abdownloadmanager.shared.ui.theme.darkColors
import com.abdownloadmanager.desktop.ui.theme.lightColors import com.abdownloadmanager.shared.ui.theme.lightColors
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.StringSource
import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.asStringSource
@ -19,6 +19,7 @@ import kotlinx.coroutines.flow.*
class ThemeManager( class ThemeManager(
private val scope: CoroutineScope, private val scope: CoroutineScope,
private val appSettings: AppSettingsStorage, private val appSettings: AppSettingsStorage,
private val osThemeDetector: ISystemThemeDetector,
) { ) {
companion object { companion object {
val defaultThemes = listOf( val defaultThemes = listOf(
@ -73,7 +74,6 @@ class ThemeManager(
private val osThemeDetector = SystemThemeDetector()
private var osDarkModeFlow = MutableStateFlow(true) private var osDarkModeFlow = MutableStateFlow(true)
val currentThemeColor = combineStateFlows( val currentThemeColor = combineStateFlows(

View File

@ -1,16 +1,11 @@
package com.abdownloadmanager.desktop.pages.settings.configurable 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.ThemeInfo
import com.abdownloadmanager.desktop.pages.settings.configurable.BooleanConfigurable.RenderMode import com.abdownloadmanager.shared.utils.proxy.ProxyData
import com.abdownloadmanager.desktop.ui.theme.MyColors
import com.abdownloadmanager.utils.proxy.ProxyData
import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.StringSource
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.datetime.DayOfWeek import kotlinx.datetime.DayOfWeek
import kotlinx.datetime.LocalTime import kotlinx.datetime.LocalTime

View File

@ -1,8 +1,8 @@
package com.abdownloadmanager.desktop.pages.settings.configurable.widgets package com.abdownloadmanager.desktop.pages.settings.configurable.widgets
import com.abdownloadmanager.desktop.pages.settings.configurable.BooleanConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.BooleanConfigurable
import com.abdownloadmanager.desktop.ui.widget.CheckBox import com.abdownloadmanager.shared.ui.widget.CheckBox
import com.abdownloadmanager.desktop.ui.widget.Switch import com.abdownloadmanager.shared.ui.widget.Switch
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier

View File

@ -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
import com.abdownloadmanager.desktop.pages.settings.configurable.EnumConfigurable.RenderMode.* 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.foundation.layout.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier

View File

@ -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
import com.abdownloadmanager.desktop.pages.settings.configurable.FloatConfigurable.RenderMode.* import com.abdownloadmanager.desktop.pages.settings.configurable.FloatConfigurable.RenderMode.*
import com.abdownloadmanager.desktop.ui.widget.FloatTextField import com.abdownloadmanager.shared.ui.widget.FloatTextField
import com.abdownloadmanager.desktop.ui.widget.IntTextField
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions

View File

@ -1,9 +1,9 @@
package com.abdownloadmanager.desktop.pages.settings.configurable.widgets package com.abdownloadmanager.desktop.pages.settings.configurable.widgets
import com.abdownloadmanager.desktop.pages.settings.configurable.FolderConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.FolderConfigurable
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.widget.MyTextField import com.abdownloadmanager.shared.ui.widget.MyTextField
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.runtime.* import androidx.compose.runtime.*

View File

@ -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
import com.abdownloadmanager.desktop.pages.settings.configurable.IntConfigurable.RenderMode.* 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.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.pages.settings.configurable.widgets package com.abdownloadmanager.desktop.pages.settings.configurable.widgets
import com.abdownloadmanager.desktop.pages.settings.configurable.LongConfigurable 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.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions

View File

@ -15,17 +15,17 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import com.abdownloadmanager.desktop.pages.settings.configurable.ProxyConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.ProxyConfigurable
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.ui.widget.*
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.widget.* import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.utils.div import com.abdownloadmanager.shared.utils.div
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.utils.compose.LocalContentColor import com.abdownloadmanager.shared.utils.ui.LocalContentColor
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.utils.proxy.ProxyMode import com.abdownloadmanager.shared.utils.proxy.ProxyMode
import com.abdownloadmanager.utils.proxy.ProxyRules import com.abdownloadmanager.shared.utils.proxy.ProxyRules
import com.abdownloadmanager.utils.proxy.ProxyWithRules import com.abdownloadmanager.shared.utils.proxy.ProxyWithRules
import ir.amirab.downloader.connection.proxy.Proxy import ir.amirab.downloader.connection.proxy.Proxy
import ir.amirab.downloader.connection.proxy.ProxyType import ir.amirab.downloader.connection.proxy.ProxyType
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource
@ -303,7 +303,7 @@ private fun ProxyEditDialog(
Row { Row {
Text(myStringResource(Res.string.proxy_do_not_use_proxy_for)) Text(myStringResource(Res.string.proxy_do_not_use_proxy_for))
Spacer(Modifier.width(8.dp)) Spacer(Modifier.width(8.dp))
Help( com.abdownloadmanager.shared.ui.widget.Help(
myStringResource(Res.string.proxy_do_not_use_proxy_for_description) myStringResource(Res.string.proxy_do_not_use_proxy_for_description)
) )
} }

View File

@ -1,14 +1,13 @@
package com.abdownloadmanager.desktop.pages.settings.configurable.widgets package com.abdownloadmanager.desktop.pages.settings.configurable.widgets
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.util.ifThen import com.abdownloadmanager.shared.utils.div
import com.abdownloadmanager.desktop.utils.div
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape 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.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue

View File

@ -1,17 +1,17 @@
package com.abdownloadmanager.desktop.pages.settings.configurable.widgets package com.abdownloadmanager.desktop.pages.settings.configurable.widgets
import com.abdownloadmanager.desktop.pages.settings.configurable.DayOfWeekConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.DayOfWeekConfigurable
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.util.ifThen import ir.amirab.util.ifThen
import com.abdownloadmanager.desktop.utils.div import com.abdownloadmanager.shared.utils.div
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape 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.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier 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.draw.clip
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import ir.amirab.util.compose.StringSource
import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.asStringSource
import kotlinx.datetime.DayOfWeek import kotlinx.datetime.DayOfWeek
import java.time.DayOfWeek.* import java.time.DayOfWeek.*

View File

@ -1,12 +1,12 @@
package com.abdownloadmanager.desktop.pages.settings.configurable.widgets package com.abdownloadmanager.desktop.pages.settings.configurable.widgets
import com.abdownloadmanager.desktop.pages.settings.configurable.TimeConfigurable 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.Row
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.text.KeyboardOptions 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.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier

View File

@ -1,15 +1,14 @@
package com.abdownloadmanager.desktop.pages.settings.configurable.widgets package com.abdownloadmanager.desktop.pages.settings.configurable.widgets
import com.abdownloadmanager.desktop.pages.settings.configurable.Configurable import com.abdownloadmanager.desktop.pages.settings.configurable.Configurable
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentColor import com.abdownloadmanager.shared.utils.ui.WithContentColor
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.util.ifThen import ir.amirab.util.ifThen
import com.abdownloadmanager.desktop.ui.widget.Text import com.abdownloadmanager.shared.ui.widget.Text
import com.abdownloadmanager.desktop.utils.*
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.expandVertically import androidx.compose.animation.expandVertically
import androidx.compose.animation.shrinkVertically 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.unit.dp
import androidx.compose.ui.window.Popup import androidx.compose.ui.window.Popup
import androidx.compose.ui.window.rememberComponentRectPositionProvider import androidx.compose.ui.window.rememberComponentRectPositionProvider
import com.abdownloadmanager.shared.utils.div
@Composable @Composable

View File

@ -1,16 +1,16 @@
package com.abdownloadmanager.desktop.pages.settings.configurable.widgets package com.abdownloadmanager.desktop.pages.settings.configurable.widgets
import com.abdownloadmanager.desktop.pages.settings.configurable.SpeedLimitConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.SpeedLimitConfigurable
import com.abdownloadmanager.desktop.ui.widget.CheckBox import com.abdownloadmanager.shared.ui.widget.CheckBox
import com.abdownloadmanager.desktop.ui.widget.DoubleTextField import com.abdownloadmanager.shared.ui.widget.DoubleTextField
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.layout.* 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.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.desktop.utils.LocalSpeedUnit import com.abdownloadmanager.shared.utils.LocalSpeedUnit
import ir.amirab.util.datasize.* import ir.amirab.util.datasize.*
@Composable @Composable

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.pages.settings.configurable.widgets package com.abdownloadmanager.desktop.pages.settings.configurable.widgets
import com.abdownloadmanager.desktop.pages.settings.configurable.StringConfigurable 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.PaddingValues
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable

View File

@ -1,13 +1,13 @@
package com.abdownloadmanager.desktop.pages.settings.configurable.widgets package com.abdownloadmanager.desktop.pages.settings.configurable.widgets
import com.abdownloadmanager.desktop.pages.settings.configurable.ThemeConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.ThemeConfigurable
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.border import androidx.compose.foundation.border
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape 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.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue

View File

@ -8,17 +8,17 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.ActionButton import com.abdownloadmanager.shared.ui.widget.ActionButton
import com.abdownloadmanager.desktop.ui.widget.Text import com.abdownloadmanager.shared.ui.widget.Text
import com.abdownloadmanager.desktop.utils.LocalSizeUnit import com.abdownloadmanager.shared.utils.LocalSizeUnit
import com.abdownloadmanager.desktop.utils.convertPositiveSizeToHumanReadable import com.abdownloadmanager.shared.utils.convertPositiveSizeToHumanReadable
import com.abdownloadmanager.desktop.utils.div import com.abdownloadmanager.shared.utils.div
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.utils.compose.WithContentColor import com.abdownloadmanager.shared.utils.ui.WithContentColor
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import ir.amirab.downloader.monitor.CompletedDownloadItemState import ir.amirab.downloader.monitor.CompletedDownloadItemState
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource

View File

@ -1,11 +1,11 @@
package com.abdownloadmanager.desktop.pages.singleDownloadPage package com.abdownloadmanager.desktop.pages.singleDownloadPage
import com.abdownloadmanager.desktop.DownloadDialogManager import com.abdownloadmanager.desktop.DownloadDialogManager
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.WindowIcon import com.abdownloadmanager.desktop.window.custom.WindowIcon
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.utils.mvi.HandleEffects import com.abdownloadmanager.shared.utils.mvi.HandleEffects
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.unit.DpSize 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.WindowPosition
import androidx.compose.ui.window.WindowState import androidx.compose.ui.window.WindowState
import androidx.compose.ui.window.rememberWindowState 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.downloaditem.DownloadJobStatus
import ir.amirab.downloader.monitor.CompletedDownloadItemState import ir.amirab.downloader.monitor.CompletedDownloadItemState
import ir.amirab.downloader.monitor.IDownloadItemState import ir.amirab.downloader.monitor.IDownloadItemState

View File

@ -2,17 +2,14 @@ package com.abdownloadmanager.desktop.pages.singleDownloadPage
import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurable
import com.abdownloadmanager.desktop.pages.singleDownloadPage.SingleDownloadPageSections.* import com.abdownloadmanager.desktop.pages.singleDownloadPage.SingleDownloadPageSections.*
import com.abdownloadmanager.utils.compose.LocalContentColor import com.abdownloadmanager.shared.utils.ui.LocalContentColor
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentColor import com.abdownloadmanager.shared.utils.ui.WithContentColor
import ir.amirab.util.compose.IconSource import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.*
import com.abdownloadmanager.desktop.ui.widget.customtable.*
import com.abdownloadmanager.desktop.utils.*
import androidx.compose.animation.* import androidx.compose.animation.*
import androidx.compose.animation.core.* import androidx.compose.animation.core.*
import androidx.compose.foundation.* import androidx.compose.foundation.*
@ -38,8 +35,16 @@ import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Popup import androidx.compose.ui.window.Popup
import androidx.compose.ui.window.rememberComponentRectPositionProvider 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.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.downloaditem.DownloadJobStatus
import ir.amirab.downloader.monitor.* import ir.amirab.downloader.monitor.*
import ir.amirab.downloader.part.PartDownloadStatus import ir.amirab.downloader.part.PartDownloadStatus

View File

@ -3,17 +3,16 @@ package com.abdownloadmanager.desktop.pages.singleDownloadPage
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import com.abdownloadmanager.desktop.pages.settings.configurable.IntConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.IntConfigurable
import com.abdownloadmanager.desktop.pages.settings.configurable.SpeedLimitConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.SpeedLimitConfigurable
import com.abdownloadmanager.desktop.utils.* import com.abdownloadmanager.shared.utils.mvi.ContainsEffects
import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects import com.abdownloadmanager.shared.utils.mvi.supportEffects
import com.abdownloadmanager.desktop.utils.mvi.supportEffects
import arrow.optics.copy import arrow.optics.copy
import com.abdownloadmanager.desktop.pages.settings.configurable.BooleanConfigurable import com.abdownloadmanager.desktop.pages.settings.configurable.BooleanConfigurable
import com.abdownloadmanager.desktop.repository.AppRepository import com.abdownloadmanager.desktop.repository.AppRepository
import com.abdownloadmanager.desktop.storage.AppSettingsStorage import com.abdownloadmanager.desktop.storage.AppSettingsStorage
import com.abdownloadmanager.desktop.storage.PageStatesStorage import com.abdownloadmanager.desktop.storage.PageStatesStorage
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import com.abdownloadmanager.utils.DownloadSystem import com.abdownloadmanager.shared.utils.*
import com.abdownloadmanager.utils.FileIconProvider import com.abdownloadmanager.shared.utils.FileIconProvider
import com.arkivanov.decompose.ComponentContext import com.arkivanov.decompose.ComponentContext
import ir.amirab.downloader.DownloadManagerEvents import ir.amirab.downloader.DownloadManagerEvents
import ir.amirab.downloader.downloaditem.DownloadJobStatus import ir.amirab.downloader.downloaditem.DownloadJobStatus

View File

@ -3,35 +3,34 @@ package com.abdownloadmanager.desktop.pages.updater
import androidx.compose.animation.animateColor import androidx.compose.animation.animateColor
import androidx.compose.animation.core.* import androidx.compose.animation.core.*
import androidx.compose.foundation.* import androidx.compose.foundation.*
import com.abdownloadmanager.desktop.ui.customwindow.WindowIcon import com.abdownloadmanager.desktop.window.custom.WindowIcon
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.ActionButton import com.abdownloadmanager.shared.ui.widget.ActionButton
import com.abdownloadmanager.utils.compose.WithContentAlpha import com.abdownloadmanager.shared.utils.ui.WithContentAlpha
import com.abdownloadmanager.desktop.utils.div import com.abdownloadmanager.shared.utils.div
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape 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.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.BlurredEdgeTreatment import androidx.compose.ui.draw.BlurredEdgeTreatment
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.blur import androidx.compose.ui.draw.blur
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.abdownloadmanager.desktop.ui.theme.myMarkdownColors import com.abdownloadmanager.shared.ui.theme.myMarkdownColors
import com.abdownloadmanager.desktop.ui.theme.myMarkdownTypography import com.abdownloadmanager.shared.ui.theme.myMarkdownTypography
import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.Res
import io.github.z4kn4fein.semver.Version import io.github.z4kn4fein.semver.Version
import com.abdownloadmanager.updatechecker.UpdateInfo 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 com.mikepenz.markdown.compose.Markdown
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.pages.updater package com.abdownloadmanager.desktop.pages.updater
import com.abdownloadmanager.desktop.utils.AppVersion 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.UpdateManager
import com.abdownloadmanager.desktop.NotificationSender import com.abdownloadmanager.desktop.NotificationSender
import com.abdownloadmanager.desktop.ui.widget.MessageDialogType import com.abdownloadmanager.desktop.ui.widget.MessageDialogType
@ -11,7 +11,6 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.update import kotlinx.coroutines.flow.update
import org.koin.core.component.KoinComponent import org.koin.core.component.KoinComponent
import org.koin.core.component.inject import org.koin.core.component.inject
import com.abdownloadmanager.updatechecker.UpdateInfo
import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.asStringSource
class UpdateComponent( class UpdateComponent(

View File

@ -3,7 +3,7 @@ package com.abdownloadmanager.desktop.pages.updater
import com.abdownloadmanager.UpdateDownloadLocationProvider import com.abdownloadmanager.UpdateDownloadLocationProvider
import com.abdownloadmanager.updateapplier.UpdateDownloader import com.abdownloadmanager.updateapplier.UpdateDownloader
import com.abdownloadmanager.updatechecker.UpdateSource 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.DownloadItem
import ir.amirab.downloader.downloaditem.EmptyContext import ir.amirab.downloader.downloaditem.EmptyContext
import ir.amirab.downloader.utils.OnDuplicateStrategy import ir.amirab.downloader.utils.OnDuplicateStrategy

View File

@ -1,8 +1,8 @@
package com.abdownloadmanager.desktop.pages.updater package com.abdownloadmanager.desktop.pages.updater
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.widget.NotificationType import com.abdownloadmanager.shared.ui.widget.NotificationType
import com.abdownloadmanager.desktop.ui.widget.ShowNotification import com.abdownloadmanager.shared.ui.widget.ShowNotification
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.unit.DpSize 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.WindowPosition
import androidx.compose.ui.window.rememberWindowState import androidx.compose.ui.window.rememberWindowState
import com.abdownloadmanager.UpdateCheckStatus 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 com.abdownloadmanager.resources.Res
import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.StringSource
import ir.amirab.util.compose.asStringSource import ir.amirab.util.compose.asStringSource

View File

@ -3,13 +3,13 @@ package com.abdownloadmanager.desktop.repository
import ir.amirab.util.datasize.CommonSizeConvertConfigs import ir.amirab.util.datasize.CommonSizeConvertConfigs
import com.abdownloadmanager.desktop.storage.AppSettingsStorage import com.abdownloadmanager.desktop.storage.AppSettingsStorage
import com.abdownloadmanager.desktop.utils.AutoStartManager import com.abdownloadmanager.desktop.utils.AutoStartManager
import com.abdownloadmanager.utils.DownloadSystem import com.abdownloadmanager.shared.utils.DownloadSystem
import ir.amirab.downloader.DownloadSettings import ir.amirab.downloader.DownloadSettings
import com.abdownloadmanager.integration.Integration import com.abdownloadmanager.integration.Integration
import com.abdownloadmanager.integration.IntegrationResult import com.abdownloadmanager.integration.IntegrationResult
import com.abdownloadmanager.utils.autoremove.RemovedDownloadsFromDiskTracker import com.abdownloadmanager.shared.utils.autoremove.RemovedDownloadsFromDiskTracker
import com.abdownloadmanager.utils.category.CategoryManager import com.abdownloadmanager.shared.utils.category.CategoryManager
import com.abdownloadmanager.utils.proxy.ProxyManager import com.abdownloadmanager.shared.utils.proxy.ProxyManager
import ir.amirab.downloader.DownloadManager import ir.amirab.downloader.DownloadManager
import ir.amirab.downloader.monitor.IDownloadMonitor import ir.amirab.downloader.monitor.IDownloadMonitor
import ir.amirab.util.datasize.BaseSize import ir.amirab.util.datasize.BaseSize

View File

@ -1,13 +1,11 @@
package com.abdownloadmanager.desktop.storage package com.abdownloadmanager.desktop.storage
import com.abdownloadmanager.desktop.utils.*
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
import arrow.optics.Lens import arrow.optics.Lens
import arrow.optics.optics 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.compose.localizationmanager.LanguageStorage
import ir.amirab.util.config.* import ir.amirab.util.config.*
import ir.amirab.util.datasize.BaseSize
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import org.koin.core.component.KoinComponent import org.koin.core.component.KoinComponent
import java.io.File import java.io.File

View File

@ -1,11 +1,11 @@
package com.abdownloadmanager.desktop.storage package com.abdownloadmanager.desktop.storage
import com.abdownloadmanager.desktop.pages.home.HomePageStateToPersist import com.abdownloadmanager.desktop.pages.home.HomePageStateToPersist
import com.abdownloadmanager.desktop.utils.*
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
import arrow.optics.Lens import arrow.optics.Lens
import arrow.optics.optics import arrow.optics.optics
import com.abdownloadmanager.desktop.pages.singleDownloadPage.SingleDownloadPageStateToPersist import com.abdownloadmanager.desktop.pages.singleDownloadPage.SingleDownloadPageStateToPersist
import com.abdownloadmanager.shared.utils.ConfigBaseSettingsByMapConfig
import ir.amirab.util.config.getDecoded import ir.amirab.util.config.getDecoded
import ir.amirab.util.config.keyOfEncoded import ir.amirab.util.config.keyOfEncoded
import ir.amirab.util.config.putEncoded import ir.amirab.util.config.putEncoded

View File

@ -1,11 +1,9 @@
package com.abdownloadmanager.desktop.storage package com.abdownloadmanager.desktop.storage
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
import com.abdownloadmanager.desktop.utils.ConfigBaseSettingsByJson import com.abdownloadmanager.shared.utils.ConfigBaseSettingsByJson
import com.abdownloadmanager.utils.proxy.IProxyStorage import com.abdownloadmanager.shared.utils.proxy.IProxyStorage
import com.abdownloadmanager.utils.proxy.ProxyData import com.abdownloadmanager.shared.utils.proxy.ProxyData
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.update
class ProxyDatastoreStorage( class ProxyDatastoreStorage(
dataStore: DataStore<ProxyData>, dataStore: DataStore<ProxyData>,

View File

@ -11,13 +11,15 @@ import com.abdownloadmanager.desktop.pages.newQueue.NewQueueDialog
import com.abdownloadmanager.desktop.pages.queue.QueuesWindow import com.abdownloadmanager.desktop.pages.queue.QueuesWindow
import com.abdownloadmanager.desktop.pages.settings.SettingWindow import com.abdownloadmanager.desktop.pages.settings.SettingWindow
import com.abdownloadmanager.desktop.pages.singleDownloadPage.ShowDownloadDialogs import com.abdownloadmanager.desktop.pages.singleDownloadPage.ShowDownloadDialogs
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.ABDownloaderTheme import com.abdownloadmanager.shared.ui.theme.ABDownloaderTheme
import com.abdownloadmanager.desktop.ui.widget.tray.ComposeTray
import ir.amirab.util.compose.action.buildMenu 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.runtime.*
import androidx.compose.ui.window.* 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.batchdownload.BatchDownloadWindow
import com.abdownloadmanager.desktop.pages.category.ShowCategoryDialogs import com.abdownloadmanager.desktop.pages.category.ShowCategoryDialogs
import com.abdownloadmanager.desktop.pages.confirmexit.ConfirmExit 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.pages.updater.ShowUpdaterDialog
import com.abdownloadmanager.desktop.ui.widget.* import com.abdownloadmanager.desktop.ui.widget.*
import com.abdownloadmanager.desktop.utils.* 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.compose.localizationmanager.LanguageManager
import ir.amirab.util.desktop.systemtray.IComposeSystemTray
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withTimeout import kotlinx.coroutines.withTimeout
@ -63,9 +68,8 @@ object Ui : KoinComponent {
) { ) {
ProvideGlobalExceptionHandler(globalAppExceptionHandler) { ProvideGlobalExceptionHandler(globalAppExceptionHandler) {
ProvideSizeUnits(appComponent) { ProvideSizeUnits(appComponent) {
val trayState = rememberTrayState()
HandleEffectsForApp(appComponent) HandleEffectsForApp(appComponent)
SystemTray(appComponent, trayState) SystemTray(appComponent)
val showHomeSlot = appComponent.showHomeSlot.collectAsState().value val showHomeSlot = appComponent.showHomeSlot.collectAsState().value
showHomeSlot.child?.instance?.let { showHomeSlot.child?.instance?.let {
HomeWindow(it, appComponent::closeHome) HomeWindow(it, appComponent::closeHome)
@ -138,13 +142,11 @@ private fun HandleEffectsForApp(appComponent: AppComponent) {
@Composable @Composable
private fun ApplicationScope.SystemTray( private fun ApplicationScope.SystemTray(
component: AppComponent, component: AppComponent,
trayState: TrayState,
) { ) {
ComposeTray( IComposeSystemTray.Instance.ComposeSystemTray(
icon = MyIcons.appIcon.rememberPainter(), icon = MyIcons.appIcon,
onClick = showDownloadList, onClick = showDownloadList,
tooltip = "Ab Download Manager", title = AppInfo.displayName.asStringSource(),
state = trayState,
menu = remember { menu = remember {
buildMenu { buildMenu {
+showDownloadList +showDownloadList

View File

@ -1,11 +1,11 @@
package com.abdownloadmanager.desktop.ui.error package com.abdownloadmanager.desktop.ui.error
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.util.ScreenSurface import com.abdownloadmanager.shared.utils.ui.widget.ScreenSurface
import com.abdownloadmanager.desktop.ui.widget.ActionButton import com.abdownloadmanager.shared.ui.widget.ActionButton
import com.abdownloadmanager.desktop.utils.AppInfo import com.abdownloadmanager.desktop.utils.AppInfo
import com.abdownloadmanager.desktop.utils.ClipboardUtil import com.abdownloadmanager.desktop.utils.ClipboardUtil
import androidx.compose.foundation.background import androidx.compose.foundation.background
@ -13,14 +13,13 @@ import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.foundation.verticalScroll 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.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.rememberWindowState import androidx.compose.ui.window.rememberWindowState

View File

@ -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<Density?> { null }
val LocalUiScale = staticCompositionLocalOf<Float?> { null }
val LocalTextSizes = compositionLocalOf<TextSizes> {
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,
)

View File

@ -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<HoverInteraction>()
.onEach {
when(it){
is HoverInteraction.Enter->{
hoveredState.isHovered.value=true
}
is HoverInteraction.Exit->{
hoveredState.isHovered.value=false
}
else->{
}
}
}.launchIn(this)
}
hoverable(mis,enabled)
}
}

View File

@ -1,11 +1,11 @@
package com.abdownloadmanager.desktop.ui.widget package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll 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.unit.dp
import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.rememberWindowState 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 com.abdownloadmanager.resources.Res
import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.StringSource
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource

View File

@ -1,12 +1,12 @@
package com.abdownloadmanager.desktop.ui.widget package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.AppComponent import com.abdownloadmanager.desktop.AppComponent
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.window.custom.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle import com.abdownloadmanager.desktop.window.custom.WindowTitle
import com.abdownloadmanager.utils.compose.widget.MyIcon import com.abdownloadmanager.shared.utils.ui.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons import com.abdownloadmanager.shared.utils.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.shared.utils.ui.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes import com.abdownloadmanager.shared.utils.ui.theme.myTextSizes
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll 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.DpSize
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.rememberWindowState 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 com.abdownloadmanager.resources.Res
import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.StringSource
import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.resources.myStringResource

View File

@ -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

View File

@ -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<MenuItem>,
) {
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()
}
)
}

Some files were not shown because too many files have changed in this diff Show More