From aeb50c6b684a39ccf5871cac2ca5f15596754de7 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Mon, 10 Mar 2025 13:32:20 +0100 Subject: [PATCH 1/4] fix to color status-bar with theming SetStatusBarColor() was called outside of the MaterialTheme() block Also, "surface" has to be used to get the 'light primary color' Signed-off-by: Marcel Hibbe --- .../java/com/nextcloud/talk/components/SetStatusBarColor.kt | 6 ++---- .../com/nextcloud/talk/contacts/ContactsActivityCompose.kt | 3 +-- .../java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt | 3 +-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/components/SetStatusBarColor.kt b/app/src/main/java/com/nextcloud/talk/components/SetStatusBarColor.kt index 2dfb67e23..3d8db4034 100644 --- a/app/src/main/java/com/nextcloud/talk/components/SetStatusBarColor.kt +++ b/app/src/main/java/com/nextcloud/talk/components/SetStatusBarColor.kt @@ -10,20 +10,18 @@ package com.nextcloud.talk.components import android.app.Activity import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.ui.graphics.toArgb - import androidx.compose.ui.platform.LocalView -import androidx.compose.ui.res.colorResource import androidx.core.view.WindowCompat -import com.nextcloud.talk.R @Composable fun SetStatusBarColor() { val view = LocalView.current val isDarkMod = isSystemInDarkTheme() - val statusBarColor = colorResource(R.color.bg_default).toArgb() + val statusBarColor = MaterialTheme.colorScheme.surface.toArgb() DisposableEffect(isDarkMod) { val activity = view.context as Activity diff --git a/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt b/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt index f3cf47252..a2c727d1d 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt @@ -68,9 +68,8 @@ class ContactsActivityCompose : BaseActivity() { contactsViewModel = contactsViewModel, uiState = uiState.value ) + SetStatusBarColor() } - - SetStatusBarColor() } } } diff --git a/app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt b/app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt index 84354b287..3c75df41e 100644 --- a/app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt @@ -117,9 +117,8 @@ class DiagnoseActivity : BaseActivity() { } } ) + SetStatusBarColor() } - - SetStatusBarColor() } } From 773a6295ba829e69357ad4c6444eaf939ea4ee19 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Mon, 10 Mar 2025 13:46:41 +0100 Subject: [PATCH 2/4] color navigation buttons (= set more contrast by fixing dark mode logic) Signed-off-by: Marcel Hibbe --- .../com/nextcloud/talk/components/SetStatusBarColor.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/components/SetStatusBarColor.kt b/app/src/main/java/com/nextcloud/talk/components/SetStatusBarColor.kt index 3d8db4034..709456795 100644 --- a/app/src/main/java/com/nextcloud/talk/components/SetStatusBarColor.kt +++ b/app/src/main/java/com/nextcloud/talk/components/SetStatusBarColor.kt @@ -20,15 +20,16 @@ import androidx.core.view.WindowCompat @Composable fun SetStatusBarColor() { val view = LocalView.current - val isDarkMod = isSystemInDarkTheme() + val isDarkMode = isSystemInDarkTheme() val statusBarColor = MaterialTheme.colorScheme.surface.toArgb() - DisposableEffect(isDarkMod) { + DisposableEffect(isDarkMode) { val activity = view.context as Activity activity.window.statusBarColor = statusBarColor WindowCompat.getInsetsController(activity.window, activity.window.decorView).apply { - isAppearanceLightStatusBars = !isDarkMod + isAppearanceLightStatusBars = !isDarkMode + isAppearanceLightNavigationBars = !isDarkMode } onDispose { } } From 7b5e4048140e85c7d9d0cf39140025cc26191bf2 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Mon, 10 Mar 2025 13:48:37 +0100 Subject: [PATCH 3/4] use common SetStatusBarColor component also for ConversationCreationActivity Signed-off-by: Marcel Hibbe --- .../ConversationCreationActivity.kt | 25 +++---------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt index 38bd0df56..d3337feb2 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt @@ -2,6 +2,7 @@ * Nextcloud Talk - Android Client * * SPDX-FileCopyrightText: 2024 Sowjanya Kota + * SPDX-FileCopyrightText: 2025 Marcel Hibbe * SPDX-License-Identifier: GPL-3.0-or-later */ @@ -22,7 +23,6 @@ import androidx.activity.result.ActivityResult import androidx.activity.result.contract.ActivityResultContracts 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 @@ -58,7 +58,6 @@ import androidx.compose.material3.TextButton 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 @@ -70,7 +69,6 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -79,7 +77,6 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Dialog -import androidx.core.view.WindowCompat import androidx.lifecycle.ViewModelProvider import autodagger.AutoInjector import coil.compose.AsyncImage @@ -87,6 +84,7 @@ import com.nextcloud.talk.R import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.chat.ChatActivity +import com.nextcloud.talk.components.SetStatusBarColor import com.nextcloud.talk.contacts.ContactsActivityCompose import com.nextcloud.talk.contacts.loadImage import com.nextcloud.talk.models.json.autocomplete.AutocompleteUser @@ -118,29 +116,12 @@ class ConversationCreationActivity : BaseActivity() { colorScheme = colorScheme ) { ConversationCreationScreen(conversationCreationViewModel, context, pickImage) + SetStatusBarColor() } - 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( From c90f138f42512755aa8f3d96fbe5f8c231b58aa3 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Mon, 10 Mar 2025 13:51:46 +0100 Subject: [PATCH 4/4] rename SetStatusBarColor to SetupSystemBars (as it also colors the navigation bar buttons..) Signed-off-by: Marcel Hibbe --- .../components/{SetStatusBarColor.kt => SetupSystemBars.kt} | 2 +- .../com/nextcloud/talk/contacts/ContactsActivityCompose.kt | 4 ++-- .../talk/conversationcreation/ConversationCreationActivity.kt | 4 ++-- .../main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) rename app/src/main/java/com/nextcloud/talk/components/{SetStatusBarColor.kt => SetupSystemBars.kt} (97%) diff --git a/app/src/main/java/com/nextcloud/talk/components/SetStatusBarColor.kt b/app/src/main/java/com/nextcloud/talk/components/SetupSystemBars.kt similarity index 97% rename from app/src/main/java/com/nextcloud/talk/components/SetStatusBarColor.kt rename to app/src/main/java/com/nextcloud/talk/components/SetupSystemBars.kt index 709456795..5c36286c6 100644 --- a/app/src/main/java/com/nextcloud/talk/components/SetStatusBarColor.kt +++ b/app/src/main/java/com/nextcloud/talk/components/SetupSystemBars.kt @@ -18,7 +18,7 @@ import androidx.compose.ui.platform.LocalView import androidx.core.view.WindowCompat @Composable -fun SetStatusBarColor() { +fun SetupSystemBars() { val view = LocalView.current val isDarkMode = isSystemInDarkTheme() val statusBarColor = MaterialTheme.colorScheme.surface.toArgb() diff --git a/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt b/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt index a2c727d1d..e5366d608 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt @@ -19,7 +19,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import autodagger.AutoInjector import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.application.NextcloudTalkApplication -import com.nextcloud.talk.components.SetStatusBarColor +import com.nextcloud.talk.components.SetupSystemBars import com.nextcloud.talk.models.json.autocomplete.AutocompleteUser import javax.inject.Inject @@ -68,7 +68,7 @@ class ContactsActivityCompose : BaseActivity() { contactsViewModel = contactsViewModel, uiState = uiState.value ) - SetStatusBarColor() + SetupSystemBars() } } } diff --git a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt index d3337feb2..cb1b1e834 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt @@ -84,7 +84,7 @@ import com.nextcloud.talk.R import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.chat.ChatActivity -import com.nextcloud.talk.components.SetStatusBarColor +import com.nextcloud.talk.components.SetupSystemBars import com.nextcloud.talk.contacts.ContactsActivityCompose import com.nextcloud.talk.contacts.loadImage import com.nextcloud.talk.models.json.autocomplete.AutocompleteUser @@ -116,7 +116,7 @@ class ConversationCreationActivity : BaseActivity() { colorScheme = colorScheme ) { ConversationCreationScreen(conversationCreationViewModel, context, pickImage) - SetStatusBarColor() + SetupSystemBars() } } } diff --git a/app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt b/app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt index 3c75df41e..a3067178b 100644 --- a/app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt @@ -36,7 +36,7 @@ import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.arbitrarystorage.ArbitraryStorageManager import com.nextcloud.talk.components.StandardAppBar -import com.nextcloud.talk.components.SetStatusBarColor +import com.nextcloud.talk.components.SetupSystemBars import com.nextcloud.talk.users.UserManager import com.nextcloud.talk.utils.BrandingUtils import com.nextcloud.talk.utils.ClosedInterfaceImpl @@ -117,7 +117,7 @@ class DiagnoseActivity : BaseActivity() { } } ) - SetStatusBarColor() + SetupSystemBars() } } }