فهرست منبع

icons fix, need to be more improved

Milan Jurkulak 1 سال پیش
والد
کامیت
31a2632b65

+ 1 - 1
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopMenuIcon.kt

@@ -17,7 +17,7 @@ fun DesktopMenuIcon(
     iconColor: Color = Color.Black,
     iconBackgroundColor: Color = Color.White,
     iconSize: DpSize = DpSize(56.dp, 56.dp),
-    iconPadding: PaddingValues = PaddingValues(4.dp),
+    iconPadding: PaddingValues = PaddingValues(2.dp),
     iconOuterPadding: PaddingValues = PaddingValues(2.dp),
     onTooltip: (item: Any?) -> Unit = {},
     onClick: () -> Unit = {},

+ 8 - 3
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelIcon.kt

@@ -43,7 +43,7 @@ fun DesktopPanelIcon(
     iconBackgroundHover: Color = Color.White,
     iconColorRunning: Color = Color.White,
     iconSize: DpSize = DpSize(48.dp, 48.dp),
-    iconPadding: PaddingValues = PaddingValues(4.dp),
+    iconPadding: PaddingValues = PaddingValues(2.dp),
     iconOuterPadding: PaddingValues = PaddingValues(2.dp),
     iconState: MutableState<Boolean> = rememberState(false),
     contentDescription: String? = null,
@@ -85,13 +85,18 @@ fun DesktopPanelIcon(
             }
     ) {
         Button(
-            modifier = Modifier.fillMaxSize().circleBorder(2.dp, textColor.alpha(0.5f)),
+            modifier = Modifier.fillMaxSize()
+                .circleBorder(
+                    2.dp,
+                    textColor.alpha(0.5f)
+                ),
             contentPadding = PaddingValues(0.dp),
             colors = ButtonDefaults.color(background),
             elevation = ButtonDefaults.noElevation(),
             onClick = {}
         ) {
             FontIcon(
+                modifier = Modifier.fillMaxSize(),
                 iconId = materialIcon,
                 iconColor = iconColor,
                 iconBackgroundColor = if (isRunning) iconColorRunning else iconBackgroundColor,
@@ -102,7 +107,7 @@ fun DesktopPanelIcon(
         }
         if (isStarting || isRunning) {
             CircularProgressIndicator(
-                modifier = Modifier.padding(4.dp).size(iconSize),
+                modifier = Modifier.padding(4.dp).fillMaxSize(),
                 color = iconColor,
                 strokeWidth = 4.dp,
                 backgroundColor = Color.Transparent

+ 4 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/fonticon/FontIcon.kt

@@ -12,6 +12,7 @@ import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
 import org.mjdev.desktop.components.icon.ShapedIcon
 import org.mjdev.desktop.components.text.AutoResizeText
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
@@ -28,7 +29,7 @@ fun FontIcon(
     iconSize: DpSize = DpSize(32.dp, 32.dp),
     iconColor: Color = Color.Black,
     iconBackgroundColor: Color = Color.White,
-    innerPadding: PaddingValues = PaddingValues(4.dp),
+    innerPadding: PaddingValues = PaddingValues(2.dp),
     contentDescription: String = "",
     outerPadding: PaddingValues = PaddingValues(2.dp),
     iconShape: Shape = CircleShape,
@@ -49,7 +50,8 @@ fun FontIcon(
                 modifier = Modifier.align(Alignment.Center),
                 text = iconId.toChar().toString(),
                 color = iconColor,
-                fontFamily = (iconicFont ?: theme?.iconSet)?.fontFamily,
+                fontFamily = (iconicFont ?: theme.iconSet).fontFamily,
+                minFontSize = (iconSize.height.value * 0.7).sp
             )
         },
         onClick = onClick,

+ 1 - 1
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/icon/ShapedIcon.kt

@@ -32,7 +32,7 @@ fun ShapedIcon(
     contentDescription: String = "",
     customContent: (@Composable BoxScope.() -> Unit)? = null,
     iconShape: Shape = CircleShape,
-    innerPadding: PaddingValues = PaddingValues(4.dp),
+    innerPadding: PaddingValues = PaddingValues(2.dp),
     outerPadding: PaddingValues = PaddingValues(2.dp),
     visible: Boolean = true,
     onRightClick: () -> Unit = {},

+ 37 - 11
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/text/AutoResizeText.kt

@@ -3,8 +3,10 @@ package org.mjdev.desktop.components.text
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.BoxWithConstraints
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.size
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.text.font.FontFamily
@@ -12,11 +14,13 @@ import androidx.compose.ui.text.font.FontStyle
 import androidx.compose.ui.text.font.FontWeight
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.text.style.TextOverflow
+import androidx.compose.ui.unit.TextUnit
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
 import org.mjdev.desktop.extensions.Compose.preview
 import kotlin.math.min
 import org.jetbrains.compose.ui.tooling.preview.Preview
+import kotlin.math.max
 
 // todo may be need refactor
 @Suppress("FunctionName")
@@ -25,28 +29,50 @@ fun AutoResizeText(
     text: String = "A",
     modifier: Modifier = Modifier,
     color: Color = Color.Unspecified,
-    fontStyle: FontStyle? = null,
-    fontWeight: FontWeight? = null,
-    fontFamily: FontFamily? = null,
-) = BoxWithConstraints(modifier = modifier) {
+    fontStyle: FontStyle? = FontStyle.Normal,
+    fontWeight: FontWeight? = FontWeight.Bold,
+    fontFamily: FontFamily? = FontFamily.Default,
+    maxLines: Int = 1,
+    contentAlignment: Alignment = Alignment.Center,
+    textAlign: TextAlign = TextAlign.Center,
+    minFontSize: TextUnit = 16.sp
+) = BoxWithConstraints(
+    modifier = modifier,
+    contentAlignment = contentAlignment
+) {
+    val maxFontSize = minOf(maxWidth, maxHeight)
+    val calculatedFontSize = min(
+        maxFontSize.value,
+        max(
+            minFontSize.value,
+            constraints
+                .maxWidth
+                .coerceAtMost(
+                    constraints.maxHeight
+                ).toFloat() / 2
+        )
+    ).sp
     Text(
+        modifier = modifier,
         text = text,
         color = color,
-        maxLines = Int.MAX_VALUE,
-        fontSize = min(constraints.maxWidth, constraints.maxHeight).dp.minus(8.dp).value.sp,
         fontStyle = fontStyle,
-        fontWeight = fontWeight,
+        fontSize = calculatedFontSize,
         fontFamily = fontFamily,
-        textAlign = TextAlign.Center,
+        fontWeight = fontWeight,
+        maxLines = maxLines,
+        textAlign = textAlign,
         overflow = TextOverflow.Clip,
     )
 }
 
 @Preview
 @Composable
-fun AutoResizeTextPreview() = preview {
+fun AutoResizeTextPreview() = preview(64, 64) {
     AutoResizeText(
-        modifier = Modifier.background(Color.White),
-        text = "i",
+        modifier = Modifier
+            .background(Color.White)
+            .size(64.dp),
+        text = "o",
     )
 }