apply ui scale on some windows

This commit is contained in:
AmirHossein Abdolmotallebi 2024-12-05 01:27:55 +03:30
parent 6b704cc9ea
commit 844a885a91
12 changed files with 62 additions and 25 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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