remove IconSource/Actions from desktop module and move them to shared modules

This commit is contained in:
AmirHossein Abdolmotallebi 2024-09-14 13:48:33 +03:30
parent fa752d8ab8
commit 6293a378bc
61 changed files with 220 additions and 237 deletions

View File

@ -4,9 +4,9 @@ import com.abdownloadmanager.desktop.AppComponent
import com.abdownloadmanager.desktop.di.Di
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.widget.MessageDialogType
import com.abdownloadmanager.desktop.utils.action.AnAction
import com.abdownloadmanager.desktop.utils.action.MenuItem
import com.abdownloadmanager.desktop.utils.action.simpleAction
import ir.amirab.util.compose.action.AnAction
import ir.amirab.util.compose.action.MenuItem
import ir.amirab.util.compose.action.simpleAction
import org.koin.core.component.get
private val appComponent = Di.get<AppComponent>()

View File

@ -7,10 +7,10 @@ import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.widget.menu.SubMenu
import com.abdownloadmanager.desktop.utils.AppInfo
import com.abdownloadmanager.desktop.utils.ClipboardUtil
import com.abdownloadmanager.desktop.utils.action.AnAction
import com.abdownloadmanager.desktop.utils.action.MenuItem
import com.abdownloadmanager.desktop.utils.action.buildMenu
import com.abdownloadmanager.desktop.utils.action.simpleAction
import ir.amirab.util.compose.action.AnAction
import ir.amirab.util.compose.action.MenuItem
import ir.amirab.util.compose.action.buildMenu
import ir.amirab.util.compose.action.simpleAction
import com.abdownloadmanager.desktop.utils.getIcon
import com.abdownloadmanager.desktop.utils.getName
import ir.amirab.downloader.downloaditem.DownloadCredentials

View File

@ -1,14 +1,14 @@
package com.abdownloadmanager.desktop.pages.about
import com.abdownloadmanager.desktop.ui.LocalTextStyle
import com.abdownloadmanager.desktop.ui.ProvideTextStyle
import com.abdownloadmanager.utils.compose.LocalTextStyle
import com.abdownloadmanager.utils.compose.ProvideTextStyle
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.ActionButton
import com.abdownloadmanager.desktop.ui.widget.Text
import com.abdownloadmanager.desktop.utils.AppInfo
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
import androidx.compose.foundation.hoverable
@ -29,7 +29,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.util.ifThen
@Composable

View File

@ -5,7 +5,7 @@ import com.abdownloadmanager.desktop.pages.addDownload.shared.LocationTextField
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.ActionButton
import com.abdownloadmanager.desktop.ui.widget.Text
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import androidx.compose.foundation.layout.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.pages.addDownload.multiple
import com.abdownloadmanager.desktop.pages.addDownload.DownloadUiChecker
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.*

View File

@ -5,7 +5,7 @@ import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderC
import com.abdownloadmanager.desktop.ui.customwindow.BaseOptionDialog
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.widget.Text
import com.abdownloadmanager.desktop.ui.WithContentColor
import com.abdownloadmanager.utils.compose.WithContentColor
import com.abdownloadmanager.desktop.utils.div
import com.abdownloadmanager.desktop.utils.windowUtil.moveSafe
import androidx.compose.foundation.*

View File

@ -8,7 +8,7 @@ import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.ActionButton
import com.abdownloadmanager.desktop.ui.widget.IconActionButton
import com.abdownloadmanager.desktop.ui.widget.Text
import com.abdownloadmanager.desktop.ui.WithContentColor
import com.abdownloadmanager.utils.compose.WithContentColor
import com.abdownloadmanager.desktop.utils.div
import com.abdownloadmanager.desktop.utils.windowUtil.moveSafe
import androidx.compose.foundation.*
@ -23,7 +23,6 @@ import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.rememberDialogState
import ir.amirab.downloader.queue.DownloadQueue
import java.awt.MouseInfo

View File

@ -4,11 +4,11 @@ import com.abdownloadmanager.desktop.pages.addDownload.shared.ExtraConfig
import com.abdownloadmanager.desktop.pages.addDownload.shared.LocationTextField
import com.abdownloadmanager.desktop.pages.addDownload.shared.ShowAddToQueueDialog
import com.abdownloadmanager.desktop.pages.home.sections.category.DefinedTypeCategories
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.desktop.ui.WithContentColor
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentColor
import com.abdownloadmanager.desktop.ui.customwindow.BaseOptionDialog
import com.abdownloadmanager.desktop.ui.icon.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes

View File

@ -1,10 +1,10 @@
package com.abdownloadmanager.desktop.pages.extenallibs
import com.abdownloadmanager.desktop.ui.ProvideTextStyle
import com.abdownloadmanager.utils.compose.ProvideTextStyle
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.customtable.Table
import com.abdownloadmanager.desktop.ui.widget.customtable.TableState
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.rememberLazyListState

View File

@ -1,11 +1,11 @@
package com.abdownloadmanager.desktop.pages.extenallibs
import com.abdownloadmanager.desktop.pages.about.MaybeLinkText
import com.abdownloadmanager.desktop.ui.ProvideTextStyle
import com.abdownloadmanager.utils.compose.ProvideTextStyle
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.ActionButton
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.desktop.utils.div
import androidx.compose.foundation.background
import androidx.compose.foundation.border

View File

@ -1,14 +1,14 @@
package com.abdownloadmanager.desktop.pages.home
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.util.ifThen
import com.abdownloadmanager.desktop.ui.widget.menu.MyDropDown
import com.abdownloadmanager.desktop.ui.widget.menu.SubMenu
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.desktop.ui.WithContentColor
import com.abdownloadmanager.desktop.utils.action.MenuItem
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentColor
import ir.amirab.util.compose.action.MenuItem
import com.abdownloadmanager.desktop.utils.div
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*

View File

@ -12,9 +12,9 @@ import com.abdownloadmanager.desktop.ui.widget.NotificationType
import com.abdownloadmanager.desktop.ui.widget.customtable.Sort
import com.abdownloadmanager.desktop.ui.widget.customtable.TableState
import com.abdownloadmanager.desktop.utils.*
import com.abdownloadmanager.desktop.utils.action.MenuItem
import com.abdownloadmanager.desktop.utils.action.buildMenu
import com.abdownloadmanager.desktop.utils.action.simpleAction
import ir.amirab.util.compose.action.MenuItem
import ir.amirab.util.compose.action.buildMenu
import ir.amirab.util.compose.action.simpleAction
import com.abdownloadmanager.desktop.utils.mvi.ContainsEffects
import com.abdownloadmanager.desktop.utils.mvi.supportEffects
import androidx.compose.runtime.*

View File

@ -3,10 +3,10 @@ package com.abdownloadmanager.desktop.pages.home
import com.abdownloadmanager.desktop.pages.home.sections.DownloadList
import com.abdownloadmanager.desktop.pages.home.sections.SearchBox
import com.abdownloadmanager.desktop.pages.home.sections.category.*
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle
import com.abdownloadmanager.desktop.ui.icon.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.pages.home.sections
import DOUBLE_CLICK_DELAY
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.widget.CheckBox
import com.abdownloadmanager.desktop.ui.widget.Text
@ -11,7 +11,7 @@ import com.abdownloadmanager.desktop.ui.widget.customtable.styled.MyStyledTableH
import com.abdownloadmanager.desktop.ui.widget.menu.LocalMenuDisabledItemBehavior
import com.abdownloadmanager.desktop.ui.widget.menu.MenuDisabledItemBehavior
import com.abdownloadmanager.desktop.ui.widget.menu.ShowOptionsInDropDown
import com.abdownloadmanager.desktop.utils.action.MenuItem
import ir.amirab.util.compose.action.MenuItem
import androidx.compose.foundation.*
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.*

View File

@ -1,11 +1,11 @@
package com.abdownloadmanager.desktop.pages.home.sections
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.MyTextField
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import androidx.compose.animation.*
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.foundation.clickable

View File

@ -2,8 +2,8 @@ package com.abdownloadmanager.desktop.pages.home.sections
import com.abdownloadmanager.desktop.pages.home.sections.SortIndicatorMode.*
import com.abdownloadmanager.desktop.pages.home.sections.category.DefinedTypeCategories
import com.abdownloadmanager.desktop.ui.LocalContentColor
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.LocalContentColor
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.*

View File

@ -1,11 +1,11 @@
package com.abdownloadmanager.desktop.pages.home.sections.category
import com.abdownloadmanager.desktop.ui.icon.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.ExpandableItem
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.selection.selectable

View File

@ -2,11 +2,11 @@ package com.abdownloadmanager.desktop.pages.queue
import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.ConfigurableGroup
import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurableGroup
import com.abdownloadmanager.desktop.ui.LocalContentAlpha
import com.abdownloadmanager.desktop.ui.LocalContentColor
import com.abdownloadmanager.utils.compose.LocalContentAlpha
import com.abdownloadmanager.utils.compose.LocalContentColor
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle
import com.abdownloadmanager.desktop.ui.icon.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes

View File

@ -4,7 +4,7 @@ import com.abdownloadmanager.desktop.pages.settings.SettingSections.*
import com.abdownloadmanager.desktop.pages.settings.configurable.*
import com.abdownloadmanager.desktop.repository.AppRepository
import com.abdownloadmanager.desktop.storage.AppSettingsStorage
import com.abdownloadmanager.desktop.ui.icon.IconSource
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.utils.BaseComponent
import com.abdownloadmanager.desktop.utils.convertSpeedToHumanReadable

View File

@ -1,11 +1,11 @@
package com.abdownloadmanager.desktop.pages.settings
import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurable
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.desktop.ui.customwindow.WindowIcon
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle
import com.abdownloadmanager.desktop.ui.icon.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.widget.Handle

View File

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

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.pages.settings.configurable.widgets
import com.abdownloadmanager.desktop.pages.settings.configurable.DayOfWeekConfigurable
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes

View File

@ -1,9 +1,9 @@
package com.abdownloadmanager.desktop.pages.settings.configurable.widgets
import com.abdownloadmanager.desktop.pages.settings.configurable.Configurable
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.desktop.ui.WithContentColor
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentColor
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
@ -28,7 +28,6 @@ import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Popup
import androidx.compose.ui.window.rememberComponentRectPositionProvider

View File

@ -2,11 +2,11 @@ package com.abdownloadmanager.desktop.pages.singleDownloadPage
import com.abdownloadmanager.desktop.pages.settings.configurable.widgets.RenderConfigurable
import com.abdownloadmanager.desktop.pages.singleDownloadPage.SingleDownloadPageSections.*
import com.abdownloadmanager.desktop.ui.LocalContentColor
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.desktop.ui.WithContentColor
import com.abdownloadmanager.desktop.ui.icon.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.LocalContentColor
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentColor
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes

View File

@ -6,7 +6,7 @@ import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.widget.ActionButton
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.desktop.utils.div
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*

View File

@ -20,7 +20,7 @@ import com.abdownloadmanager.desktop.ui.widget.useNotification
import com.abdownloadmanager.desktop.utils.AppInfo
import com.abdownloadmanager.desktop.utils.GlobalAppExceptionHandler
import com.abdownloadmanager.desktop.utils.ProvideGlobalExceptionHandler
import com.abdownloadmanager.desktop.utils.action.buildMenu
import ir.amirab.util.compose.action.buildMenu
import com.abdownloadmanager.desktop.utils.isInDebugMode
import com.abdownloadmanager.desktop.utils.mvi.HandleEffects
import androidx.compose.runtime.*

View File

@ -1,9 +1,9 @@
package com.abdownloadmanager.desktop.ui.customwindow
import ir.amirab.util.customwindow.ProvideWindowSpotContainer
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.desktop.ui.WithContentColor
import com.abdownloadmanager.desktop.ui.icon.IconSource
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentColor
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcons
//import com.abdownloadmanager.desktop.ui.theme.LocalUiScale
import com.abdownloadmanager.desktop.ui.theme.myColors

View File

@ -1,20 +1,7 @@
package com.abdownloadmanager.desktop.ui.customwindow
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.util.ScreenSurface
import com.abdownloadmanager.desktop.ui.WithContentColor
import com.abdownloadmanager.desktop.utils.div
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.*
import java.awt.event.FocusListener
import java.awt.event.WindowEvent
import java.awt.event.WindowFocusListener

View File

@ -1,8 +1,8 @@
package com.abdownloadmanager.desktop.ui.customwindow
import com.abdownloadmanager.desktop.ui.LocalContentColor
import com.abdownloadmanager.desktop.ui.icon.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.LocalContentColor
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import androidx.compose.animation.animateColorAsState

View File

@ -1,5 +1,9 @@
package com.abdownloadmanager.desktop.ui.icon
import com.abdownloadmanager.utils.compose.IMyIcons
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.asIconSource
object MyIcons : IMyIcons {
override val appIcon: IconSource get() = "icons/app_icon.svg".asIconSource(false)

View File

@ -1,10 +1,10 @@
package com.abdownloadmanager.desktop.ui.theme
import com.abdownloadmanager.desktop.ui.LocalContentAlpha
import com.abdownloadmanager.desktop.ui.LocalContentColor
import com.abdownloadmanager.desktop.ui.LocalTextStyle
import com.abdownloadmanager.utils.compose.LocalContentAlpha
import com.abdownloadmanager.utils.compose.LocalContentColor
import com.abdownloadmanager.utils.compose.LocalTextStyle
import com.abdownloadmanager.desktop.ui.widget.menu.SubMenu
import com.abdownloadmanager.desktop.utils.action.buildMenu
import ir.amirab.util.compose.action.buildMenu
import com.abdownloadmanager.desktop.utils.darker
import com.abdownloadmanager.desktop.utils.div
import androidx.compose.animation.core.tween
@ -24,7 +24,6 @@ import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.Popup
import androidx.compose.ui.window.PopupProperties
import androidx.compose.ui.window.rememberPopupPositionProviderAtPosition
import com.abdownloadmanager.desktop.pages.settings.ThemeManager
/*
fun MyColors.asMaterial2Colors(): Colors {

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.ui.util
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.WithContentColor
import com.abdownloadmanager.utils.compose.WithContentColor
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.runtime.Composable

View File

@ -1,10 +1,10 @@
package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.ui.LocalContentColor
import com.abdownloadmanager.utils.compose.LocalContentColor
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.desktop.ui.WithContentColor
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentColor
import com.abdownloadmanager.desktop.utils.div
import androidx.compose.foundation.background
import androidx.compose.foundation.border

View File

@ -1,10 +1,10 @@
package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.ui.LocalContentColor
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.LocalContentColor
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.util.ifThen

View File

@ -3,14 +3,13 @@ package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.AppComponent
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import com.abdownloadmanager.desktop.ui.widget.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.ui.icon.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.util.ifThen
import com.abdownloadmanager.desktop.utils.div
@ -12,11 +12,8 @@ import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.clip

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.ui.LocalContentColor
import com.abdownloadmanager.desktop.ui.LocalTextStyle
import com.abdownloadmanager.utils.compose.LocalContentColor
import com.abdownloadmanager.utils.compose.LocalTextStyle
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.util.ifThen
import com.abdownloadmanager.desktop.utils.div

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.*

View File

@ -1,10 +1,10 @@
package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.desktop.utils.div
import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.background
@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.shape.RoundedCornerShape
import com.abdownloadmanager.desktop.ui.widget.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -22,7 +21,6 @@ import androidx.compose.ui.draw.shadow
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import kotlinx.coroutines.*
private val LocalNotification = compositionLocalOf<NotificationManager> {

View File

@ -1,9 +1,9 @@
package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.util.ifThen
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.hoverable

View File

@ -1,22 +1,20 @@
package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.ui.icon.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.onClick
import androidx.compose.foundation.shape.RoundedCornerShape
import com.abdownloadmanager.desktop.ui.widget.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
@Composable

View File

@ -1,8 +1,8 @@
package com.abdownloadmanager.desktop.ui.widget
import com.abdownloadmanager.desktop.ui.LocalContentAlpha
import com.abdownloadmanager.desktop.ui.LocalContentColor
import com.abdownloadmanager.desktop.ui.LocalTextStyle
import com.abdownloadmanager.utils.compose.LocalContentAlpha
import com.abdownloadmanager.utils.compose.LocalContentColor
import com.abdownloadmanager.utils.compose.LocalTextStyle
import androidx.compose.foundation.text.BasicText
import androidx.compose.foundation.text.InlineTextContent
import androidx.compose.runtime.Composable

View File

@ -3,8 +3,8 @@ package com.abdownloadmanager.desktop.ui.widget.customtable
import com.abdownloadmanager.desktop.pages.home.sections.SortIndicatorMode
import com.abdownloadmanager.desktop.pages.home.sections.isAscending
import com.abdownloadmanager.desktop.pages.home.sections.isDescending
import com.abdownloadmanager.desktop.ui.LocalContentColor
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.LocalContentColor
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes

View File

@ -2,7 +2,7 @@ package com.abdownloadmanager.desktop.ui.widget.customtable.styled
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.widget.customtable.TableScope
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentAlpha
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding

View File

@ -1,16 +1,16 @@
package com.abdownloadmanager.desktop.ui.widget.menu
import com.abdownloadmanager.desktop.actions.LocalShortCutManager
import com.abdownloadmanager.desktop.ui.ProvideTextStyle
import com.abdownloadmanager.desktop.ui.icon.MyIcon
import com.abdownloadmanager.utils.compose.ProvideTextStyle
import com.abdownloadmanager.utils.compose.widget.MyIcon
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.ui.util.ifThen
import com.abdownloadmanager.desktop.utils.KeyUtil
import com.abdownloadmanager.desktop.ui.WithContentAlpha
import com.abdownloadmanager.desktop.ui.WithContentColor
import com.abdownloadmanager.desktop.utils.action.MenuItem
import com.abdownloadmanager.utils.compose.WithContentAlpha
import com.abdownloadmanager.utils.compose.WithContentColor
import ir.amirab.util.compose.action.MenuItem
import com.abdownloadmanager.desktop.utils.div
import androidx.compose.foundation.*
import androidx.compose.foundation.interaction.MutableInteractionSource

View File

@ -2,7 +2,7 @@ package com.abdownloadmanager.desktop.ui.widget.menu
import com.abdownloadmanager.desktop.ui.theme.myColors
import com.abdownloadmanager.desktop.ui.theme.myTextSizes
import com.abdownloadmanager.desktop.utils.action.MenuItem
import ir.amirab.util.compose.action.MenuItem
import com.abdownloadmanager.desktop.utils.div
import androidx.compose.foundation.background
import androidx.compose.foundation.basicMarquee

View File

@ -2,7 +2,7 @@ package com.abdownloadmanager.desktop.ui.widget.tray
import com.abdownloadmanager.desktop.ui.customwindow.BaseOptionDialog
import com.abdownloadmanager.desktop.ui.widget.menu.SubMenu
import com.abdownloadmanager.desktop.utils.action.MenuItem
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

View File

@ -1,7 +1,7 @@
package com.abdownloadmanager.desktop.utils
import androidx.compose.runtime.Immutable
import com.abdownloadmanager.desktop.ui.icon.IconSource
import ir.amirab.util.compose.IconSource
import com.abdownloadmanager.desktop.ui.icon.MyIcons
sealed class BrowserType(
@ -20,7 +20,7 @@ fun BrowserType.getName():String{
BrowserType.Opera -> "Opera"
}
}
fun BrowserType.getIcon():IconSource{
fun BrowserType.getIcon(): IconSource {
return when(this){
BrowserType.Chrome -> MyIcons.browserGoogleChrome
BrowserType.Edge -> MyIcons.browserMicrosoftEdge

View File

@ -1,23 +0,0 @@
package com.abdownloadmanager.desktop.utils.action
import com.abdownloadmanager.desktop.ui.icon.IconSource
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.ui.graphics.vector.ImageVector
import kotlinx.coroutines.flow.MutableStateFlow
import javax.swing.Icon
abstract class AnAction(
title: String,
icon: IconSource? = null,
) : MenuItem.SingleItem(
title=title,
icon=icon,
) {
override fun onClick() = actionPerformed()
abstract fun actionPerformed()
}

View File

@ -25,6 +25,7 @@ include("downloader:monitor")
include("integration:server")
include("shared:utils")
include("shared:app-utils")
include("shared:compose-utils")
include("shared:config")
include("shared:updater")
include("shared:auto-start")

View File

@ -5,9 +5,13 @@ plugins {
dependencies {
implementation(project(":downloader:core"))
api(project(":shared:config"))
api(project(":shared:utils"))
api(project(":shared:compose-utils"))
implementation(libs.androidx.datastore)
implementation(libs.kotlin.coroutines.core)
implementation(libs.kotlin.serialization.json)
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.ui)
}

View File

@ -1,44 +1,7 @@
package com.abdownloadmanager.desktop.ui.icon
package com.abdownloadmanager.utils.compose
import androidx.compose.foundation.Image
import com.abdownloadmanager.desktop.ui.LocalContentAlpha
import com.abdownloadmanager.desktop.ui.LocalContentColor
import com.abdownloadmanager.desktop.ui.widget.Icon
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.res.painterResource
@Immutable
sealed interface IconSource {
val value: Any
val requiredTint: Boolean
@Composable
fun rememberPainter(): Painter
@Immutable
data class StorageIconSource(
override val value: String,
override val requiredTint: Boolean,
) : IconSource {
@Composable
override fun rememberPainter(): Painter = painterResource(value)
}
@Immutable
data class VectorIconSource(
override val value: ImageVector,
override val requiredTint: Boolean,
) : IconSource {
@Composable
override fun rememberPainter(): Painter = rememberVectorPainter(value)
}
}
import ir.amirab.util.compose.IconSource
context (IMyIcons)
fun ImageVector.asIconSource(requiredTint: Boolean = true) = IconSource.VectorIconSource(this, requiredTint)
@ -46,32 +9,6 @@ fun ImageVector.asIconSource(requiredTint: Boolean = true) = IconSource.VectorIc
context (IMyIcons)
fun String.asIconSource(requiredTint: Boolean = true) = IconSource.StorageIconSource(this, requiredTint)
@Composable
fun MyIcon(
icon: IconSource,
contentDescription: String?,
modifier: Modifier = Modifier,
tint: Color = LocalContentColor.current.copy(alpha = LocalContentAlpha.current),
) {
val painter = icon.rememberPainter()
if (icon.requiredTint) {
Icon(
painter = painter,
contentDescription = contentDescription,
modifier = modifier,
tint = tint,
)
} else {
Image(
painter = painter,
contentDescription = contentDescription,
modifier = modifier,
)
}
}
interface IMyIcons {
val appIcon: IconSource

View File

@ -1,4 +1,4 @@
package com.abdownloadmanager.desktop.ui
package com.abdownloadmanager.utils.compose
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider

View File

@ -1,7 +1,8 @@
package com.abdownloadmanager.desktop.ui.widget
package com.abdownloadmanager.utils.compose.widget
import com.abdownloadmanager.desktop.ui.LocalContentAlpha
import com.abdownloadmanager.desktop.ui.LocalContentColor
import androidx.compose.foundation.Image
import com.abdownloadmanager.utils.compose.LocalContentAlpha
import com.abdownloadmanager.utils.compose.LocalContentColor
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.size
import androidx.compose.runtime.Composable
@ -24,6 +25,7 @@ import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.role
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import ir.amirab.util.compose.IconSource
@Composable
@NonRestartableComposable
@ -98,3 +100,27 @@ private fun Size.isInfinite() = width.isInfinite() && height.isInfinite()
// Default icon size, for icons with no intrinsic size information
private val DefaultIconSizeModifier = Modifier.size(24.dp)
@Composable
fun MyIcon(
icon: IconSource,
contentDescription: String?,
modifier: Modifier = Modifier,
tint: Color = LocalContentColor.current.copy(alpha = LocalContentAlpha.current),
) {
val painter = icon.rememberPainter()
if (icon.requiredTint) {
Icon(
painter = painter,
contentDescription = contentDescription,
modifier = modifier,
tint = tint,
)
} else {
Image(
painter = painter,
contentDescription = contentDescription,
modifier = modifier,
)
}
}

View File

@ -0,0 +1,10 @@
plugins {
id(MyPlugins.kotlin)
id(MyPlugins.composeBase)
}
dependencies {
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.ui)
implementation(project(":shared:utils"))
}

View File

@ -0,0 +1,35 @@
package ir.amirab.util.compose
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.res.painterResource
@Immutable
sealed interface IconSource {
val value: Any
val requiredTint: Boolean
@Composable
fun rememberPainter(): Painter
@Immutable
data class StorageIconSource(
override val value: String,
override val requiredTint: Boolean,
) : IconSource {
@Composable
override fun rememberPainter(): Painter = painterResource(value)
}
@Immutable
data class VectorIconSource(
override val value: ImageVector,
override val requiredTint: Boolean,
) : IconSource {
@Composable
override fun rememberPainter(): Painter = rememberVectorPainter(value)
}
}

View File

@ -0,0 +1,17 @@
package ir.amirab.util.compose.action
import ir.amirab.util.compose.IconSource
abstract class AnAction(
title: String,
icon: IconSource? = null,
) : MenuItem.SingleItem(
title=title,
icon=icon,
) {
override fun onClick() = actionPerformed()
abstract fun actionPerformed()
}

View File

@ -1,10 +1,6 @@
package com.abdownloadmanager.desktop.utils.action
package ir.amirab.util.compose.action
import com.abdownloadmanager.desktop.ui.icon.IconSource
import com.abdownloadmanager.desktop.utils.asState
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import kotlinx.coroutines.CoroutineScope
import ir.amirab.util.compose.IconSource
import kotlinx.coroutines.flow.*
inline fun simpleAction(

View File

@ -1,6 +1,6 @@
package com.abdownloadmanager.desktop.utils.action
package ir.amirab.util.compose.action
import com.abdownloadmanager.desktop.ui.icon.IconSource
import ir.amirab.util.compose.IconSource
@DslMarker
private annotation class MenuDsl
@ -13,7 +13,7 @@ class MenuScope {
icon: IconSource? = null,
onClick: AnAction.() -> Unit,
) {
val action=simpleAction(title, icon, onClick)
val action= simpleAction(title, icon, onClick)
list.add(action)
}
@ -22,7 +22,7 @@ class MenuScope {
icon: IconSource? = null,
block: MenuScope.() -> Unit,
) {
val subMenu=MenuItem.SubMenu(
val subMenu= MenuItem.SubMenu(
title = title,
icon = icon,
items = MenuScope().apply(block).build()

View File

@ -1,6 +1,6 @@
package com.abdownloadmanager.desktop.utils.action
package ir.amirab.util.compose.action
import com.abdownloadmanager.desktop.ui.icon.IconSource
import ir.amirab.util.compose.IconSource
import ir.amirab.util.flow.mapStateFlow
import androidx.compose.runtime.*
import kotlinx.coroutines.flow.*
@ -16,7 +16,7 @@ sealed interface MenuItem {
}
interface CanBeModified{
fun setIcon(icon:IconSource?)
fun setIcon(icon: IconSource?)
fun setTitle(title:String)
}