mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-08-29 03:18:37 +00:00
fix appearance etc
This commit is contained in:
+9
-10
@@ -1,7 +1,6 @@
|
||||
package chat.simplex.common.views.usersettings
|
||||
|
||||
import SectionBottomSpacer
|
||||
import SectionDividerSpaced
|
||||
import SectionSpacer
|
||||
import SectionView
|
||||
import android.app.Activity
|
||||
@@ -77,9 +76,9 @@ fun AppearanceScope.AppearanceLayout(
|
||||
systemDarkTheme: SharedPreference<String?>,
|
||||
changeIcon: (AppIcon) -> Unit,
|
||||
) {
|
||||
ColumnWithScrollBar {
|
||||
ColumnWithScrollBar(Modifier.background(canvasColorForCurrentTheme())) {
|
||||
AppBarTitle(stringResource(MR.strings.appearance_settings))
|
||||
SectionView(stringResource(MR.strings.settings_section_title_interface), contentPadding = PaddingValues()) {
|
||||
SectionView(stringResource(MR.strings.settings_section_title_interface), contentPadding = PaddingValues(), card = true) {
|
||||
val context = LocalContext.current
|
||||
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// SectionItemWithValue(
|
||||
@@ -114,21 +113,21 @@ fun AppearanceScope.AppearanceLayout(
|
||||
}
|
||||
}
|
||||
|
||||
SectionDividerSpaced()
|
||||
SectionSpacer()
|
||||
ThemesSection(systemDarkTheme)
|
||||
|
||||
SectionDividerSpaced()
|
||||
SectionSpacer()
|
||||
AppToolbarsSection()
|
||||
|
||||
SectionDividerSpaced()
|
||||
SectionSpacer()
|
||||
MessageShapeSection()
|
||||
|
||||
SectionDividerSpaced()
|
||||
SectionSpacer()
|
||||
ProfileImageSection()
|
||||
|
||||
SectionDividerSpaced(maxTopPadding = true)
|
||||
SectionSpacer()
|
||||
|
||||
SectionView(stringResource(MR.strings.settings_section_title_icon), contentPadding = PaddingValues(horizontal = DEFAULT_PADDING_HALF)) {
|
||||
SectionView(stringResource(MR.strings.settings_section_title_icon), contentPadding = PaddingValues(horizontal = DEFAULT_PADDING_HALF), card = true) {
|
||||
LazyRow {
|
||||
items(AppIcon.values().size, { index -> AppIcon.values()[index] }) { index ->
|
||||
val item = AppIcon.values()[index]
|
||||
@@ -152,7 +151,7 @@ fun AppearanceScope.AppearanceLayout(
|
||||
}
|
||||
}
|
||||
|
||||
SectionDividerSpaced(maxTopPadding = true)
|
||||
SectionSpacer()
|
||||
FontScaleSection()
|
||||
|
||||
SectionBottomSpacer()
|
||||
|
||||
+2
-2
@@ -387,7 +387,7 @@ private fun MutableState<MigrationToState?>.DownloadFailedView(link: String, cha
|
||||
@Composable
|
||||
private fun MutableState<MigrationToState?>.ArchiveImportView(archivePath: String, netCfg: NetCfg, networkProxy: NetworkProxy?) {
|
||||
Box {
|
||||
SectionView(stringResource(MR.strings.migrate_to_device_importing_archive).uppercase()) {}
|
||||
SectionView(stringResource(MR.strings.migrate_to_device_importing_archive), card = true) {}
|
||||
ProgressView()
|
||||
}
|
||||
LaunchedEffect(Unit) {
|
||||
@@ -397,7 +397,7 @@ private fun MutableState<MigrationToState?>.ArchiveImportView(archivePath: Strin
|
||||
|
||||
@Composable
|
||||
private fun MutableState<MigrationToState?>.ArchiveImportFailedView(archivePath: String, netCfg: NetCfg, networkProxy: NetworkProxy?) {
|
||||
SectionView(stringResource(MR.strings.migrate_to_device_import_failed).uppercase()) {
|
||||
SectionView(stringResource(MR.strings.migrate_to_device_import_failed), card = true) {
|
||||
SettingsActionItemWithContent(
|
||||
icon = painterResource(MR.images.ic_download),
|
||||
text = stringResource(MR.strings.migrate_to_device_repeat_import),
|
||||
|
||||
+2
-2
@@ -325,7 +325,7 @@ private fun ModalData.NewChatSheetLayout(
|
||||
item {
|
||||
if (filteredContactChats.isNotEmpty() && searchText.value.text.isEmpty()) {
|
||||
SectionDividerSpaced(maxTopPadding = false, maxBottomPadding = false)
|
||||
SectionView(stringResource(MR.strings.contact_list_header_title).uppercase(), headerBottomPadding = DEFAULT_PADDING_HALF) {}
|
||||
SectionView(stringResource(MR.strings.contact_list_header_title), headerBottomPadding = DEFAULT_PADDING_HALF) {}
|
||||
Spacer(Modifier.height(DEFAULT_PADDING_HALF))
|
||||
}
|
||||
}
|
||||
@@ -410,7 +410,7 @@ private fun ModalData.NewChatSheetLayout(
|
||||
item {
|
||||
if (filteredContactChats.isNotEmpty() && searchText.value.text.isEmpty()) {
|
||||
SectionDividerSpaced()
|
||||
SectionView(stringResource(MR.strings.contact_list_header_title).uppercase(), headerBottomPadding = DEFAULT_PADDING_HALF) {}
|
||||
SectionView(stringResource(MR.strings.contact_list_header_title), headerBottomPadding = DEFAULT_PADDING_HALF) {}
|
||||
}
|
||||
}
|
||||
item {
|
||||
|
||||
+4
-4
@@ -495,7 +495,7 @@ private fun InviteView(rhId: Long?, connLinkInvitation: CreatedConnLink, contact
|
||||
)
|
||||
SimpleXCreatedLinkQRCode(connLinkInvitation, short = showShortLink.value, onShare = { chatModel.markShowingInvitationUsed() })
|
||||
} else {
|
||||
SectionView(stringResource(MR.strings.share_this_1_time_link).uppercase(), headerBottomPadding = 5.dp) {
|
||||
SectionView(stringResource(MR.strings.share_this_1_time_link), headerBottomPadding = 5.dp) {
|
||||
LinkTextView(connLinkInvitation.simplexChatUri(short = showShortLink.value), true)
|
||||
}
|
||||
|
||||
@@ -519,7 +519,7 @@ private fun InviteView(rhId: Long?, connLinkInvitation: CreatedConnLink, contact
|
||||
val currentUser = remember { chatModel.currentUser }.value
|
||||
|
||||
if (currentUser != null) {
|
||||
SectionView(stringResource(MR.strings.new_chat_share_profile).uppercase(), headerBottomPadding = 5.dp) {
|
||||
SectionView(stringResource(MR.strings.new_chat_share_profile), headerBottomPadding = 5.dp) {
|
||||
SectionItemView(
|
||||
padding = PaddingValues(
|
||||
top = 0.dp,
|
||||
@@ -643,14 +643,14 @@ private fun ConnectView(rhId: Long?, showQRCodeScanner: MutableState<Boolean>, p
|
||||
)
|
||||
}
|
||||
|
||||
SectionView(stringResource(MR.strings.paste_the_link_you_received).uppercase(), headerBottomPadding = 5.dp) {
|
||||
SectionView(stringResource(MR.strings.paste_the_link_you_received), headerBottomPadding = 5.dp) {
|
||||
PasteLinkView(rhId, pastedLink, showQRCodeScanner, close)
|
||||
}
|
||||
|
||||
if (appPlatform.isAndroid) {
|
||||
Spacer(Modifier.height(10.dp))
|
||||
|
||||
SectionView(stringResource(MR.strings.or_scan_qr_code).uppercase(), headerBottomPadding = 5.dp) {
|
||||
SectionView(stringResource(MR.strings.or_scan_qr_code), headerBottomPadding = 5.dp) {
|
||||
QRCodeScanner(showQRCodeScanner) { text ->
|
||||
val linkVerified = verifyOnly(text)
|
||||
if (!linkVerified) {
|
||||
|
||||
+3
-4
@@ -5,7 +5,6 @@ import SectionView
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
@@ -13,7 +12,7 @@ import androidx.compose.ui.unit.dp
|
||||
import chat.simplex.common.model.ChatController.appPrefs
|
||||
import chat.simplex.common.model.ChatModel
|
||||
import chat.simplex.common.platform.chatModel
|
||||
import chat.simplex.common.ui.theme.*
|
||||
import chat.simplex.common.ui.theme.DEFAULT_PADDING
|
||||
import chat.simplex.common.views.helpers.*
|
||||
import chat.simplex.common.views.remote.AddingMobileDevice
|
||||
import chat.simplex.common.views.remote.DeviceNameField
|
||||
@@ -57,7 +56,7 @@ private fun LinkAMobileLayout(
|
||||
updateDeviceName: (String) -> Unit,
|
||||
) {
|
||||
ModalView({ appPrefs.onboardingStage.set(OnboardingStage.Step1_SimpleXInfo) }) {
|
||||
Column(Modifier.fillMaxSize().background(canvasColorForCurrentTheme()).padding(top = AppBarHeight * fontSizeSqrtMultiplier)) {
|
||||
Column(Modifier.fillMaxSize().padding(top = AppBarHeight * fontSizeSqrtMultiplier)) {
|
||||
Box(Modifier.align(Alignment.CenterHorizontally)) {
|
||||
AppBarTitle(stringResource(if (remember { chatModel.remoteHosts }.isEmpty()) MR.strings.link_a_mobile else MR.strings.linked_mobiles), overrideTitleColor = MaterialTheme.colors.onBackground)
|
||||
}
|
||||
@@ -66,7 +65,7 @@ private fun LinkAMobileLayout(
|
||||
Modifier.weight(0.3f),
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
SectionView(generalGetString(MR.strings.this_device_name), card = true) {
|
||||
SectionView(generalGetString(MR.strings.this_device_name)) {
|
||||
DeviceNameField(deviceName.value ?: "") { updateDeviceName(it) }
|
||||
SectionTextFooter(generalGetString(MR.strings.this_device_name_shared_with_mobile))
|
||||
PreferenceToggle(stringResource(MR.strings.multicast_discoverable_via_local_network), checked = remember { ChatModel.controller.appPrefs.offerRemoteMulticast.state }.value) {
|
||||
|
||||
+9
-8
@@ -1,7 +1,7 @@
|
||||
package chat.simplex.common.views.remote
|
||||
|
||||
import SectionBottomSpacer
|
||||
import SectionSpacer
|
||||
import SectionDividerSpaced
|
||||
import SectionItemView
|
||||
import SectionItemViewLongClickable
|
||||
import SectionTextFooter
|
||||
@@ -90,16 +90,17 @@ fun ConnectMobileLayout(
|
||||
connectDesktop: () -> Unit,
|
||||
deleteHost: (RemoteHostInfo) -> Unit,
|
||||
) {
|
||||
ColumnWithScrollBar(Modifier.background(canvasColorForCurrentTheme())) {
|
||||
ColumnWithScrollBar {
|
||||
AppBarTitle(stringResource(if (remember { chatModel.remoteHosts }.isEmpty()) MR.strings.link_a_mobile else MR.strings.linked_mobiles))
|
||||
SectionView(generalGetString(MR.strings.this_device_name), card = true) {
|
||||
SectionView(generalGetString(MR.strings.this_device_name)) {
|
||||
DeviceNameField(deviceName.value ?: "") { updateDeviceName(it) }
|
||||
SectionTextFooter(generalGetString(MR.strings.this_device_name_shared_with_mobile))
|
||||
PreferenceToggle(stringResource(MR.strings.multicast_discoverable_via_local_network), checked = remember { controller.appPrefs.offerRemoteMulticast.state }.value) {
|
||||
controller.appPrefs.offerRemoteMulticast.set(it)
|
||||
}
|
||||
SectionDividerSpaced()
|
||||
}
|
||||
SectionTextFooter(generalGetString(MR.strings.this_device_name_shared_with_mobile))
|
||||
SectionView(stringResource(MR.strings.devices), card = true) {
|
||||
SectionView(stringResource(MR.strings.devices)) {
|
||||
if (chatModel.localUserCreated.value == true) {
|
||||
SettingsActionItemWithContent(text = stringResource(MR.strings.this_device), icon = painterResource(MR.images.ic_desktop), click = connectDesktop) {
|
||||
if (connectedHost.value == null) {
|
||||
@@ -188,7 +189,7 @@ private fun ConnectMobileViewLayout(
|
||||
if (title != null) {
|
||||
AppBarTitle(title)
|
||||
}
|
||||
SectionView(card = true) {
|
||||
SectionView {
|
||||
if (invitation != null && sessionCode == null && port != null) {
|
||||
Box {
|
||||
QRCode(invitation)
|
||||
@@ -214,7 +215,7 @@ private fun ConnectMobileViewLayout(
|
||||
Spacer(Modifier.height(DEFAULT_PADDING))
|
||||
}
|
||||
if (deviceName != null || sessionCode != null) {
|
||||
SectionView(stringResource(MR.strings.connected_mobile), card = true) {
|
||||
SectionView(stringResource(MR.strings.connected_mobile)) {
|
||||
SelectionContainer {
|
||||
Text(
|
||||
deviceName ?: stringResource(MR.strings.new_mobile_device),
|
||||
@@ -227,7 +228,7 @@ private fun ConnectMobileViewLayout(
|
||||
}
|
||||
|
||||
if (sessionCode != null) {
|
||||
SectionView(stringResource(MR.strings.verify_code_on_mobile), card = true) {
|
||||
SectionView(stringResource(MR.strings.verify_code_on_mobile)) {
|
||||
SelectionContainer {
|
||||
Text(
|
||||
sessionCode.substring(0, 23),
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ private fun HiddenProfileLayout(
|
||||
val passwordValid by remember { derivedStateOf { hidePassword.value == hidePassword.value.trim() } }
|
||||
val confirmValid by remember { derivedStateOf { confirmHidePassword.value == "" || hidePassword.value == confirmHidePassword.value } }
|
||||
val saveDisabled by remember { derivedStateOf { hidePassword.value == "" || !passwordValid || confirmHidePassword.value == "" || !confirmValid } }
|
||||
SectionView(stringResource(MR.strings.hidden_profile_password).uppercase()) {
|
||||
SectionView(stringResource(MR.strings.hidden_profile_password)) {
|
||||
SectionItemViewWithoutMinPadding {
|
||||
PassphraseField(hidePassword, generalGetString(MR.strings.password_to_show), isValid = { passwordValid }, showStrength = true)
|
||||
}
|
||||
|
||||
+3
-3
@@ -182,7 +182,7 @@ private fun ChatRelayLayout(
|
||||
|
||||
@Composable
|
||||
private fun PresetRelay(relay: MutableState<UserChatRelay>, testing: MutableState<Boolean>) {
|
||||
SectionView(stringResource(MR.strings.preset_relay_address).uppercase()) {
|
||||
SectionView(stringResource(MR.strings.preset_relay_address)) {
|
||||
SelectionContainer {
|
||||
Text(
|
||||
relay.value.address,
|
||||
@@ -192,7 +192,7 @@ private fun PresetRelay(relay: MutableState<UserChatRelay>, testing: MutableStat
|
||||
}
|
||||
}
|
||||
SectionDividerSpaced()
|
||||
SectionView(stringResource(MR.strings.preset_relay_name).uppercase()) {
|
||||
SectionView(stringResource(MR.strings.preset_relay_name)) {
|
||||
SectionItemView {
|
||||
Text(relay.value.displayName)
|
||||
}
|
||||
@@ -291,7 +291,7 @@ private fun UseRelaySection(
|
||||
testing: MutableState<Boolean>
|
||||
) {
|
||||
val scope = rememberCoroutineScope()
|
||||
SectionView(stringResource(MR.strings.use_relay).uppercase()) {
|
||||
SectionView(stringResource(MR.strings.use_relay)) {
|
||||
SectionItemViewSpaceBetween(
|
||||
click = {
|
||||
testing.value = true
|
||||
|
||||
+12
-13
@@ -1,7 +1,6 @@
|
||||
package chat.simplex.common.views.usersettings
|
||||
|
||||
import SectionBottomSpacer
|
||||
import SectionDividerSpaced
|
||||
import SectionSpacer
|
||||
import SectionTextFooter
|
||||
import SectionView
|
||||
@@ -23,7 +22,7 @@ import chat.simplex.common.model.CloseBehavior
|
||||
import chat.simplex.common.model.SharedPreference
|
||||
import chat.simplex.common.trayIsAvailable
|
||||
import chat.simplex.common.platform.*
|
||||
import chat.simplex.common.ui.theme.DEFAULT_PADDING
|
||||
import chat.simplex.common.ui.theme.*
|
||||
import chat.simplex.common.views.helpers.*
|
||||
import chat.simplex.res.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
@@ -43,9 +42,9 @@ fun AppearanceScope.AppearanceLayout(
|
||||
languagePref: SharedPreference<String?>,
|
||||
systemDarkTheme: SharedPreference<String?>,
|
||||
) {
|
||||
ColumnWithScrollBar {
|
||||
ColumnWithScrollBar(Modifier.background(canvasColorForCurrentTheme())) {
|
||||
AppBarTitle(stringResource(MR.strings.appearance_settings))
|
||||
SectionView(stringResource(MR.strings.settings_section_title_language), contentPadding = PaddingValues()) {
|
||||
SectionView(stringResource(MR.strings.settings_section_title_language), contentPadding = PaddingValues(), card = true) {
|
||||
val state = rememberSaveable { mutableStateOf(languagePref.get() ?: "system") }
|
||||
LangSelector(state) {
|
||||
state.value = it
|
||||
@@ -65,27 +64,27 @@ fun AppearanceScope.AppearanceLayout(
|
||||
SettingsPreferenceItem(icon = null, stringResource(MR.strings.chat_bottom_bar), ChatModel.controller.appPrefs.chatBottomBar)
|
||||
}
|
||||
}
|
||||
SectionDividerSpaced()
|
||||
SectionSpacer()
|
||||
ThemesSection(systemDarkTheme)
|
||||
|
||||
if (trayIsAvailable) {
|
||||
SectionDividerSpaced()
|
||||
SectionSpacer()
|
||||
MinimizeToTraySection()
|
||||
}
|
||||
|
||||
SectionDividerSpaced()
|
||||
SectionSpacer()
|
||||
AppToolbarsSection()
|
||||
|
||||
SectionDividerSpaced()
|
||||
SectionSpacer()
|
||||
MessageShapeSection()
|
||||
|
||||
SectionDividerSpaced()
|
||||
SectionSpacer()
|
||||
ProfileImageSection()
|
||||
|
||||
SectionDividerSpaced(maxTopPadding = true)
|
||||
SectionSpacer()
|
||||
FontScaleSection()
|
||||
|
||||
SectionDividerSpaced(maxTopPadding = true)
|
||||
SectionSpacer()
|
||||
DensityScaleSection()
|
||||
|
||||
SectionBottomSpacer()
|
||||
@@ -96,7 +95,7 @@ fun AppearanceScope.AppearanceLayout(
|
||||
private fun MinimizeToTraySection() {
|
||||
val pref = remember { appPrefs.closeBehavior.state }
|
||||
val on = pref.value == CloseBehavior.MinimizeToTray
|
||||
SectionView {
|
||||
SectionView(card = true) {
|
||||
PreferenceToggle(
|
||||
stringResource(MR.strings.appearance_minimize_to_tray),
|
||||
checked = on,
|
||||
@@ -110,7 +109,7 @@ private fun MinimizeToTraySection() {
|
||||
@Composable
|
||||
fun DensityScaleSection() {
|
||||
val localDensityScale = remember { mutableStateOf(appPrefs.densityScale.get()) }
|
||||
SectionView(stringResource(MR.strings.appearance_zoom).uppercase(), contentPadding = PaddingValues(horizontal = DEFAULT_PADDING)) {
|
||||
SectionView(stringResource(MR.strings.appearance_zoom), contentPadding = PaddingValues(horizontal = DEFAULT_PADDING), card = true) {
|
||||
Row(Modifier.padding(top = 10.dp), verticalAlignment = Alignment.CenterVertically) {
|
||||
Box(Modifier.size(50.dp)
|
||||
.background(MaterialTheme.colors.surface, RoundedCornerShape(percent = 22))
|
||||
|
||||
Reference in New Issue
Block a user