Forráskód Böngészése

android app bck improvement

Milan Jurkulak 3 hónapja
szülő
commit
ea9a125f41

+ 1 - 0
build.gradle.kts

@@ -137,6 +137,7 @@ allprojects {
 //             (Kotlin/Native for iOS cannot build on Linux/Windows) — wired below if present.
 // captured at configuration time -> all the tasks below stay configuration-cache safe
 val appNameV = libs.versions.app.name.get()
+val versionV = libs.versions.app.pkg.version.get()
 val pkgDirV = rootDir.resolve("packages/main-release")
 val appImageToolPath = rootDir.resolve(".gradle/tools/appimagetool-x86_64.AppImage").absolutePath
 

+ 17 - 19
composeApp/src/androidMain/kotlin/org/mjdev/desktop/activity/MainActivity.kt

@@ -32,6 +32,9 @@ import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.helpers.permission.rememberPermissionManager
 import org.mjdev.desktop.helpers.theme.DesktopTheme
 import org.mjdev.desktop.main.MainView
+import org.mjdev.desktop.extensions.ComponentActivityExt.OnBackPress
+import org.mjdev.desktop.extensions.ComponentActivityExt.TRANSPARENT
+import org.mjdev.desktop.extensions.ComponentActivityExt.setBackgroundColor
 
 @Suppress("unused", "DEPRECATION")
 @OptIn(ExperimentalPermissionsApi::class)
@@ -48,17 +51,7 @@ class MainActivity : ComponentActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         installSplashScreen()
         super.onCreate(savedInstanceState)
-        runCatching {
-            window.statusBarColor = Black.toArgb()
-        }.onFailure { e ->
-            e.printStackTrace()
-        }
-        runCatching {
-            window.navigationBarColor = Black.toArgb()
-        }.onFailure { e ->
-            e.printStackTrace()
-        }
-        window.decorView.setBackgroundColor(Black.toArgb())
+        setBackgroundColor(Black)
         enableEdgeToEdge(
             statusBarStyle = SystemBarStyle.dark(TRANSPARENT),
             navigationBarStyle = SystemBarStyle.dark(TRANSPARENT),
@@ -75,7 +68,7 @@ class MainActivity : ComponentActivity() {
                 ) {
                     OnBackPress()
                     rememberPermissionManager()
-                    ActivityMain()
+                    ActivityMain(this@MainActivity)
                 }
             }
         }
@@ -105,13 +98,15 @@ class MainActivity : ComponentActivity() {
 }
 
 @Composable
-private fun ActivityMain() {
+private fun ActivityMain(
+    activity: ComponentActivity? = null
+) {
     DesktopTheme {
         Scaffold(
             modifier =
                 Modifier
                     .fillMaxSize()
-                    .background(Color.Black),
+                    .background(Black),
         ) { paddingValues ->
             Box(
                 modifier =
@@ -122,7 +117,11 @@ private fun ActivityMain() {
                         .windowInsetsPadding(WindowInsets.safeDrawing)
                         .background(Color.Black),
             ) {
-                MainView()
+                MainView(
+                    onBackgroundChange = { color ->
+                        activity?.setBackgroundColor(color)
+                    }
+                )
             }
         }
     }
@@ -130,7 +129,6 @@ private fun ActivityMain() {
 
 @Preview
 @Composable
-fun PreviewMainActivity() =
-    preview {
-        ActivityMain()
-    }
+fun PreviewMainActivity() = preview {
+    ActivityMain(null)
+}

+ 13 - 1
composeApp/src/androidMain/kotlin/org/mjdev/desktop/extensions/ComponentActivity.kt

@@ -4,6 +4,7 @@ import android.view.WindowManager
 import androidx.activity.compose.BackHandler
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.Color.Companion.Black
 import androidx.compose.ui.graphics.toArgb
 import androidx.core.app.ComponentActivity
 import androidx.core.graphics.drawable.toDrawable
@@ -61,8 +62,19 @@ object ComponentActivityExt {
         }
 
     // todo : black is white ?
+    @Suppress("DEPRECATION")
     fun ComponentActivity.setBackgroundColor(color: Color = Color.Black) {
-        decorView.background = color.toArgb().toDrawable()
+        runCatching {
+            window.statusBarColor = color.toArgb()
+        }.onFailure { e ->
+            e.printStackTrace()
+        }
+        runCatching {
+            window.navigationBarColor = color.toArgb()
+        }.onFailure { e ->
+            e.printStackTrace()
+        }
+        window.decorView.setBackgroundColor(color.toArgb())
     }
 
     @Composable

+ 5 - 1
composeApp/src/androidMain/kotlin/org/mjdev/desktop/main/MainView.kt

@@ -11,6 +11,7 @@ import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.tooling.preview.Devices
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
@@ -31,7 +32,9 @@ import org.mjdev.desktop.extensions.MutableStateExt.rememberCalculated
 
 @SuppressLint("ComposableNaming")
 @Composable
-fun MainView() =
+fun MainView(
+    onBackgroundChange:(Color) -> Unit = {}
+) =
     withDesktopContext {
         val tooltipState: TooltipState = rememberTooltipState()
         val appsMenuState =
@@ -93,6 +96,7 @@ fun MainView() =
                             controlCenterState.hide()
                         }
                     },
+                    onBackgroundChange = onBackgroundChange,
                     onRightMouseClick = {
 //                contextMenuState.show()
                     },

+ 3 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktop/Desktop.kt

@@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.wrapContentWidth
 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.unit.DpOffset
 import androidx.compose.ui.unit.dp
 import org.jetbrains.compose.ui.tooling.preview.Preview
@@ -34,6 +35,7 @@ fun Desktop(
     onTooltip: (item: Any?) -> Unit = {},
     onLeftMouseClick: () -> Unit = {},
     onRightMouseClick: () -> Unit = {},
+    onBackgroundChange:(Color) -> Unit = {},
     // todo
     widgets: @Composable () -> Unit = {},
 ) = withDesktopContext {
@@ -71,6 +73,7 @@ fun Desktop(
                         update(src)
                     }.also { p ->
                         context.currentUser.theme.backgroundColor = p.backgroundColor
+                        onBackgroundChange(p.backgroundColor)
                     }
             },
         )