mirror of
https://github.com/amir1376/ab-download-manager.git
synced 2025-02-20 11:43:24 +08:00
extracting common code to shared modules (#345)
This commit is contained in:
parent
3f7824dab8
commit
40ca2a51fc
9
desktop/app-utils/build.gradle.kts
Normal file
9
desktop/app-utils/build.gradle.kts
Normal 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"))
|
||||||
|
}
|
@ -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
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
@ -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
|
@ -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 {
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
|
||||||
}
|
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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())
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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(
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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>) {
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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(
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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(
|
||||||
|
@ -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(
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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.*
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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.*
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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(
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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>,
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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,
|
|
||||||
)
|
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
|
||||||
|
|
||||||
|
|
@ -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
Loading…
x
Reference in New Issue
Block a user