From 9ca6b188f108cbc0ac780d0e2c798eb04204fc98 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Mar 2025 12:43:29 +0100 Subject: [PATCH 1/3] Remove PreferenceText, replace by ListItem. --- .../impl/settings/LockScreenSettingsView.kt | 21 +- .../preferences/impl/about/AboutView.kt | 15 +- .../impl/developer/DeveloperSettingsView.kt | 43 +++- .../notifications/NotificationSettingsView.kt | 62 +++-- .../preferences/RageshakePreferencesView.kt | 9 +- .../rageshake/impl/bugreport/BugReportView.kt | 9 +- .../roomdetails/impl/RoomDetailsView.kt | 13 +- .../preferences/PreferenceCategory.kt | 4 - .../components/preferences/PreferencePage.kt | 5 - .../components/preferences/PreferenceText.kt | 216 ------------------ 10 files changed, 117 insertions(+), 280 deletions(-) delete mode 100644 libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceText.kt diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsView.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsView.kt index c0a70bac66..a843525d00 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsView.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsView.kt @@ -11,16 +11,17 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter -import io.element.android.compound.theme.ElementTheme import io.element.android.features.lockscreen.impl.R import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory import io.element.android.libraries.designsystem.components.preferences.PreferenceDivider import io.element.android.libraries.designsystem.components.preferences.PreferencePage import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch -import io.element.android.libraries.designsystem.components.preferences.PreferenceText import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.theme.components.ListItem +import io.element.android.libraries.designsystem.theme.components.ListItemStyle +import io.element.android.libraries.designsystem.theme.components.Text @Composable fun LockScreenSettingsView( @@ -35,15 +36,19 @@ fun LockScreenSettingsView( modifier = modifier ) { PreferenceCategory(showTopDivider = false) { - PreferenceText( - title = stringResource(id = R.string.screen_app_lock_settings_change_pin), - onClick = onChangePinClick + ListItem( + headlineContent = { + Text(stringResource(id = R.string.screen_app_lock_settings_change_pin)) + }, + onClick = onChangePinClick, ) PreferenceDivider() if (state.showRemovePinOption) { - PreferenceText( - title = stringResource(id = R.string.screen_app_lock_settings_remove_pin), - tintColor = ElementTheme.colors.textCriticalPrimary, + ListItem( + headlineContent = { + Text(stringResource(id = R.string.screen_app_lock_settings_remove_pin)) + }, + style = ListItemStyle.Destructive, onClick = { state.eventSink(LockScreenSettingsEvents.OnRemovePin) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutView.kt index ce8b53a977..9d2018f4a7 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutView.kt @@ -12,9 +12,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import io.element.android.libraries.designsystem.components.preferences.PreferencePage -import io.element.android.libraries.designsystem.components.preferences.PreferenceText import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.theme.components.ListItem +import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.ui.strings.CommonStrings @Composable @@ -31,13 +32,17 @@ fun AboutView( title = stringResource(id = CommonStrings.common_about) ) { state.elementLegals.forEach { elementLegal -> - PreferenceText( - title = stringResource(id = elementLegal.titleRes), + ListItem( + headlineContent = { + Text(stringResource(id = elementLegal.titleRes)) + }, onClick = { onElementLegalClick(elementLegal) } ) } - PreferenceText( - title = stringResource(id = CommonStrings.common_open_source_licenses), + ListItem( + headlineContent = { + Text(stringResource(id = CommonStrings.common_open_source_licenses)) + }, onClick = onOpenSourceLicensesClick, ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt index 86666175a4..a5dccd3244 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt @@ -7,23 +7,30 @@ package io.element.android.features.preferences.impl.developer +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.progressSemantics import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.unit.dp import io.element.android.features.preferences.impl.R import io.element.android.features.preferences.impl.developer.tracing.LogLevelItem import io.element.android.features.rageshake.api.preferences.RageshakePreferencesView +import io.element.android.libraries.designsystem.components.list.ListItemContent import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory import io.element.android.libraries.designsystem.components.preferences.PreferenceDropdown import io.element.android.libraries.designsystem.components.preferences.PreferencePage import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch -import io.element.android.libraries.designsystem.components.preferences.PreferenceText import io.element.android.libraries.designsystem.components.preferences.PreferenceTextField import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight + +import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator +import io.element.android.libraries.designsystem.theme.components.ListItem +import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.featureflag.ui.FeatureListView import io.element.android.libraries.featureflag.ui.model.FeatureUiModel import io.element.android.libraries.ui.strings.CommonStrings @@ -57,13 +64,15 @@ fun DeveloperSettingsView( selectedOption = state.tracingLogLevel.dataOrNull(), options = LogLevelItem.entries.toPersistentList(), onSelectOption = { logLevel -> - state.eventSink(DeveloperSettingsEvents.SetTracingLogLevel(logLevel)) + state.eventSink(DeveloperSettingsEvents.SetTracingLogLevel(logLevel)) } ) } PreferenceCategory(title = "Showkase") { - PreferenceText( - title = "Open Showkase browser", + ListItem( + headlineContent = { + Text("Open Showkase browser") + }, onClick = onOpenShowkase ) } @@ -71,17 +80,31 @@ fun DeveloperSettingsView( state = state.rageshakeState, ) PreferenceCategory(title = "Crash", showTopDivider = false) { - PreferenceText( - title = "Crash the app 💥", + ListItem( + headlineContent = { + Text("Crash the app 💥") + }, onClick = { error("This crash is a test.") } ) } val cache = state.cacheSize PreferenceCategory(title = "Cache", showTopDivider = false) { - PreferenceText( - title = "Clear cache", - currentValue = cache.dataOrNull(), - loadingCurrentValue = state.cacheSize.isLoading() || state.clearCacheAction.isLoading(), + ListItem( + headlineContent = { + Text("Clear cache") + }, + trailingContent = if (state.cacheSize.isLoading() || state.clearCacheAction.isLoading()) { + ListItemContent.Custom { + CircularProgressIndicator( + modifier = Modifier + .progressSemantics() + .size(20.dp), + strokeWidth = 2.dp + ) + } + } else { + ListItemContent.Text(cache.dataOrNull().orEmpty()) + }, onClick = { if (state.clearCacheAction.isLoading().not()) { state.eventSink(DeveloperSettingsEvents.ClearCache) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt index a48b9651ef..1828e75374 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt @@ -31,10 +31,10 @@ import io.element.android.libraries.designsystem.components.list.ListItemContent import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory import io.element.android.libraries.designsystem.components.preferences.PreferencePage import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch -import io.element.android.libraries.designsystem.components.preferences.PreferenceText import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator +import io.element.android.libraries.designsystem.theme.components.IconSource import io.element.android.libraries.designsystem.theme.components.ListItem import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.utils.OnLifecycleEvent @@ -109,13 +109,19 @@ private fun NotificationSettingsContentView( val context = LocalContext.current val systemSettings: NotificationSettingsState.AppSettings = state.appSettings if (systemSettings.appNotificationsEnabled && !systemSettings.systemNotificationsEnabled) { - PreferenceText( - icon = CompoundIcons.NotificationsOffSolid(), - title = stringResource(id = R.string.screen_notification_settings_system_notifications_turned_off), - subtitle = stringResource( - id = R.string.screen_notification_settings_system_notifications_action_required, - stringResource(id = R.string.screen_notification_settings_system_notifications_action_required_content_link) - ), + ListItem( + leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.NotificationsOffSolid())), + headlineContent = { + Text(stringResource(id = R.string.screen_notification_settings_system_notifications_turned_off)) + }, + supportingContent = { + Text( + stringResource( + id = R.string.screen_notification_settings_system_notifications_action_required, + stringResource(id = R.string.screen_notification_settings_system_notifications_action_required_content_link) + ) + ) + }, onClick = { context.startNotificationSettingsIntent() } @@ -131,10 +137,14 @@ private fun NotificationSettingsContentView( if (systemSettings.appNotificationsEnabled) { if (!state.fullScreenIntentPermissionsState.permissionGranted) { PreferenceCategory { - PreferenceText( - icon = CompoundIcons.VoiceCallSolid(), - title = stringResource(id = R.string.full_screen_intent_banner_title), - subtitle = stringResource(R.string.full_screen_intent_banner_message), + ListItem( + leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.VoiceCallSolid())), + headlineContent = { + Text(stringResource(id = R.string.full_screen_intent_banner_title)) + }, + supportingContent = { + Text(stringResource(R.string.full_screen_intent_banner_message)) + }, onClick = { state.fullScreenIntentPermissionsState.openFullScreenIntentSettings() } @@ -142,15 +152,22 @@ private fun NotificationSettingsContentView( } } PreferenceCategory(title = stringResource(id = R.string.screen_notification_settings_notification_section_title)) { - PreferenceText( - title = stringResource(id = R.string.screen_notification_settings_group_chats), - subtitle = getTitleForRoomNotificationMode(mode = matrixSettings.defaultGroupNotificationMode), + ListItem( + headlineContent = { + Text(stringResource(id = R.string.screen_notification_settings_group_chats)) + }, + supportingContent = { + Text(getTitleForRoomNotificationMode(mode = matrixSettings.defaultGroupNotificationMode)) + }, onClick = onGroupChatsClick ) - - PreferenceText( - title = stringResource(id = R.string.screen_notification_settings_direct_chats), - subtitle = getTitleForRoomNotificationMode(mode = matrixSettings.defaultOneToOneNotificationMode), + ListItem( + headlineContent = { + Text(stringResource(id = R.string.screen_notification_settings_direct_chats)) + }, + supportingContent = { + Text(getTitleForRoomNotificationMode(mode = matrixSettings.defaultOneToOneNotificationMode)) + }, onClick = onDirectChatsClick ) } @@ -180,9 +197,10 @@ private fun NotificationSettingsContentView( ) } PreferenceCategory(title = stringResource(id = R.string.troubleshoot_notifications_entry_point_section)) { - PreferenceText( - modifier = Modifier, - title = stringResource(id = R.string.troubleshoot_notifications_entry_point_title), + ListItem( + headlineContent = { + Text(stringResource(id = R.string.troubleshoot_notifications_entry_point_title)) + }, onClick = onTroubleshootNotificationsClick ) } diff --git a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/preferences/RageshakePreferencesView.kt b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/preferences/RageshakePreferencesView.kt index 51194a2d9c..0841e097ba 100644 --- a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/preferences/RageshakePreferencesView.kt +++ b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/preferences/RageshakePreferencesView.kt @@ -16,9 +16,10 @@ import io.element.android.features.rageshake.api.R import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory import io.element.android.libraries.designsystem.components.preferences.PreferenceSlide import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch -import io.element.android.libraries.designsystem.components.preferences.PreferenceText import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.theme.components.ListItem +import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.ui.strings.CommonStrings @Composable @@ -52,7 +53,11 @@ fun RageshakePreferencesView( onValueChange = ::onSensitivityChanged ) } else { - PreferenceText(title = "Rageshaking is not supported by your device") + ListItem( + headlineContent = { + Text("Rageshaking is not supported by your device") + }, + ) } } } diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportView.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportView.kt index 29107d5e3e..42b79aed3b 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportView.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportView.kt @@ -38,12 +38,13 @@ import io.element.android.libraries.designsystem.components.preferences.Preferen import io.element.android.libraries.designsystem.components.preferences.PreferencePage import io.element.android.libraries.designsystem.components.preferences.PreferenceRow import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch -import io.element.android.libraries.designsystem.components.preferences.PreferenceText import io.element.android.libraries.designsystem.modifiers.onTabOrEnterKeyFocusNext import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.debugPlaceholderBackground import io.element.android.libraries.designsystem.theme.components.Button +import io.element.android.libraries.designsystem.theme.components.ListItem +import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TextField import io.element.android.libraries.designsystem.theme.components.TextFieldValidity import io.element.android.libraries.ui.strings.CommonStrings @@ -96,8 +97,10 @@ fun BugReportView( } Spacer(modifier = Modifier.height(16.dp)) PreferenceDivider() - PreferenceText( - title = stringResource(id = R.string.screen_bug_report_view_logs), + ListItem( + headlineContent = { + Text(stringResource(id = R.string.screen_bug_report_view_logs)) + }, enabled = isFormEnabled, onClick = onViewLogs, ) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt index 94ef65f207..c1e6a84617 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt @@ -54,7 +54,6 @@ import io.element.android.libraries.designsystem.components.button.MainActionBut import io.element.android.libraries.designsystem.components.list.ListItemContent import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch -import io.element.android.libraries.designsystem.components.preferences.PreferenceText import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.PreviewWithLargeHeight @@ -481,10 +480,14 @@ private fun TopicSection( showTopDivider = false, ) { if (roomTopic is RoomTopicState.CanAddTopic) { - PreferenceText( - title = stringResource(R.string.screen_room_details_add_topic_title), - icon = CompoundIcons.Plus(), - onClick = { onActionClick(RoomDetailsAction.AddTopic) }, + ListItem( + leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Plus())), + headlineContent = { + Text(stringResource(id = R.string.screen_room_details_add_topic_title)) + }, + onClick = { + onActionClick(RoomDetailsAction.AddTopic) + }, ) } else if (roomTopic is RoomTopicState.ExistingTopic) { ClickableLinkText( diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceCategory.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceCategory.kt index ce9f612de2..1a993899e8 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceCategory.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceCategory.kt @@ -47,10 +47,6 @@ internal fun PreferenceCategoryPreview() = ElementThemedPreview { PreferenceCategory( title = "Category title", ) { - PreferenceText( - title = "Title", - icon = CompoundIcons.ChatProblem(), - ) PreferenceSwitch( title = "Switch", icon = CompoundIcons.Threads(), diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferencePage.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferencePage.kt index 27e873be9b..40bcfc949b 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferencePage.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferencePage.kt @@ -97,11 +97,6 @@ internal fun PreferencePagePreview() = ElementPreview { PreferenceCategory( title = "Category title", ) { - PreferenceText( - title = "Title", - subtitle = "Some other text", - icon = CompoundIcons.ChatProblem(), - ) PreferenceDivider() PreferenceSwitch( title = "Switch", diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceText.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceText.kt deleted file mode 100644 index a5d793445e..0000000000 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceText.kt +++ /dev/null @@ -1,216 +0,0 @@ -/* - * Copyright 2023, 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -package io.element.android.libraries.designsystem.components.preferences - -import androidx.annotation.DrawableRes -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.progressSemantics -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.graphics.vector.ImageVector -import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import io.element.android.compound.theme.ElementTheme -import io.element.android.compound.tokens.generated.CompoundIcons -import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage -import io.element.android.libraries.designsystem.atomic.atoms.RedIndicatorAtom -import io.element.android.libraries.designsystem.components.list.ListItemContent -import io.element.android.libraries.designsystem.components.preferences.components.preferenceIcon -import io.element.android.libraries.designsystem.preview.ElementPreviewDark -import io.element.android.libraries.designsystem.preview.ElementPreviewLight -import io.element.android.libraries.designsystem.preview.PreviewGroup -import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator -import io.element.android.libraries.designsystem.theme.components.ListItem -import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.libraries.designsystem.toEnabledColor -import io.element.android.libraries.designsystem.toSecondaryEnabledColor - -@Composable -fun PreferenceText( - title: String, - modifier: Modifier = Modifier, - enabled: Boolean = true, - subtitle: String? = null, - subtitleAnnotated: AnnotatedString? = null, - currentValue: String? = null, - loadingCurrentValue: Boolean = false, - icon: ImageVector? = null, - @DrawableRes iconResourceId: Int? = null, - showIconAreaIfNoIcon: Boolean = false, - showIconBadge: Boolean = false, - showEndBadge: Boolean = false, - tintColor: Color? = null, - onClick: () -> Unit = {}, -) { - ListItem( - modifier = modifier, - enabled = enabled, - onClick = onClick, - leadingContent = preferenceIcon( - icon = icon, - iconResourceId = iconResourceId, - showIconBadge = showIconBadge, - enabled = enabled, - showIconAreaIfNoIcon = showIconAreaIfNoIcon, - tintColor = tintColor, - ), - headlineContent = { - Text( - style = ElementTheme.typography.fontBodyLgRegular, - text = title, - color = tintColor ?: enabled.toEnabledColor(), - ) - }, - supportingContent = if (subtitle != null) { - { - Text( - style = ElementTheme.typography.fontBodyMdRegular, - text = subtitle, - color = tintColor ?: enabled.toSecondaryEnabledColor(), - ) - } - } else { - subtitleAnnotated?.let { - { - Text( - style = ElementTheme.typography.fontBodyMdRegular, - text = it, - color = tintColor ?: enabled.toSecondaryEnabledColor(), - ) - } - } - }, - trailingContent = if (currentValue != null || loadingCurrentValue || showEndBadge) { - ListItemContent.Custom { - Row( - verticalAlignment = Alignment.CenterVertically, - ) { - if (currentValue != null) { - Text( - text = currentValue, - style = ElementTheme.typography.fontBodyXsMedium, - color = enabled.toSecondaryEnabledColor(), - ) - } else if (loadingCurrentValue) { - CircularProgressIndicator( - modifier = Modifier - .progressSemantics() - .size(20.dp), - strokeWidth = 2.dp - ) - } - if (showEndBadge) { - val endBadgeStartPadding = if (currentValue != null || loadingCurrentValue) 16.dp else 0.dp - RedIndicatorAtom( - modifier = Modifier - .padding(start = endBadgeStartPadding) - ) - } - } - } - } else { - null - } - ) -} - -@Preview(group = PreviewGroup.Preferences) -@Composable -internal fun PreferenceTextLightPreview() = ElementPreviewLight { - ContentToPreview(showEndBadge = false) -} - -@Preview(group = PreviewGroup.Preferences) -@Composable -internal fun PreferenceTextDarkPreview() = ElementPreviewDark { - ContentToPreview(showEndBadge = false) -} - -@Preview(group = PreviewGroup.Preferences) -@Composable -internal fun PreferenceTextWithEndBadgeLightPreview() = ElementPreviewLight { - ContentToPreview(showEndBadge = true) -} - -@Preview(group = PreviewGroup.Preferences) -@Composable -internal fun PreferenceTextWithEndBadgeDarkPreview() = ElementPreviewDark { - ContentToPreview(showEndBadge = true) -} - -@ExcludeFromCoverage -@Composable -private fun ContentToPreview(showEndBadge: Boolean) { - Column( - verticalArrangement = Arrangement.spacedBy(2.dp) - ) { - PreferenceText( - title = "Title", - icon = CompoundIcons.ChatProblem(), - showEndBadge = showEndBadge, - ) - PreferenceText( - title = "Title", - subtitle = "Some content", - icon = CompoundIcons.ChatProblem(), - showEndBadge = showEndBadge, - ) - PreferenceText( - title = "Title", - subtitle = "Some content", - icon = CompoundIcons.ChatProblem(), - currentValue = "123", - showEndBadge = showEndBadge, - ) - PreferenceText( - title = "Title", - subtitle = "Some content", - icon = CompoundIcons.ChatProblem(), - currentValue = "123", - enabled = false, - showEndBadge = showEndBadge, - ) - PreferenceText( - title = "Title", - subtitle = "Some content", - icon = CompoundIcons.ChatProblem(), - loadingCurrentValue = true, - showEndBadge = showEndBadge, - ) - PreferenceText( - title = "Title", - icon = CompoundIcons.ChatProblem(), - currentValue = "123", - showEndBadge = showEndBadge, - ) - PreferenceText( - title = "Title", - icon = CompoundIcons.ChatProblem(), - loadingCurrentValue = true, - showEndBadge = showEndBadge, - ) - PreferenceText( - title = "Title no icon with icon area", - showIconAreaIfNoIcon = true, - loadingCurrentValue = true, - showEndBadge = showEndBadge, - ) - PreferenceText( - title = "Title no icon", - loadingCurrentValue = true, - showEndBadge = showEndBadge, - ) - } -} From 1ac85385f955c2fd74a35016828e68fbd5624647 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Wed, 5 Mar 2025 16:40:13 +0000 Subject: [PATCH 2/3] Update screenshots --- ...mponents.preferences_PreferenceCategory_Preferences_en.png | 4 ++-- ...nsystem.components.preferences_PreferencePage_Day_0_en.png | 4 ++-- ...ystem.components.preferences_PreferencePage_Night_0_en.png | 4 ++-- ...mponents.preferences_PreferenceTextDark_Preferences_en.png | 3 --- ...ponents.preferences_PreferenceTextLight_Preferences_en.png | 3 --- ...ferences_PreferenceTextWithEndBadgeDark_Preferences_en.png | 3 --- ...erences_PreferenceTextWithEndBadgeLight_Preferences_en.png | 3 --- 7 files changed, 6 insertions(+), 18 deletions(-) delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextDark_Preferences_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextLight_Preferences_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeDark_Preferences_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeLight_Preferences_en.png diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceCategory_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceCategory_Preferences_en.png index 930b5fd40e..f78e51c2bb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceCategory_Preferences_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceCategory_Preferences_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9a08f45b5ba55ec977b37c70764e2a7d43a484d803f413236ac8fc59c271875 -size 28856 +oid sha256:2681f08233461baaa5c73b5ea2469f62d8140b2e8672c69dda9aabae4b06763b +size 25071 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Day_0_en.png index be7c10a3d4..1686f961f8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67f2f19d1761c95566e9647d1527a506f183ee45279962285ad4e579f6173dea -size 26361 +oid sha256:00b9249fcec16ceea7e9d9c17d180209fcf4523cec51661aaaf3d09b9e8904ed +size 22272 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Night_0_en.png index c17b35db6f..3bb438a0db 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d3049344e7e15f21e5f9e34a5f684c08d0933f2242e5292ea05d7f32c087f58 -size 25510 +oid sha256:f2fa5ff5eef1ef2aedce9c48e38a19dfa2330e2fce70ce9d3b98a6ae2aeb60e0 +size 21567 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextDark_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextDark_Preferences_en.png deleted file mode 100644 index 63288b1100..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextDark_Preferences_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:59a320b4fa1ffe11721420bef6408270c5e758ee367cb2651819b232e11c2e2d -size 34914 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextLight_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextLight_Preferences_en.png deleted file mode 100644 index a83058fe23..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextLight_Preferences_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:01642169865bc9249a13a8057b1bd05195458b24dc11aaaad7b222eb254856d4 -size 35408 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeDark_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeDark_Preferences_en.png deleted file mode 100644 index 03e11b360d..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeDark_Preferences_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:917292ead06f8abc391b2132ffc79cfafb52873ff554e68fe8001c15b08612ce -size 37382 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeLight_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeLight_Preferences_en.png deleted file mode 100644 index 1dd72a7b14..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceTextWithEndBadgeLight_Preferences_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:38ef6a764b131132929791d643cf77e31c183f498d54ab5b61d2e9a3c1524c76 -size 37505 From 5baaa680eb5a71344e7fe501d5912bd10db682c1 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Mar 2025 21:41:47 +0100 Subject: [PATCH 3/3] Remove empty line. --- .../features/preferences/impl/developer/DeveloperSettingsView.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt index a5dccd3244..a632cd4ebc 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt @@ -27,7 +27,6 @@ import io.element.android.libraries.designsystem.components.preferences.Preferen import io.element.android.libraries.designsystem.components.preferences.PreferenceTextField import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight - import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator import io.element.android.libraries.designsystem.theme.components.ListItem import io.element.android.libraries.designsystem.theme.components.Text