ソースを参照

iconic font icon ref

iconic font icon ref

iconic font icon ref

iconic font icon ref

iconic font icon ref
Milan Jurkulak 2 年 前
親
コミット
554dd7cca2

+ 5 - 5
build.gradle.kts

@@ -75,6 +75,9 @@ allprojects {
         implementation(libs.qrose)
         // tts
         implementation(libs.tts)
+        // dbus
+//        implementation(libs.dbus.java.core)
+//        implementation(libs.dbus.java.transport.native.unixsocket)
         // testing yet
         // anim
         implementation("org.jetbrains.compose.animation:animation:1.7.0-alpha03")
@@ -94,8 +97,8 @@ allprojects {
         // music
 //        implementation(libs.korau)
         // dbus
-//        implementation("org.freedesktop.dbus:dbus-java:1.2.0") // Replace with the desired version
-//        implementation("org.freedesktop.dbus:dbus-java-annotations:1.2.0")// Replace with the desired version
+//        implementation("org.freedesktop.dbus:dbus-java:2.7")
+//        implementation("org.freedesktop.dbus:dbus-java-annotations:2.7")
         // bar code
 //        implementation("io.github.alexzhirkevich:qrose-oned:1.0.1")
         // flow extensions
@@ -113,9 +116,6 @@ allprojects {
 
         // hid
 //        implementation('org.hid4java:hid4java')
-        // dbus
-        // implementation(libs.dbus.java.core)
-        // implementation(libs.dbus.java.transport.native.unixsocket)
         // javascript
         // implementation(libs.mozilla.rhino)
 

+ 2 - 4
gradle/libs.versions.toml

@@ -14,7 +14,6 @@ gradle = "8.4.0"
 kotlin = "1.9.22"
 compose = "1.7.0-alpha03"
 okhttp3 = "5.0.0-alpha.12"
-#materialKolor = "1.7.0"
 coil3 = "3.0.0-alpha06"
 ktxCoroutinesSwing = "1.8.0"
 slf4j-nop = "2.0.7"
@@ -39,7 +38,6 @@ gradle-api = { module = "com.android.tools.build:gradle-api", version.ref = "gra
 kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "ktxCoroutinesSwing" }
 mozilla-rhino = { module = "org.mozilla:rhino", version.ref = "mozilla-rhino" }
 okhttp-client = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp3" }
-#material-kolor = { module = "com.materialkolor:material-kolor", version.ref = "materialKolor" }
 google-gson = { module = "com.google.code.gson:gson", version.ref = "google-gson" }
 ini4j = { module = "org.ini4j:ini4j", version.ref = "ini4j" }
 coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil3" }
@@ -56,6 +54,8 @@ google-generativeai = { module = "dev.shreyaspatil.generativeai:generativeai-goo
 jna-platform = { module = "net.java.dev.jna:jna-platform", version.ref = "jna-platform" }
 qrose = { module = "io.github.alexzhirkevich:qrose", version.ref = "qrose" }
 tts = { module = "nl.marc-apps:tts", version.ref = "tts" }
+dbus-java-core = { module = "com.github.hypfvieh:dbus-java-core", version = "5.0.0" }
+dbus-java-transport-native-unixsocket = { module = "com.github.hypfvieh:dbus-java-transport-native-unixsocket", version = "5.0.0" }
 
 #coil-gif = { module = "io.coil-kt.coil3:coil-gif", version.ref = "coil3" }
 #korau = { module = "com.soywiz.korlibs.korau:korau", version.ref = "korau" }
@@ -65,8 +65,6 @@ tts = { module = "nl.marc-apps:tts", version.ref = "tts" }
 #landscapist-palette = { module = "com.github.skydoves:landscapist-palette", version.ref = "lanscapist" }
 #font-icons-awesome = { module = "br.com.devsrsouza.compose.icons:font-awesome-desktop", version = "1.1.0" }
 #gradle-kotlin-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
-#dbus-java-core = { module = "com.github.hypfvieh:dbus-java-core", version = "5.0.0" }
-#dbus-java-transport-native-unixsocket = { module = "com.github.hypfvieh:dbus-java-transport-native-unixsocket", version = "5.0.0" }
 #compose-webview = { module = "io.github.kevinnzou:compose-webview-multiplatform", version.ref = "compose-webview" }
 #decompose = { module = "com.arkivanov.decompose:decompose", version.ref = "decompose" }
 #decompose-extensions-compose = { module = "com.arkivanov.decompose:extensions-compose", version.ref = "decompose" }

+ 1 - 1
src/main/kotlin/eu/mjdev/desktop/Main.kt

@@ -29,7 +29,7 @@ fun main(
     val menuState = rememberVisibilityState()
 
     val handleMenuFocus: (Boolean) -> Unit = { focus ->
-        if (!focus) {
+        if (!menuState.isWindowFocus && !focus && !controlCenterState.isWindowFocus) {
             menuState.hide()
         }
     }

+ 39 - 0
src/main/kotlin/eu/mjdev/desktop/components/MeasureUnconstrainedView.kt

@@ -0,0 +1,39 @@
+package eu.mjdev.desktop.components
+
+import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.layout.SubcomposeLayout
+import androidx.compose.ui.unit.Constraints
+import androidx.compose.ui.unit.Dp
+
+@Suppress("FunctionName", "unused")
+@Composable
+fun MeasureUnconstrainedView(
+    viewToMeasure: @Composable () -> Unit,
+    content: @Composable (measuredWidth: Dp, measuredHeight: Dp) -> Unit,
+) {
+    SubcomposeLayout { constraints ->
+        val measured = subcompose("viewToMeasure", viewToMeasure)[0]
+            .measure(Constraints())
+        val measuredWidth = measured.width.toDp()
+        val measuredHeight = measured.height.toDp()
+        val contentPlaceable = subcompose("content") {
+            content(measuredWidth, measuredHeight)
+        }[0].measure(constraints)
+        layout(contentPlaceable.width, contentPlaceable.height) {
+            contentPlaceable.place(0, 0)
+        }
+    }
+}
+
+@Suppress("FunctionName", "unused")
+@Composable
+fun TestMeasurable() {
+    MeasureUnconstrainedView(
+        viewToMeasure = {
+            Text("your sample text")
+        }
+    ) { mw, mh ->
+        // measure view by another view
+    }
+}

+ 1 - 14
src/main/kotlin/eu/mjdev/desktop/components/fonticon/FontIcon.kt

@@ -5,20 +5,15 @@ package eu.mjdev.desktop.components.fonticon
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.remember
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
-import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
 import eu.mjdev.desktop.components.icon.ShapedIcon
 import eu.mjdev.desktop.components.text.AutoResizeText
-import eu.mjdev.desktop.components.text.FontSizeRange
-import eu.mjdev.desktop.extensions.Compose.sp
-import eu.mjdev.desktop.extensions.Compose.width
 import eu.mjdev.desktop.provider.DesktopProvider.Companion.LocalDesktop
 
 @Composable
@@ -43,19 +38,11 @@ fun FontIcon(
     innerPadding = innerPadding,
     outerPadding = outerPadding,
     customContent = {
-        val rememberSize = remember(iconicFont, iconSize, innerPadding, outerPadding, iconShape) {
-            FontSizeRange(
-                min = 24.sp,
-                max = (iconSize.width + innerPadding.width + outerPadding.width).sp,
-            )
-        }
         AutoResizeText(
-            text = iconId.toChar().toString(),
             modifier = Modifier.align(Alignment.Center),
+            text = iconId.toChar().toString(),
             color = iconColor,
-            fontSizeRange = rememberSize,
             fontFamily = iconicFont.fontFamily,
-            textAlign = TextAlign.Center
         )
     },
     onClick = onClick,

+ 10 - 46
src/main/kotlin/eu/mjdev/desktop/components/text/AutoResizeText.kt

@@ -1,74 +1,38 @@
 package eu.mjdev.desktop.components.text
 
-import androidx.compose.material.LocalTextStyle
+import androidx.compose.foundation.layout.BoxWithConstraints
 import androidx.compose.material.Text
 import androidx.compose.runtime.*
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.drawWithContent
 import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.text.TextStyle
 import androidx.compose.ui.text.font.FontFamily
 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.TextDecoration
 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 eu.mjdev.desktop.extensions.Compose.rememberState
+import kotlin.math.min
 
+// todo may be need refactor
 @Composable
 fun AutoResizeText(
     text: String,
-    fontSizeRange: FontSizeRange,
     modifier: Modifier = Modifier,
     color: Color = Color.Unspecified,
     fontStyle: FontStyle? = null,
     fontWeight: FontWeight? = null,
     fontFamily: FontFamily? = null,
-    letterSpacing: TextUnit = TextUnit.Unspecified,
-    textDecoration: TextDecoration? = null,
-    textAlign: TextAlign? = null,
-    lineHeight: TextUnit = TextUnit.Unspecified,
-    overflow: TextOverflow = TextOverflow.Clip,
-    softWrap: Boolean = true,
-    maxLines: Int = Int.MAX_VALUE,
-    style: TextStyle = LocalTextStyle.current,
-) {
-    var fontSizeValue by remember(text, fontSizeRange) { mutableStateOf(fontSizeRange.max.value) }
-    var readyToDraw by rememberState(false)
+) = BoxWithConstraints(modifier = modifier) {
     Text(
         text = text,
         color = color,
-        maxLines = maxLines,
+        maxLines = Int.MAX_VALUE,
+        fontSize = min(constraints.maxWidth, constraints.maxHeight).dp.minus(8.dp).value.sp,
         fontStyle = fontStyle,
         fontWeight = fontWeight,
         fontFamily = fontFamily,
-        letterSpacing = letterSpacing,
-        textDecoration = textDecoration,
-        textAlign = textAlign,
-        lineHeight = lineHeight,
-        overflow = overflow,
-        softWrap = softWrap,
-        style = style,
-        fontSize = fontSizeValue.sp,
-        onTextLayout = { textLayout ->
-            if (textLayout.didOverflowHeight && !readyToDraw) {
-                val nextFontSizeValue = fontSizeValue - fontSizeRange.step.value
-                if (nextFontSizeValue <= fontSizeRange.min.value) {
-                    fontSizeValue = fontSizeRange.min.value
-                    readyToDraw = true
-                } else {
-                    fontSizeValue = nextFontSizeValue
-                }
-            } else {
-                readyToDraw = true
-            }
-        },
-        modifier = modifier.drawWithContent {
-            if (readyToDraw) {
-                drawContent()
-            }
-        }
+        textAlign = TextAlign.Center,
+        overflow = TextOverflow.Clip,
     )
-}
+}

+ 1 - 2
src/main/kotlin/eu/mjdev/desktop/helpers/internal/Palette.kt

@@ -8,7 +8,6 @@ import eu.mjdev.desktop.extensions.ColorUtils.darker
 import eu.mjdev.desktop.extensions.ColorUtils.isLightColor
 import eu.mjdev.desktop.extensions.ColorUtils.lighter
 import eu.mjdev.desktop.extensions.ColorUtils.nonAlphaValue
-import eu.mjdev.desktop.extensions.Compose.SuperDarkGray
 import eu.mjdev.desktop.extensions.Image.loadPicture
 import eu.mjdev.desktop.provider.DesktopProvider
 import kotlinx.coroutines.CoroutineScope
@@ -17,7 +16,7 @@ import kotlinx.coroutines.launch
 @Suppress("CanBeParameter", "MemberVisibilityCanBePrivate")
 class Palette(
     val scope: CoroutineScope,
-    val baseColor: Color = Color.SuperDarkGray,
+    val baseColor: Color = Color.Transparent,
     val borderFactor: Float = 0.1f,
     val textFactor: Float = 0.6f,
 ) {

+ 28 - 0
src/main/kotlin/eu/mjdev/desktop/helpers/managers/GnomeManager.kt

@@ -1,10 +1,27 @@
 package eu.mjdev.desktop.helpers.managers
 
 import eu.mjdev.desktop.helpers.system.Command
+//import org.freedesktop.dbus.annotations.DBusInterfaceName
+//import org.freedesktop.dbus.connections.impl.DBusConnection
+//import org.freedesktop.dbus.interfaces.DBusInterface
+//import org.freedesktop.dbus.types.Variant
 
 @Suppress("unused", "MemberVisibilityCanBePrivate")
 class GnomeManager {
 
+//    val connection by lazy { DBusConnection.getConnection(DBusConnection.DBusBusType.SESSION) }
+//    val settingsInterface by lazy {  connection.getRemoteObject(
+//        "org.freedesktop.portal.Desktop",
+//        "/org/freedesktop/portal/desktop",
+//        SettingsInterface::class.java
+//    ) }
+//
+//    val currentColorScheme get() = settingsInterface.Read("org.freedesktop.appearance", "color-scheme")
+
+//    init {
+//        println(recursiveVariantValue(currentColorScheme))
+//    }
+
     fun setColorScheme(
         schemeName: String
     ) = Command(
@@ -48,6 +65,17 @@ class GnomeManager {
     fun setDarkColorScheme() =
         setColorScheme(COLOR_SCHEME_PREFER_DARK)
 
+//    fun recursiveVariantValue(variant: Variant<*>): Any {
+//        val value = variant.value
+//        if(value !is Variant<*>) return value
+//        else return recursiveVariantValue(value)
+//    }
+
+//    @DBusInterfaceName("org.freedesktop.portal.Settings")
+//    interface SettingsInterface : DBusInterface {
+//        fun Read(namespace: String, key: String): Variant<*>
+//    }
+
     companion object {
         const val COLOR_SCHEME_PREFER_DARK = "prefer-dark"
 

+ 7 - 0
src/main/kotlin/eu/mjdev/desktop/theme/gtk/GtkTheme.kt

@@ -0,0 +1,7 @@
+package eu.mjdev.desktop.theme.gtk
+
+import eu.mjdev.desktop.data.DesktopFile
+
+class GtkTheme {
+    val desktopFile : DesktopFile? = null
+}