Jelajahi Sumber

design fix, desktop window view

design fix, desktop window view

design fix, desktop window view
Milan Jurkulak 2 tahun lalu
induk
melakukan
4ab9cb85c2

+ 30 - 14
src/main/kotlin/eu/mjdev/desktop/components/desktop/Desktop.kt

@@ -2,36 +2,52 @@ package eu.mjdev.desktop.components.desktop
 
 import androidx.compose.desktop.ui.tooling.preview.Preview
 import androidx.compose.foundation.gestures.Orientation
-import androidx.compose.foundation.layout.BoxWithConstraints
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.*
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.max
 import eu.mjdev.desktop.components.desktop.widgets.MemoryChart
 import eu.mjdev.desktop.components.file.FolderView
+import eu.mjdev.desktop.components.sliding.base.VisibilityState
+import eu.mjdev.desktop.components.sliding.base.VisibilityState.Companion.rememberVisibilityState
+import eu.mjdev.desktop.extensions.Compose.rememberCalculated
 import eu.mjdev.desktop.provider.DesktopScope.Companion.withDesktopScope
 
 @Suppress("FunctionName")
 @Preview
 @Composable
 fun Desktop(
-    modifier: Modifier = Modifier
+    modifier: Modifier = Modifier,
+    panelState: VisibilityState = rememberVisibilityState()
 ) = withDesktopScope {
+    val bottomPadding by rememberCalculated(panelState.enabled) {
+        if (panelState.enabled) 0.dp else max(0.dp, panelState.bounds.height)
+    }
     BoxWithConstraints(
         modifier = modifier.padding(16.dp)
     ) {
-        FolderView(
-            modifier = Modifier.size(constraints.maxWidth.dp, constraints.maxHeight.dp),
-            path = api.currentUser.userDirs.desktopDirectory,
-            showHomeFolder = true,
-            orientation = Orientation.Vertical,
-        )
-        MemoryChart(
-            modifier = Modifier.size(350.dp, 300.dp)
-                .align(Alignment.BottomEnd)
-        )
+        Box(
+            modifier = Modifier.size(
+                constraints.maxWidth.dp,
+                constraints.maxHeight.dp
+            ).padding(
+                bottom = bottomPadding
+            )
+        ) {
+            FolderView(
+                modifier = Modifier.fillMaxSize(),
+                path = api.currentUser.userDirs.desktopDirectory,
+                showHomeFolder = true,
+                orientation = Orientation.Vertical,
+            )
+            MemoryChart(
+                modifier = Modifier.size(350.dp, 300.dp)
+                    .align(Alignment.BottomEnd)
+            )
+        }
 //        ComposeWebView(
 //            modifier = Modifier.size(640.dp, 480.dp)
 //                .align(Alignment.Center)

+ 6 - 15
src/main/kotlin/eu/mjdev/desktop/components/main/MainWindow.kt

@@ -19,11 +19,7 @@ import eu.mjdev.desktop.windows.DesktopWindow
 @Composable
 fun MainWindow() = withDesktopScope {
     val controlCenterState = rememberVisibilityState()
-    // todo from user setttings
-    val panelState = rememberVisibilityState(
-        enabled = false,
-        visible = true
-    )
+    val panelState = rememberVisibilityState(true, panelAutoHideEnabled)
     val menuState = rememberVisibilityState()
     val installWindowSate = rememberVisibilityState()
     val infoWindowSate = rememberVisibilityState(false) //(api.isFirstStart || api.isDebug) // todo
@@ -33,33 +29,28 @@ fun MainWindow() = withDesktopScope {
         menuState = menuState
     ) {
         Desktop(
-            modifier = Modifier.fillMaxSize()
+            modifier = Modifier.fillMaxSize(),
+            panelState = panelState,
         )
         DesktopPanel(
             panelState = panelState,
             menuState = menuState,
             onMenuIconClicked = { if (!menuState.isVisible) menuState.show() },
             onFocusChange = { focus ->
-                if (panelState.enabled && !focus && !menuState.isVisible) {
-                    panelState.hide()
-                }
+                if (panelState.enabled && !focus && !menuState.isVisible) panelState.hide()
             }
         )
         AppsMenu(
             menuState = menuState,
             panelState = panelState,
             onFocusChange = { focus ->
-                if (!focus) {
-                    menuState.hide()
-                }
+                if (!focus) menuState.hide()
             }
         )
         ControlCenter(
             controlCenterState = controlCenterState,
             onFocusChange = { focus ->
-                if (!focus) {
-                    controlCenterState.hide()
-                }
+                if (!focus) controlCenterState.hide()
             }
         )
         Greeter()

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

@@ -101,7 +101,7 @@ class Theme(
                 panelLocation = PanelLocation.Bottom,
                 panelDividerWidth = 16.dp,
                 panelContentPadding = 4.dp,
-                panelHideDelay = 5000L,
+                panelHideDelay = 0L,
 
                 controlCenterLocation = ControlCenterLocation.Right,
                 controlPanelHideDelay = 5000L,

+ 3 - 0
src/main/kotlin/eu/mjdev/desktop/provider/DesktopScope.kt

@@ -117,6 +117,9 @@ open class DesktopScope(
     val appMenuMinHeight = theme.appMenuMinHeight
     val menuPadding = theme.appMenuOuterPadding
 
+    val panelAutoHideEnabled
+        get() = theme.panelHideDelay > 0L
+
     fun startApp(app: App) =
         api.appsProvider.startApp(app)