ソースを参照

colorize status bar

...for ConversationCreationActivity and ContactsActivityCompose

just a quick fix, this may not be the best solution!

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Marcel Hibbe 6 ヶ月 前
コミット
5001fd0b95

+ 23 - 0
app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt

@@ -18,6 +18,7 @@ import androidx.activity.compose.setContent
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.background
 import androidx.compose.foundation.clickable
+import androidx.compose.foundation.isSystemInDarkTheme
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
@@ -48,6 +49,7 @@ import androidx.compose.material3.Surface
 import androidx.compose.material3.Text
 import androidx.compose.material3.TopAppBar
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.DisposableEffect
 import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
@@ -58,12 +60,14 @@ import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.platform.LocalView
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.res.vectorResource
 import androidx.compose.ui.text.font.FontWeight
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
+import androidx.core.view.WindowCompat
 import androidx.lifecycle.ViewModelProvider
 import autodagger.AutoInjector
 import coil.compose.AsyncImage
@@ -140,6 +144,25 @@ class ContactsActivityCompose : BaseActivity() {
                     }
                 )
             }
+
+            SetStatusBarColor()
+        }
+    }
+
+    @Composable
+    private fun SetStatusBarColor() {
+        val view = LocalView.current
+        val isDarkMod = isSystemInDarkTheme()
+
+        DisposableEffect(isDarkMod) {
+            val activity = view.context as Activity
+            activity.window.statusBarColor = resources.getColor(R.color.bg_default)
+
+            WindowCompat.getInsetsController(activity.window, activity.window.decorView).apply {
+                isAppearanceLightStatusBars = !isDarkMod
+            }
+
+            onDispose { }
         }
     }
 }

+ 22 - 0
app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt

@@ -20,6 +20,7 @@ import androidx.activity.compose.setContent
 import androidx.activity.result.ActivityResult
 import androidx.activity.result.contract.ActivityResultContracts
 import androidx.compose.foundation.clickable
+import androidx.compose.foundation.isSystemInDarkTheme
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
@@ -48,6 +49,7 @@ import androidx.compose.material3.Text
 import androidx.compose.material3.TextField
 import androidx.compose.material3.TopAppBar
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.DisposableEffect
 import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
@@ -57,11 +59,13 @@ import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.platform.LocalView
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
+import androidx.core.view.WindowCompat
 import androidx.lifecycle.ViewModelProvider
 import autodagger.AutoInjector
 import coil.compose.AsyncImage
@@ -96,10 +100,28 @@ class ConversationCreationActivity : BaseActivity() {
             ) {
                 ConversationCreationScreen(conversationCreationViewModel, context)
             }
+            SetStatusBarColor()
         }
     }
 }
 
+@Composable
+private fun SetStatusBarColor() {
+    val view = LocalView.current
+    val isDarkMod = isSystemInDarkTheme()
+
+    DisposableEffect(isDarkMod) {
+        val activity = view.context as Activity
+        activity.window.statusBarColor = activity.getColor(R.color.bg_default)
+
+        WindowCompat.getInsetsController(activity.window, activity.window.decorView).apply {
+            isAppearanceLightStatusBars = !isDarkMod
+        }
+
+        onDispose { }
+    }
+}
+
 @OptIn(ExperimentalMaterial3Api::class)
 @Composable
 fun ConversationCreationScreen(conversationCreationViewModel: ConversationCreationViewModel, context: Context) {