diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/about/AboutDialog.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/about/AboutDialog.kt index 328a5f2..de7233c 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/about/AboutDialog.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/about/AboutDialog.kt @@ -9,9 +9,11 @@ import androidx.compose.runtime.collectAsState import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.rememberWindowState +import com.abdownloadmanager.desktop.ui.theme.LocalUiScale import com.abdownloadmanager.resources.Res import com.abdownloadmanager.resources.* import ir.amirab.util.compose.resources.myStringResource +import ir.amirab.util.desktop.screen.applyUiScale @Composable fun ShowAboutDialog(appComponent: AppComponent) { @@ -41,6 +43,7 @@ fun AboutDialog( onRequestToggleMaximize = null, state = rememberWindowState( size = DpSize(400.dp, 330.dp) + .applyUiScale(LocalUiScale.current) ), onCloseRequest = onClose ) { diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/ShowAddDownloadDialogs.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/ShowAddDownloadDialogs.kt index 37d55c0..28da2bc 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/ShowAddDownloadDialogs.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/ShowAddDownloadDialogs.kt @@ -5,7 +5,6 @@ import com.abdownloadmanager.desktop.pages.addDownload.multiple.AddMultiDownload import com.abdownloadmanager.desktop.pages.addDownload.multiple.AddMultiItemPage import com.abdownloadmanager.desktop.pages.addDownload.single.AddDownloadPage import com.abdownloadmanager.desktop.pages.addDownload.single.AddSingleDownloadComponent -import com.abdownloadmanager.desktop.pages.singleDownloadPage.SingleDownloadEffects import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.ui.customwindow.WindowIcon import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle @@ -19,9 +18,10 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState +import com.abdownloadmanager.desktop.ui.theme.LocalUiScale import com.abdownloadmanager.resources.Res -import com.abdownloadmanager.resources.* import ir.amirab.util.compose.resources.myStringResource +import ir.amirab.util.desktop.screen.applyUiScale import java.awt.Dimension @Composable @@ -32,10 +32,11 @@ fun ShowAddDownloadDialogs(component: AddDownloadDialogManager) { val onRequestClose = { component.closeAddDownloadDialog(addDownloadComponent.id) } + val uiScale = LocalUiScale.current when (addDownloadComponent) { is AddSingleDownloadComponent -> { - val h = 265 - val w = 500 + val h = 265.applyUiScale(uiScale) + val w = 500.applyUiScale(uiScale) val size = remember { DpSize( height = h.dp, diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/ExtraConfig.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/ExtraConfig.kt index 4b25c08..7a7d468 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/ExtraConfig.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/addDownload/shared/ExtraConfig.kt @@ -22,6 +22,8 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.rememberDialogState import com.abdownloadmanager.desktop.pages.settings.configurable.Configurable +import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import ir.amirab.util.desktop.screen.applyUiScale import java.awt.Dimension import java.awt.MouseInfo @@ -36,7 +38,7 @@ fun ExtraConfig( size = DpSize( height = h.dp, width = w.dp, - ), + ).applyUiScale(LocalUiScale.current), ) BaseOptionDialog(onDismiss, state) { LaunchedEffect(window){ diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownloadWindow.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownloadWindow.kt index 28cafaa..d103895 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownloadWindow.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/batchdownload/BatchDownloadWindow.kt @@ -7,13 +7,16 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow +import com.abdownloadmanager.desktop.ui.theme.LocalUiScale import com.abdownloadmanager.desktop.utils.mvi.HandleEffects +import ir.amirab.util.desktop.screen.applyUiScale @Composable fun BatchDownloadWindow(batchDownloadComponent: BatchDownloadComponent) { CustomWindow( state = rememberWindowState( - size = DpSize(500.dp, 420.dp), + size = DpSize(500.dp, 420.dp) + .applyUiScale(LocalUiScale.current), position = WindowPosition(Alignment.Center) ), onCloseRequest = batchDownloadComponent.onClose diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/ShowCategoryDialogs.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/ShowCategoryDialogs.kt index e718f5e..7292031 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/ShowCategoryDialogs.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/category/ShowCategoryDialogs.kt @@ -9,6 +9,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow +import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import ir.amirab.util.desktop.screen.applyUiScale @Composable fun ShowCategoryDialogs(dialogManager: CategoryDialogManager) { @@ -28,7 +30,7 @@ private fun CategoryDialog( }, alwaysOnTop = true, state = rememberWindowState( - size = DpSize(350.dp, 400.dp), + size = DpSize(350.dp, 400.dp).applyUiScale(LocalUiScale.current), position = WindowPosition.Aligned(Alignment.Center), ) ) { diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownload.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownload.kt index 02a47ba..bad65a6 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownload.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/editdownload/EditDownload.kt @@ -33,6 +33,7 @@ import androidx.compose.ui.window.* import com.abdownloadmanager.desktop.pages.addDownload.shared.ExtraConfig import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow import com.abdownloadmanager.desktop.ui.customwindow.WindowTitle +import com.abdownloadmanager.desktop.ui.theme.LocalUiScale import com.abdownloadmanager.desktop.ui.util.ifThen import com.abdownloadmanager.desktop.utils.mvi.HandleEffects import com.abdownloadmanager.resources.Res @@ -41,6 +42,7 @@ import com.abdownloadmanager.utils.compose.WithContentColor import ir.amirab.util.UrlUtils import ir.amirab.util.compose.resources.myStringResource import ir.amirab.util.compose.asStringSource +import ir.amirab.util.desktop.screen.applyUiScale @Composable fun EditDownloadWindow( @@ -48,7 +50,8 @@ fun EditDownloadWindow( ) { CustomWindow( state = rememberWindowState( - size = DpSize(450.dp, 230.dp), + size = DpSize(450.dp, 230.dp) + .applyUiScale(LocalUiScale.current), position = WindowPosition.Aligned(Alignment.Center) ), alwaysOnTop = true, diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/newQueue/NewQueueDialog.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/newQueue/NewQueueDialog.kt index 515a244..ef30740 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/newQueue/NewQueueDialog.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/newQueue/NewQueueDialog.kt @@ -9,6 +9,8 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState +import com.abdownloadmanager.desktop.ui.theme.LocalUiScale +import ir.amirab.util.desktop.screen.applyUiScale @Composable fun NewQueueDialog( @@ -17,7 +19,8 @@ fun NewQueueDialog( if (appComponent.showCreateQueueDialog.collectAsState().value){ CustomWindow( state = rememberWindowState( - size = DpSize(width = 300.dp, height = 130.dp), + size = DpSize(width = 300.dp, height = 130.dp) + .applyUiScale(LocalUiScale.current), position = WindowPosition.Aligned(Alignment.Center), ), resizable = false, diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingWindow.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingWindow.kt index 47110fe..3cebbac 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingWindow.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/settings/SettingWindow.kt @@ -1,16 +1,9 @@ package com.abdownloadmanager.desktop.pages.settings import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow -import com.abdownloadmanager.desktop.ui.theme.myColors import com.abdownloadmanager.desktop.utils.mvi.HandleEffects -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.width import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/ShowDownloadDialogs.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/ShowDownloadDialogs.kt index e105d31..7817290 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/ShowDownloadDialogs.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/pages/singleDownloadPage/ShowDownloadDialogs.kt @@ -14,12 +14,14 @@ import androidx.compose.ui.window.FrameWindowScope import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.WindowState import androidx.compose.ui.window.rememberWindowState +import com.abdownloadmanager.desktop.ui.theme.LocalUiScale import ir.amirab.downloader.downloaditem.DownloadJobStatus import ir.amirab.downloader.monitor.CompletedDownloadItemState import ir.amirab.downloader.monitor.IDownloadItemState import ir.amirab.downloader.monitor.ProcessingDownloadItemState import ir.amirab.downloader.monitor.statusOrFinished import ir.amirab.downloader.utils.ExceptionUtils +import ir.amirab.util.desktop.screen.applyUiScale import java.awt.Dimension import java.awt.Taskbar import java.awt.Window @@ -110,9 +112,12 @@ private fun CompletedWindow( } val defaultHeight = 160f val defaultWidth = 450f + val uiScale = LocalUiScale.current val state = rememberWindowState( - height = defaultHeight.dp, - width = defaultWidth.dp, + size = DpSize( + height = defaultHeight.dp, + width = defaultWidth.dp + ).applyUiScale(uiScale), position = WindowPosition(Alignment.Center) ) CustomWindow( @@ -136,7 +141,7 @@ private fun CompletedWindow( state.size = DpSize( width = w.dp, height = h.dp - ) + ).applyUiScale(uiScale) } CompletedDownloadPage( singleDownloadComponent, @@ -153,8 +158,9 @@ private fun ProgressWindow( val onRequestClose = { singleDownloadComponent.close() } - val defaultHeight = 290f - val defaultWidth = 450f + val uiScale = LocalUiScale.current + val defaultHeight = 290f.applyUiScale(uiScale) + val defaultWidth = 450f.applyUiScale(uiScale) val showPartInfo by singleDownloadComponent.showPartInfo.collectAsState() val state = rememberWindowState( @@ -181,6 +187,7 @@ private fun ProgressWindow( var w = defaultWidth if (showPartInfo) { h += singleDownloadPageSizing.partInfoHeight.value + .applyUiScale(uiScale) } LaunchedEffect(w, h) { state.size = DpSize( diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ConfirmDialog.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ConfirmDialog.kt index 9bb052e..845c0a4 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ConfirmDialog.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/ConfirmDialog.kt @@ -18,9 +18,11 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberWindowState +import com.abdownloadmanager.desktop.ui.theme.LocalUiScale import com.abdownloadmanager.resources.Res import ir.amirab.util.compose.StringSource import ir.amirab.util.compose.resources.myStringResource +import ir.amirab.util.desktop.screen.applyUiScale import java.awt.Dimension @Suppress("unused") @@ -39,8 +41,9 @@ fun ConfirmDialog( onConfirm: () -> Unit, onCancel: () -> Unit, ) { - val h = 180 - val w = 400 + val uiScale = LocalUiScale.current + val h = 180.applyUiScale(uiScale) + val w = 400.applyUiScale(uiScale) val state = rememberWindowState( size = DpSize(w.dp, h.dp), position = WindowPosition.Aligned(Alignment.Center) diff --git a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MessageDialogModel.kt b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MessageDialogModel.kt index ce1b1b3..9ae784d 100644 --- a/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MessageDialogModel.kt +++ b/desktop/app/src/main/kotlin/com/abdownloadmanager/desktop/ui/widget/MessageDialogModel.kt @@ -19,7 +19,9 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.rememberWindowState +import com.abdownloadmanager.desktop.ui.theme.LocalUiScale import ir.amirab.util.compose.StringSource +import ir.amirab.util.desktop.screen.applyUiScale import java.awt.Dimension import java.util.UUID @@ -59,8 +61,9 @@ fun MessageDialog( msgContent: MessageDialogModel, onConfirm: () -> Unit, ) { - val h = 200 - val w = 400 + val uiScale = LocalUiScale.current + val h = 200.applyUiScale(uiScale) + val w = 400.applyUiScale(uiScale) val state = rememberWindowState( size = DpSize(w.dp, h.dp) ) diff --git a/desktop/shared/src/main/kotlin/ir/amirab/util/desktop/screen/DesktopScreen.kt b/desktop/shared/src/main/kotlin/ir/amirab/util/desktop/screen/DesktopScreen.kt index 71020ee..4df8a02 100644 --- a/desktop/shared/src/main/kotlin/ir/amirab/util/desktop/screen/DesktopScreen.kt +++ b/desktop/shared/src/main/kotlin/ir/amirab/util/desktop/screen/DesktopScreen.kt @@ -21,6 +21,13 @@ fun Int.applyUiScale( if (userUiScale == null) return this return (this * userUiScale / systemUiScale).toInt() } +fun Float.applyUiScale( + userUiScale: Float?, + systemUiScale: Float = GlobalDensity.density, +): Float { + if (userUiScale == null) return this + return (this * userUiScale / systemUiScale) +} fun Int.unApplyUiScale( userUiScale: Float?, @@ -29,6 +36,13 @@ fun Int.unApplyUiScale( if (userUiScale == null) return this return (this * systemUiScale / userUiScale).toInt() } +fun Float.unApplyUiScale( + userUiScale: Float?, + systemUiScale: Float = GlobalDensity.density, +): Float { + if (userUiScale == null) return this + return (this * systemUiScale / userUiScale) +} fun DpSize.applyUiScale( userUiScale: Float?,