android, desktop: consistent colors in themes (#3649)

This commit is contained in:
Stanislav Dmitrenko 2024-01-06 01:45:52 +07:00 committed by GitHub
parent 9e87fe73a5
commit fe865c5e11
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 81 additions and 70 deletions

View File

@ -97,7 +97,8 @@ fun IncomingCallActivityView(m: ChatModel) {
Surface( Surface(
Modifier Modifier
.fillMaxSize(), .fillMaxSize(),
color = MaterialTheme.colors.background color = MaterialTheme.colors.background,
contentColor = LocalContentColor.current
) { ) {
if (showCallView) { if (showCallView) {
Box { Box {
@ -200,7 +201,8 @@ private fun SimpleXLogo() {
private fun LockScreenCallButton(text: String, icon: Painter, color: Color, action: () -> Unit) { private fun LockScreenCallButton(text: String, icon: Painter, color: Color, action: () -> Unit) {
Surface( Surface(
shape = RoundedCornerShape(10.dp), shape = RoundedCornerShape(10.dp),
color = Color.Transparent color = Color.Transparent,
contentColor = LocalContentColor.current
) { ) {
Column( Column(
Modifier Modifier
@ -227,7 +229,8 @@ fun PreviewIncomingCallLockScreenAlert() {
Surface( Surface(
Modifier Modifier
.fillMaxSize(), .fillMaxSize(),
color = MaterialTheme.colors.background color = MaterialTheme.colors.background,
contentColor = LocalContentColor.current
) { ) {
IncomingCallLockScreenAlertLayout( IncomingCallLockScreenAlertLayout(
invitation = RcvCallInvitation( invitation = RcvCallInvitation(

View File

@ -44,7 +44,7 @@ data class SettingsViewState(
fun AppScreen() { fun AppScreen() {
SimpleXTheme { SimpleXTheme {
ProvideWindowInsets(windowInsetsAnimationsEnabled = true) { ProvideWindowInsets(windowInsetsAnimationsEnabled = true) {
Surface(color = MaterialTheme.colors.background) { Surface(color = MaterialTheme.colors.background, contentColor = LocalContentColor.current) {
MainScreen() MainScreen()
} }
} }
@ -85,7 +85,7 @@ fun MainScreen() {
@Composable @Composable
fun AuthView() { fun AuthView() {
Surface(color = MaterialTheme.colors.background) { Surface(color = MaterialTheme.colors.background, contentColor = LocalContentColor.current) {
Box( Box(
Modifier.fillMaxSize(), Modifier.fillMaxSize(),
contentAlignment = Alignment.Center contentAlignment = Alignment.Center

View File

@ -1,8 +1,7 @@
package chat.simplex.common package chat.simplex.common
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.MaterialTheme import androidx.compose.material.*
import androidx.compose.material.Surface
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import chat.simplex.common.model.* import chat.simplex.common.model.*
@ -107,7 +106,7 @@ object AppLock {
private fun setPasscode() { private fun setPasscode() {
val appPrefs = ChatController.appPrefs val appPrefs = ChatController.appPrefs
ModalManager.fullscreen.showCustomModal { close -> ModalManager.fullscreen.showCustomModal { close ->
Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background, contentColor = LocalContentColor.current) {
SetAppPasscodeView( SetAppPasscodeView(
submit = { submit = {
ChatModel.performLA.value = true ChatModel.performLA.value = true

View File

@ -1,5 +1,7 @@
package chat.simplex.common.ui.theme package chat.simplex.common.ui.theme
import androidx.compose.material.LocalContentColor
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
val Purple200 = Color(0xFFBB86FC) val Purple200 = Color(0xFFBB86FC)
@ -25,4 +27,5 @@ val WarningOrange = Color(255, 127, 0, 255)
val WarningYellow = Color(255, 192, 0, 255) val WarningYellow = Color(255, 192, 0, 255)
val FileLight = Color(183, 190, 199, 255) val FileLight = Color(183, 190, 199, 255)
val FileDark = Color(101, 101, 106, 255) val FileDark = Color(101, 101, 106, 255)
val MenuTextColorDark = Color.White.copy(alpha = 0.8f)
val MenuTextColor: Color @Composable get () = if (isInDarkTheme()) LocalContentColor.current.copy(alpha = 0.8f) else Color.Black

View File

@ -283,27 +283,10 @@ fun SimpleXTheme(darkTheme: Boolean? = null, content: @Composable () -> Unit) {
val theme by CurrentColors.collectAsState() val theme by CurrentColors.collectAsState()
MaterialTheme( MaterialTheme(
colors = theme.colors, colors = theme.colors,
typography = Typography.copy( typography = Typography,
h1 = Typography.h1.copy(color = theme.colors.onBackground),
h2 = Typography.h2.copy(color = theme.colors.onBackground),
h3 = Typography.h3.copy(color = theme.colors.onBackground),
h4 = Typography.h4.copy(color = theme.colors.onBackground),
h5 = Typography.h5.copy(color = theme.colors.onBackground),
h6 = Typography.h6.copy(color = theme.colors.onBackground),
subtitle1 = Typography.subtitle1.copy(color = theme.colors.onBackground),
subtitle2 = Typography.subtitle2.copy(color = theme.colors.onBackground),
body1 = Typography.body1.copy(color = theme.colors.onBackground),
body2 = Typography.body2.copy(color = theme.colors.onBackground),
button = Typography.button.copy(color = theme.colors.onBackground),
caption = Typography.caption.copy(color = theme.colors.onBackground),
overline = Typography.overline.copy(color = theme.colors.onBackground)
),
shapes = Shapes, shapes = Shapes,
content = { content = {
ProvideTextStyle( CompositionLocalProvider(LocalContentColor provides MaterialTheme.colors.onBackground, content = content)
value = TextStyle(color = theme.colors.onBackground),
content = content
)
} }
) )
} }

View File

@ -1,8 +1,7 @@
package chat.simplex.common.views package chat.simplex.common.views
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.MaterialTheme import androidx.compose.material.*
import androidx.compose.material.Surface
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -11,7 +10,8 @@ fun SplashView() {
Surface( Surface(
Modifier Modifier
.fillMaxSize(), .fillMaxSize(),
color = MaterialTheme.colors.background color = MaterialTheme.colors.background,
contentColor = LocalContentColor.current
) { ) {
// Image( // Image(
// painter = painterResource(MR.images.logo), // painter = painterResource(MR.images.logo),

View File

@ -101,13 +101,16 @@ fun TerminalLayout(
) )
} }
}, },
contentColor = LocalContentColor.current,
drawerContentColor = LocalContentColor.current,
modifier = Modifier.navigationBarsWithImePadding() modifier = Modifier.navigationBarsWithImePadding()
) { contentPadding -> ) { contentPadding ->
Surface( Surface(
modifier = Modifier modifier = Modifier
.padding(contentPadding) .padding(contentPadding)
.fillMaxWidth(), .fillMaxWidth(),
color = MaterialTheme.colors.background color = MaterialTheme.colors.background,
contentColor = LocalContentColor.current
) { ) {
TerminalLog() TerminalLog()
} }

View File

@ -239,7 +239,7 @@ fun OnboardingButtons(displayName: MutableState<String>, close: () -> Unit) {
val enabled = canCreateProfile(displayName.value) val enabled = canCreateProfile(displayName.value)
val createModifier: Modifier = Modifier.clickable(enabled) { createProfileOnboarding(chatModel, displayName.value, close) }.padding(8.dp) val createModifier: Modifier = Modifier.clickable(enabled) { createProfileOnboarding(chatModel, displayName.value, close) }.padding(8.dp)
val createColor: Color = if (enabled) MaterialTheme.colors.primary else MaterialTheme.colors.secondary val createColor: Color = if (enabled) MaterialTheme.colors.primary else MaterialTheme.colors.secondary
Surface(shape = RoundedCornerShape(20.dp), color = Color.Transparent) { Surface(shape = RoundedCornerShape(20.dp), color = Color.Transparent, contentColor = LocalContentColor.current) {
Row(verticalAlignment = Alignment.CenterVertically, modifier = createModifier) { Row(verticalAlignment = Alignment.CenterVertically, modifier = createModifier) {
Text(stringResource(MR.strings.create_profile_button), style = MaterialTheme.typography.caption, color = createColor, fontWeight = FontWeight.Medium) Text(stringResource(MR.strings.create_profile_button), style = MaterialTheme.typography.caption, color = createColor, fontWeight = FontWeight.Medium)
Icon(painterResource(MR.images.ic_arrow_forward_ios), stringResource(MR.strings.create_profile_button), tint = createColor) Icon(painterResource(MR.images.ic_arrow_forward_ios), stringResource(MR.strings.create_profile_button), tint = createColor)

View File

@ -85,7 +85,8 @@ fun IncomingCallInfo(invitation: RcvCallInvitation, chatModel: ChatModel) {
private fun CallButton(text: String, icon: Painter, color: Color, action: () -> Unit) { private fun CallButton(text: String, icon: Painter, color: Color, action: () -> Unit) {
Surface( Surface(
shape = RoundedCornerShape(10.dp), shape = RoundedCornerShape(10.dp),
color = Color.Transparent color = Color.Transparent,
contentColor = LocalContentColor.current
) { ) {
Column( Column(
Modifier Modifier

View File

@ -570,6 +570,8 @@ fun ChatLayout(
bottomBar = composeView, bottomBar = composeView,
modifier = Modifier.navigationBarsWithImePadding(), modifier = Modifier.navigationBarsWithImePadding(),
floatingActionButton = { floatingButton.value() }, floatingActionButton = { floatingButton.value() },
contentColor = LocalContentColor.current,
drawerContentColor = LocalContentColor.current,
) { contentPadding -> ) { contentPadding ->
BoxWithConstraints(Modifier BoxWithConstraints(Modifier
.fillMaxHeight() .fillMaxHeight()

View File

@ -258,7 +258,8 @@ private fun CustomDisappearingMessageDialog(
DefaultDialog(onDismissRequest = { setShowDialog(false) }) { DefaultDialog(onDismissRequest = { setShowDialog(false) }) {
Surface( Surface(
shape = RoundedCornerShape(corner = CornerSize(25.dp)) shape = RoundedCornerShape(corner = CornerSize(25.dp)),
contentColor = LocalContentColor.current
) { ) {
Box( Box(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center

View File

@ -131,7 +131,8 @@ fun CIFileView(
Surface( Surface(
Modifier.drawRingModifier(angle, strokeColor, strokeWidth), Modifier.drawRingModifier(angle, strokeColor, strokeWidth),
color = Color.Transparent, color = Color.Transparent,
shape = MaterialTheme.shapes.small.copy(CornerSize(percent = 50)) shape = MaterialTheme.shapes.small.copy(CornerSize(percent = 50)),
contentColor = LocalContentColor.current
) { ) {
Box(Modifier.size(32.dp)) Box(Modifier.size(32.dp))
} }

View File

@ -88,6 +88,7 @@ fun CIGroupInvitationView(
}) else Modifier, }) else Modifier,
shape = RoundedCornerShape(18.dp), shape = RoundedCornerShape(18.dp),
color = if (sent) sentColor else receivedColor, color = if (sent) sentColor else receivedColor,
contentColor = LocalContentColor.current
) { ) {
Box( Box(
Modifier Modifier

View File

@ -142,6 +142,7 @@ fun DecryptionErrorItemFixButton(
Modifier.clickable(onClick = onClick), Modifier.clickable(onClick = onClick),
shape = RoundedCornerShape(18.dp), shape = RoundedCornerShape(18.dp),
color = receivedColor, color = receivedColor,
contentColor = LocalContentColor.current
) { ) {
Box( Box(
Modifier.padding(vertical = 6.dp, horizontal = 12.dp), Modifier.padding(vertical = 6.dp, horizontal = 12.dp),
@ -188,6 +189,7 @@ fun DecryptionErrorItem(
Modifier.clickable(onClick = onClick), Modifier.clickable(onClick = onClick),
shape = RoundedCornerShape(18.dp), shape = RoundedCornerShape(18.dp),
color = receivedColor, color = receivedColor,
contentColor = LocalContentColor.current
) { ) {
Box( Box(
Modifier.padding(vertical = 6.dp, horizontal = 12.dp), Modifier.padding(vertical = 6.dp, horizontal = 12.dp),

View File

@ -153,7 +153,8 @@ private fun BoxScope.PlayButton(error: Boolean = false, onLongClick: () -> Unit,
Surface( Surface(
Modifier.align(Alignment.Center), Modifier.align(Alignment.Center),
color = Color.Black.copy(alpha = 0.25f), color = Color.Black.copy(alpha = 0.25f),
shape = RoundedCornerShape(percent = 50) shape = RoundedCornerShape(percent = 50),
contentColor = LocalContentColor.current
) { ) {
Box( Box(
Modifier Modifier
@ -264,7 +265,8 @@ private fun progressCircle(progress: Long, total: Long) {
Surface( Surface(
Modifier.drawRingModifier(angle, strokeColor, strokeWidth), Modifier.drawRingModifier(angle, strokeColor, strokeWidth),
color = Color.Transparent, color = Color.Transparent,
shape = MaterialTheme.shapes.small.copy(CornerSize(percent = 50)) shape = MaterialTheme.shapes.small.copy(CornerSize(percent = 50)),
contentColor = LocalContentColor.current
) { ) {
Box(Modifier.size(16.dp)) Box(Modifier.size(16.dp))
} }

View File

@ -225,7 +225,8 @@ private fun PlayPauseButton(
Surface( Surface(
Modifier.drawRingModifier(angle, strokeColor, strokeWidth), Modifier.drawRingModifier(angle, strokeColor, strokeWidth),
color = if (sent) sentColor else receivedColor, color = if (sent) sentColor else receivedColor,
shape = MaterialTheme.shapes.small.copy(CornerSize(percent = 50)) shape = MaterialTheme.shapes.small.copy(CornerSize(percent = 50)),
contentColor = LocalContentColor.current
) { ) {
Box( Box(
Modifier Modifier

View File

@ -613,7 +613,7 @@ private fun ShrinkItemAction(revealed: MutableState<Boolean>, showMenu: MutableS
@Composable @Composable
fun ItemAction(text: String, icon: Painter, color: Color = Color.Unspecified, onClick: () -> Unit) { fun ItemAction(text: String, icon: Painter, color: Color = Color.Unspecified, onClick: () -> Unit) {
val finalColor = if (color == Color.Unspecified) { val finalColor = if (color == Color.Unspecified) {
if (isInDarkTheme()) MenuTextColorDark else Color.Black MenuTextColor
} else color } else color
DropdownMenuItem(onClick, contentPadding = PaddingValues(horizontal = DEFAULT_PADDING * 1.5f)) { DropdownMenuItem(onClick, contentPadding = PaddingValues(horizontal = DEFAULT_PADDING * 1.5f)) {
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {
@ -633,7 +633,7 @@ fun ItemAction(text: String, icon: Painter, color: Color = Color.Unspecified, on
@Composable @Composable
fun ItemAction(text: String, icon: ImageVector, onClick: () -> Unit, color: Color = Color.Unspecified) { fun ItemAction(text: String, icon: ImageVector, onClick: () -> Unit, color: Color = Color.Unspecified) {
val finalColor = if (color == Color.Unspecified) { val finalColor = if (color == Color.Unspecified) {
if (isInDarkTheme()) MenuTextColorDark else Color.Black MenuTextColor
} else color } else color
DropdownMenuItem(onClick, contentPadding = PaddingValues(horizontal = DEFAULT_PADDING * 1.5f)) { DropdownMenuItem(onClick, contentPadding = PaddingValues(horizontal = DEFAULT_PADDING * 1.5f)) {
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {

View File

@ -23,6 +23,7 @@ fun DeletedItemView(ci: ChatItem, timedMessagesTTL: Int?) {
Surface( Surface(
shape = RoundedCornerShape(18.dp), shape = RoundedCornerShape(18.dp),
color = if (sent) sentColor else receivedColor, color = if (sent) sentColor else receivedColor,
contentColor = LocalContentColor.current
) { ) {
Row( Row(
Modifier.padding(horizontal = 12.dp, vertical = 6.dp), Modifier.padding(horizontal = 12.dp, vertical = 6.dp),

View File

@ -56,6 +56,7 @@ fun CIMsgError(ci: ChatItem, timedMessagesTTL: Int?, onClick: () -> Unit) {
Modifier.clickable(onClick = onClick), Modifier.clickable(onClick = onClick),
shape = RoundedCornerShape(18.dp), shape = RoundedCornerShape(18.dp),
color = receivedColor, color = receivedColor,
contentColor = LocalContentColor.current
) { ) {
Row( Row(
Modifier.padding(horizontal = 12.dp, vertical = 6.dp), Modifier.padding(horizontal = 12.dp, vertical = 6.dp),

View File

@ -26,6 +26,7 @@ fun MarkedDeletedItemView(ci: ChatItem, timedMessagesTTL: Int?, revealed: Mutabl
Surface( Surface(
shape = RoundedCornerShape(18.dp), shape = RoundedCornerShape(18.dp),
color = if (ci.chatDir.sent) sentColor else receivedColor, color = if (ci.chatDir.sent) sentColor else receivedColor,
contentColor = LocalContentColor.current
) { ) {
Row( Row(
Modifier.padding(horizontal = 12.dp, vertical = 6.dp), Modifier.padding(horizontal = 12.dp, vertical = 6.dp),

View File

@ -75,6 +75,8 @@ fun ChatListView(chatModel: ChatModel, settingsState: SettingsViewState, setPerf
SettingsView(chatModel, setPerformLA, scaffoldState.drawerState) SettingsView(chatModel, setPerformLA, scaffoldState.drawerState)
} }
}, },
contentColor = LocalContentColor.current,
drawerContentColor = LocalContentColor.current,
drawerScrimColor = MaterialTheme.colors.onSurface.copy(alpha = if (isInDarkTheme()) 0.16f else 0.32f), drawerScrimColor = MaterialTheme.colors.onSurface.copy(alpha = if (isInDarkTheme()) 0.16f else 0.32f),
drawerGesturesEnabled = appPlatform.isAndroid, drawerGesturesEnabled = appPlatform.isAndroid,
floatingActionButton = { floatingActionButton = {

View File

@ -30,6 +30,8 @@ fun ShareListView(chatModel: ChatModel, settingsState: SettingsViewState, stoppe
val endPadding = if (appPlatform.isDesktop) 56.dp else 0.dp val endPadding = if (appPlatform.isDesktop) 56.dp else 0.dp
Scaffold( Scaffold(
Modifier.padding(end = endPadding), Modifier.padding(end = endPadding),
contentColor = LocalContentColor.current,
drawerContentColor = LocalContentColor.current,
scaffoldState = scaffoldState, scaffoldState = scaffoldState,
topBar = { Column { ShareListToolbar(chatModel, userPickerState, stopped) { searchInList = it.trim() } } }, topBar = { Column { ShareListToolbar(chatModel, userPickerState, stopped) { searchInList = it.trim() } } },
) { ) {

View File

@ -31,7 +31,6 @@ import chat.simplex.common.views.remote.*
import chat.simplex.common.views.usersettings.doWithAuth import chat.simplex.common.views.usersettings.doWithAuth
import chat.simplex.res.MR import chat.simplex.res.MR
import dev.icerock.moko.resources.compose.stringResource import dev.icerock.moko.resources.compose.stringResource
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.* import kotlinx.coroutines.flow.*
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlin.math.roundToInt import kotlin.math.roundToInt
@ -303,7 +302,7 @@ fun UserProfileRow(u: User) {
u.displayName, u.displayName,
modifier = Modifier modifier = Modifier
.padding(start = 10.dp, end = 8.dp), .padding(start = 10.dp, end = 8.dp),
color = if (isInDarkTheme()) MenuTextColorDark else Color.Black, color = MenuTextColor,
fontWeight = if (u.activeUser) FontWeight.Medium else FontWeight.Normal fontWeight = if (u.activeUser) FontWeight.Medium else FontWeight.Normal
) )
} }
@ -346,7 +345,7 @@ fun RemoteHostRow(h: RemoteHostInfo) {
Text( Text(
h.hostDeviceName, h.hostDeviceName,
modifier = Modifier.padding(start = 26.dp, end = 8.dp), modifier = Modifier.padding(start = 26.dp, end = 8.dp),
color = if (h.activeHost) MaterialTheme.colors.onBackground else if (isInDarkTheme()) MenuTextColorDark else Color.Black, color = if (h.activeHost) MaterialTheme.colors.onBackground else MenuTextColor,
fontSize = 14.sp, fontSize = 14.sp,
) )
} }
@ -387,7 +386,7 @@ fun LocalDeviceRow(active: Boolean) {
Text( Text(
stringResource(MR.strings.this_device), stringResource(MR.strings.this_device),
modifier = Modifier.padding(start = 26.dp, end = 8.dp), modifier = Modifier.padding(start = 26.dp, end = 8.dp),
color = if (active) MaterialTheme.colors.onBackground else if (isInDarkTheme()) MenuTextColorDark else Color.Black, color = if (active) MaterialTheme.colors.onBackground else MenuTextColor,
fontSize = 14.sp, fontSize = 14.sp,
) )
} }
@ -399,7 +398,7 @@ private fun UseFromDesktopPickerItem(onClick: () -> Unit) {
val text = generalGetString(MR.strings.settings_section_title_use_from_desktop).lowercase().capitalize(Locale.current) val text = generalGetString(MR.strings.settings_section_title_use_from_desktop).lowercase().capitalize(Locale.current)
Icon(painterResource(MR.images.ic_desktop), text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) Icon(painterResource(MR.images.ic_desktop), text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground)
Spacer(Modifier.width(DEFAULT_PADDING + 6.dp)) Spacer(Modifier.width(DEFAULT_PADDING + 6.dp))
Text(text, color = if (isInDarkTheme()) MenuTextColorDark else Color.Black) Text(text, color = MenuTextColor)
} }
} }
@ -409,7 +408,7 @@ private fun LinkAMobilePickerItem(onClick: () -> Unit) {
val text = generalGetString(MR.strings.link_a_mobile) val text = generalGetString(MR.strings.link_a_mobile)
Icon(painterResource(MR.images.ic_smartphone_300), text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) Icon(painterResource(MR.images.ic_smartphone_300), text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground)
Spacer(Modifier.width(DEFAULT_PADDING + 6.dp)) Spacer(Modifier.width(DEFAULT_PADDING + 6.dp))
Text(text, color = if (isInDarkTheme()) MenuTextColorDark else Color.Black) Text(text, color = MenuTextColor)
} }
} }
@ -419,7 +418,7 @@ private fun CreateInitialProfile(onClick: () -> Unit) {
val text = generalGetString(MR.strings.create_chat_profile) val text = generalGetString(MR.strings.create_chat_profile)
Icon(painterResource(MR.images.ic_manage_accounts), text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) Icon(painterResource(MR.images.ic_manage_accounts), text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground)
Spacer(Modifier.width(DEFAULT_PADDING + 6.dp)) Spacer(Modifier.width(DEFAULT_PADDING + 6.dp))
Text(text, color = if (isInDarkTheme()) MenuTextColorDark else Color.Black) Text(text, color = MenuTextColor)
} }
} }
@ -429,7 +428,7 @@ private fun SettingsPickerItem(onClick: () -> Unit) {
val text = generalGetString(MR.strings.settings_section_title_settings).lowercase().capitalize(Locale.current) val text = generalGetString(MR.strings.settings_section_title_settings).lowercase().capitalize(Locale.current)
Icon(painterResource(MR.images.ic_settings), text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) Icon(painterResource(MR.images.ic_settings), text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground)
Spacer(Modifier.width(DEFAULT_PADDING + 6.dp)) Spacer(Modifier.width(DEFAULT_PADDING + 6.dp))
Text(text, color = if (isInDarkTheme()) MenuTextColorDark else Color.Black) Text(text, color = MenuTextColor)
} }
} }
@ -439,7 +438,7 @@ private fun CancelPickerItem(onClick: () -> Unit) {
val text = generalGetString(MR.strings.cancel_verb) val text = generalGetString(MR.strings.cancel_verb)
Icon(painterResource(MR.images.ic_close), text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) Icon(painterResource(MR.images.ic_close), text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground)
Spacer(Modifier.width(DEFAULT_PADDING + 6.dp)) Spacer(Modifier.width(DEFAULT_PADDING + 6.dp))
Text(text, color = if (isInDarkTheme()) MenuTextColorDark else Color.Black) Text(text, color = MenuTextColor)
} }
} }

View File

@ -152,7 +152,8 @@ fun CustomTimePickerDialog(
) { ) {
DefaultDialog(onDismissRequest = cancel) { DefaultDialog(onDismissRequest = cancel) {
Surface( Surface(
shape = RoundedCornerShape(corner = CornerSize(25.dp)) shape = RoundedCornerShape(corner = CornerSize(25.dp)),
contentColor = LocalContentColor.current
) { ) {
Box( Box(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center

View File

@ -70,7 +70,7 @@ fun <T> ExposedDropDownSetting(
selectionOption.second + (if (label != null) " $label" else ""), selectionOption.second + (if (label != null) " $label" else ""),
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
color = if (isInDarkTheme()) MenuTextColorDark else Color.Black, color = MenuTextColor,
fontSize = fontSize, fontSize = fontSize,
) )
} }

View File

@ -1,8 +1,7 @@
package chat.simplex.common.views.helpers package chat.simplex.common.views.helpers
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.MaterialTheme import androidx.compose.material.*
import androidx.compose.material.Surface
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import chat.simplex.common.model.ChatController import chat.simplex.common.model.ChatController
import chat.simplex.common.model.ChatModel import chat.simplex.common.model.ChatModel
@ -50,7 +49,7 @@ fun authenticateWithPasscode(
close() close()
completed(LAResult.Error(generalGetString(MR.strings.authentication_cancelled))) completed(LAResult.Error(generalGetString(MR.strings.authentication_cancelled)))
} }
Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background, contentColor = LocalContentColor.current) {
LocalAuthView(ChatModel, LocalAuthRequest(promptTitle, promptSubtitle, password, selfDestruct && ChatController.appPrefs.selfDestruct.get()) { LocalAuthView(ChatModel, LocalAuthRequest(promptTitle, promptSubtitle, password, selfDestruct && ChatController.appPrefs.selfDestruct.get()) {
close() close()
completed(it) completed(it)

View File

@ -26,7 +26,7 @@ fun ModalView(
if (showClose) { if (showClose) {
BackHandler(onBack = close) BackHandler(onBack = close)
} }
Surface(Modifier.fillMaxSize()) { Surface(Modifier.fillMaxSize(), contentColor = LocalContentColor.current) {
Column(if (background != MaterialTheme.colors.background) Modifier.background(background) else Modifier.themedBackground()) { Column(if (background != MaterialTheme.colors.background) Modifier.background(background) else Modifier.themedBackground()) {
CloseSheetBar(close, showClose, endButtons) CloseSheetBar(close, showClose, endButtons)
Box(modifier) { content() } Box(modifier) { content() }

View File

@ -175,7 +175,7 @@ fun ActionButton(
disabled: Boolean = false, disabled: Boolean = false,
click: () -> Unit = {} click: () -> Unit = {}
) { ) {
Surface(shape = RoundedCornerShape(18.dp), color = Color.Transparent) { Surface(shape = RoundedCornerShape(18.dp), color = Color.Transparent, contentColor = LocalContentColor.current) {
Column( Column(
Modifier Modifier
.clickable(onClick = click) .clickable(onClick = click)
@ -220,7 +220,7 @@ fun ActionButton(
disabled: Boolean = false, disabled: Boolean = false,
click: () -> Unit = {} click: () -> Unit = {}
) { ) {
Surface(modifier, shape = RoundedCornerShape(18.dp)) { Surface(modifier, shape = RoundedCornerShape(18.dp), contentColor = LocalContentColor.current) {
Column( Column(
Modifier Modifier
.fillMaxWidth() .fillMaxWidth()

View File

@ -380,7 +380,8 @@ fun SettingsSectionFooter(revert: () -> Unit, save: () -> Unit, disabled: Boolea
fun FooterButton(icon: Painter, title: String, action: () -> Unit, disabled: Boolean) { fun FooterButton(icon: Painter, title: String, action: () -> Unit, disabled: Boolean) {
Surface( Surface(
shape = RoundedCornerShape(20.dp), shape = RoundedCornerShape(20.dp),
color = Color.Black.copy(alpha = 0f) color = Color.Black.copy(alpha = 0f),
contentColor = LocalContentColor.current
) { ) {
val modifier = if (disabled) Modifier else Modifier.clickable { action() } val modifier = if (disabled) Modifier else Modifier.clickable { action() }
Row( Row(

View File

@ -383,7 +383,7 @@ fun SimplexLockView(
} }
LAMode.PASSCODE -> { LAMode.PASSCODE -> {
ModalManager.fullscreen.showCustomModal { close -> ModalManager.fullscreen.showCustomModal { close ->
Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background, contentColor = LocalContentColor.current) {
SetAppPasscodeView( SetAppPasscodeView(
submit = { submit = {
laLockDelay.set(30) laLockDelay.set(30)
@ -427,7 +427,7 @@ fun SimplexLockView(
when (laResult) { when (laResult) {
LAResult.Success -> { LAResult.Success -> {
ModalManager.fullscreen.showCustomModal { close -> ModalManager.fullscreen.showCustomModal { close ->
Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background, contentColor = LocalContentColor.current) {
SetAppPasscodeView( SetAppPasscodeView(
reason = generalGetString(MR.strings.la_app_passcode), reason = generalGetString(MR.strings.la_app_passcode),
submit = { submit = {
@ -451,7 +451,7 @@ fun SimplexLockView(
when (laResult) { when (laResult) {
LAResult.Success -> { LAResult.Success -> {
ModalManager.fullscreen.showCustomModal { close -> ModalManager.fullscreen.showCustomModal { close ->
Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background, contentColor = LocalContentColor.current) {
SetAppPasscodeView( SetAppPasscodeView(
passcodeKeychain = ksSelfDestructPassword, passcodeKeychain = ksSelfDestructPassword,
reason = generalGetString(MR.strings.self_destruct), reason = generalGetString(MR.strings.self_destruct),
@ -487,7 +487,7 @@ fun SimplexLockView(
} }
LAMode.PASSCODE -> { LAMode.PASSCODE -> {
ModalManager.fullscreen.showCustomModal { close -> ModalManager.fullscreen.showCustomModal { close ->
Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background, contentColor = LocalContentColor.current) {
SetAppPasscodeView( SetAppPasscodeView(
submit = { submit = {
laLockDelay.set(30) laLockDelay.set(30)
@ -598,7 +598,7 @@ private fun EnableSelfDestruct(
selfDestruct: SharedPreference<Boolean>, selfDestruct: SharedPreference<Boolean>,
close: () -> Unit close: () -> Unit
) { ) {
Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { Surface(Modifier.fillMaxSize(), color = MaterialTheme.colors.background, contentColor = LocalContentColor.current) {
SetAppPasscodeView( SetAppPasscodeView(
passcodeKeychain = ksSelfDestructPassword, title = generalGetString(MR.strings.set_passcode), reason = generalGetString(MR.strings.enabled_self_destruct_passcode), passcodeKeychain = ksSelfDestructPassword, title = generalGetString(MR.strings.set_passcode), reason = generalGetString(MR.strings.enabled_self_destruct_passcode),
submit = { submit = {

View File

@ -155,7 +155,8 @@ fun RTCServersLayout(
.height(160.dp) .height(160.dp)
.fillMaxWidth(), .fillMaxWidth(),
shape = RoundedCornerShape(10.dp), shape = RoundedCornerShape(10.dp),
border = BorderStroke(1.dp, MaterialTheme.colors.secondaryVariant) border = BorderStroke(1.dp, MaterialTheme.colors.secondaryVariant),
contentColor = LocalContentColor.current
) { ) {
SelectionContainer( SelectionContainer(
Modifier.verticalScroll(rememberScrollState()) Modifier.verticalScroll(rememberScrollState())

View File

@ -155,7 +155,7 @@ fun UserAddressView(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
if (userAddress.value != null) { if (userAddress.value != null) {
Surface(Modifier.size(50.dp), color = MaterialTheme.colors.background.copy(0.9f), shape = RoundedCornerShape(50)){} Surface(Modifier.size(50.dp), color = MaterialTheme.colors.background.copy(0.9f), contentColor = LocalContentColor.current, shape = RoundedCornerShape(50)){}
} }
CircularProgressIndicator( CircularProgressIndicator(
Modifier Modifier

View File

@ -167,7 +167,8 @@ actual fun PlatformTextField(
decorationBox = { innerTextField -> decorationBox = { innerTextField ->
Surface( Surface(
shape = RoundedCornerShape(18.dp), shape = RoundedCornerShape(18.dp),
border = BorderStroke(1.dp, MaterialTheme.colors.secondary) border = BorderStroke(1.dp, MaterialTheme.colors.secondary),
contentColor = LocalContentColor.current
) { ) {
Row( Row(
Modifier.background(MaterialTheme.colors.background), Modifier.background(MaterialTheme.colors.background),

View File

@ -2,8 +2,7 @@ package chat.simplex.common.views.helpers
import androidx.compose.foundation.* import androidx.compose.foundation.*
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.MaterialTheme import androidx.compose.material.*
import androidx.compose.material.Surface
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.input.key.* import androidx.compose.ui.input.key.*
@ -39,7 +38,8 @@ actual fun DefaultDialog(
) { ) {
Surface( Surface(
Modifier Modifier
.border(border = BorderStroke(1.dp, MaterialTheme.colors.secondary.copy(alpha = 0.3F)), shape = RoundedCornerShape(8)) .border(border = BorderStroke(1.dp, MaterialTheme.colors.secondary.copy(alpha = 0.3F)), shape = RoundedCornerShape(8)),
contentColor = LocalContentColor.current
) { ) {
content() content()
} }