Skip to content

Commit 13eb827

Browse files
authored
Merge pull request #4369 from element-hq/feature/bma/removePreferenceText
Remove PreferenceText, replace by ListItem.
2 parents 0ab1e56 + 93c554f commit 13eb827

File tree

17 files changed

+122
-298
lines changed

17 files changed

+122
-298
lines changed

features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsView.kt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,17 @@ import androidx.compose.runtime.Composable
1111
import androidx.compose.ui.Modifier
1212
import androidx.compose.ui.res.stringResource
1313
import androidx.compose.ui.tooling.preview.PreviewParameter
14-
import io.element.android.compound.theme.ElementTheme
1514
import io.element.android.features.lockscreen.impl.R
1615
import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog
1716
import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory
1817
import io.element.android.libraries.designsystem.components.preferences.PreferenceDivider
1918
import io.element.android.libraries.designsystem.components.preferences.PreferencePage
2019
import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch
21-
import io.element.android.libraries.designsystem.components.preferences.PreferenceText
2220
import io.element.android.libraries.designsystem.preview.ElementPreview
2321
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
22+
import io.element.android.libraries.designsystem.theme.components.ListItem
23+
import io.element.android.libraries.designsystem.theme.components.ListItemStyle
24+
import io.element.android.libraries.designsystem.theme.components.Text
2425

2526
@Composable
2627
fun LockScreenSettingsView(
@@ -35,15 +36,19 @@ fun LockScreenSettingsView(
3536
modifier = modifier
3637
) {
3738
PreferenceCategory(showTopDivider = false) {
38-
PreferenceText(
39-
title = stringResource(id = R.string.screen_app_lock_settings_change_pin),
40-
onClick = onChangePinClick
39+
ListItem(
40+
headlineContent = {
41+
Text(stringResource(id = R.string.screen_app_lock_settings_change_pin))
42+
},
43+
onClick = onChangePinClick,
4144
)
4245
PreferenceDivider()
4346
if (state.showRemovePinOption) {
44-
PreferenceText(
45-
title = stringResource(id = R.string.screen_app_lock_settings_remove_pin),
46-
tintColor = ElementTheme.colors.textCriticalPrimary,
47+
ListItem(
48+
headlineContent = {
49+
Text(stringResource(id = R.string.screen_app_lock_settings_remove_pin))
50+
},
51+
style = ListItemStyle.Destructive,
4752
onClick = {
4853
state.eventSink(LockScreenSettingsEvents.OnRemovePin)
4954
}

features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutView.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ import androidx.compose.ui.Modifier
1212
import androidx.compose.ui.res.stringResource
1313
import androidx.compose.ui.tooling.preview.PreviewParameter
1414
import io.element.android.libraries.designsystem.components.preferences.PreferencePage
15-
import io.element.android.libraries.designsystem.components.preferences.PreferenceText
1615
import io.element.android.libraries.designsystem.preview.ElementPreview
1716
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
17+
import io.element.android.libraries.designsystem.theme.components.ListItem
18+
import io.element.android.libraries.designsystem.theme.components.Text
1819
import io.element.android.libraries.ui.strings.CommonStrings
1920

2021
@Composable
@@ -31,13 +32,17 @@ fun AboutView(
3132
title = stringResource(id = CommonStrings.common_about)
3233
) {
3334
state.elementLegals.forEach { elementLegal ->
34-
PreferenceText(
35-
title = stringResource(id = elementLegal.titleRes),
35+
ListItem(
36+
headlineContent = {
37+
Text(stringResource(id = elementLegal.titleRes))
38+
},
3639
onClick = { onElementLegalClick(elementLegal) }
3740
)
3841
}
39-
PreferenceText(
40-
title = stringResource(id = CommonStrings.common_open_source_licenses),
42+
ListItem(
43+
headlineContent = {
44+
Text(stringResource(id = CommonStrings.common_open_source_licenses))
45+
},
4146
onClick = onOpenSourceLicensesClick,
4247
)
4348
}

features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,29 @@
77

88
package io.element.android.features.preferences.impl.developer
99

10+
import androidx.compose.foundation.layout.size
11+
import androidx.compose.foundation.progressSemantics
1012
import androidx.compose.foundation.text.KeyboardOptions
1113
import androidx.compose.runtime.Composable
1214
import androidx.compose.ui.Modifier
1315
import androidx.compose.ui.res.stringResource
1416
import androidx.compose.ui.text.input.KeyboardType
1517
import androidx.compose.ui.tooling.preview.PreviewParameter
18+
import androidx.compose.ui.unit.dp
1619
import io.element.android.features.preferences.impl.R
1720
import io.element.android.features.preferences.impl.developer.tracing.LogLevelItem
1821
import io.element.android.features.rageshake.api.preferences.RageshakePreferencesView
22+
import io.element.android.libraries.designsystem.components.list.ListItemContent
1923
import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory
2024
import io.element.android.libraries.designsystem.components.preferences.PreferenceDropdown
2125
import io.element.android.libraries.designsystem.components.preferences.PreferencePage
2226
import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch
23-
import io.element.android.libraries.designsystem.components.preferences.PreferenceText
2427
import io.element.android.libraries.designsystem.components.preferences.PreferenceTextField
2528
import io.element.android.libraries.designsystem.preview.ElementPreview
2629
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
30+
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
31+
import io.element.android.libraries.designsystem.theme.components.ListItem
32+
import io.element.android.libraries.designsystem.theme.components.Text
2733
import io.element.android.libraries.featureflag.ui.FeatureListView
2834
import io.element.android.libraries.featureflag.ui.model.FeatureUiModel
2935
import io.element.android.libraries.ui.strings.CommonStrings
@@ -57,31 +63,47 @@ fun DeveloperSettingsView(
5763
selectedOption = state.tracingLogLevel.dataOrNull(),
5864
options = LogLevelItem.entries.toPersistentList(),
5965
onSelectOption = { logLevel ->
60-
state.eventSink(DeveloperSettingsEvents.SetTracingLogLevel(logLevel))
66+
state.eventSink(DeveloperSettingsEvents.SetTracingLogLevel(logLevel))
6167
}
6268
)
6369
}
6470
PreferenceCategory(title = "Showkase") {
65-
PreferenceText(
66-
title = "Open Showkase browser",
71+
ListItem(
72+
headlineContent = {
73+
Text("Open Showkase browser")
74+
},
6775
onClick = onOpenShowkase
6876
)
6977
}
7078
RageshakePreferencesView(
7179
state = state.rageshakeState,
7280
)
7381
PreferenceCategory(title = "Crash", showTopDivider = false) {
74-
PreferenceText(
75-
title = "Crash the app 💥",
82+
ListItem(
83+
headlineContent = {
84+
Text("Crash the app 💥")
85+
},
7686
onClick = { error("This crash is a test.") }
7787
)
7888
}
7989
val cache = state.cacheSize
8090
PreferenceCategory(title = "Cache", showTopDivider = false) {
81-
PreferenceText(
82-
title = "Clear cache",
83-
currentValue = cache.dataOrNull(),
84-
loadingCurrentValue = state.cacheSize.isLoading() || state.clearCacheAction.isLoading(),
91+
ListItem(
92+
headlineContent = {
93+
Text("Clear cache")
94+
},
95+
trailingContent = if (state.cacheSize.isLoading() || state.clearCacheAction.isLoading()) {
96+
ListItemContent.Custom {
97+
CircularProgressIndicator(
98+
modifier = Modifier
99+
.progressSemantics()
100+
.size(20.dp),
101+
strokeWidth = 2.dp
102+
)
103+
}
104+
} else {
105+
ListItemContent.Text(cache.dataOrNull().orEmpty())
106+
},
85107
onClick = {
86108
if (state.clearCacheAction.isLoading().not()) {
87109
state.eventSink(DeveloperSettingsEvents.ClearCache)

features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ import io.element.android.libraries.designsystem.components.list.ListItemContent
3131
import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory
3232
import io.element.android.libraries.designsystem.components.preferences.PreferencePage
3333
import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch
34-
import io.element.android.libraries.designsystem.components.preferences.PreferenceText
3534
import io.element.android.libraries.designsystem.preview.ElementPreview
3635
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
3736
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
37+
import io.element.android.libraries.designsystem.theme.components.IconSource
3838
import io.element.android.libraries.designsystem.theme.components.ListItem
3939
import io.element.android.libraries.designsystem.theme.components.Text
4040
import io.element.android.libraries.designsystem.utils.OnLifecycleEvent
@@ -109,13 +109,19 @@ private fun NotificationSettingsContentView(
109109
val context = LocalContext.current
110110
val systemSettings: NotificationSettingsState.AppSettings = state.appSettings
111111
if (systemSettings.appNotificationsEnabled && !systemSettings.systemNotificationsEnabled) {
112-
PreferenceText(
113-
icon = CompoundIcons.NotificationsOffSolid(),
114-
title = stringResource(id = R.string.screen_notification_settings_system_notifications_turned_off),
115-
subtitle = stringResource(
116-
id = R.string.screen_notification_settings_system_notifications_action_required,
117-
stringResource(id = R.string.screen_notification_settings_system_notifications_action_required_content_link)
118-
),
112+
ListItem(
113+
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.NotificationsOffSolid())),
114+
headlineContent = {
115+
Text(stringResource(id = R.string.screen_notification_settings_system_notifications_turned_off))
116+
},
117+
supportingContent = {
118+
Text(
119+
stringResource(
120+
id = R.string.screen_notification_settings_system_notifications_action_required,
121+
stringResource(id = R.string.screen_notification_settings_system_notifications_action_required_content_link)
122+
)
123+
)
124+
},
119125
onClick = {
120126
context.startNotificationSettingsIntent()
121127
}
@@ -131,26 +137,37 @@ private fun NotificationSettingsContentView(
131137
if (systemSettings.appNotificationsEnabled) {
132138
if (!state.fullScreenIntentPermissionsState.permissionGranted) {
133139
PreferenceCategory {
134-
PreferenceText(
135-
icon = CompoundIcons.VoiceCallSolid(),
136-
title = stringResource(id = R.string.full_screen_intent_banner_title),
137-
subtitle = stringResource(R.string.full_screen_intent_banner_message),
140+
ListItem(
141+
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.VoiceCallSolid())),
142+
headlineContent = {
143+
Text(stringResource(id = R.string.full_screen_intent_banner_title))
144+
},
145+
supportingContent = {
146+
Text(stringResource(R.string.full_screen_intent_banner_message))
147+
},
138148
onClick = {
139149
state.fullScreenIntentPermissionsState.openFullScreenIntentSettings()
140150
}
141151
)
142152
}
143153
}
144154
PreferenceCategory(title = stringResource(id = R.string.screen_notification_settings_notification_section_title)) {
145-
PreferenceText(
146-
title = stringResource(id = R.string.screen_notification_settings_group_chats),
147-
subtitle = getTitleForRoomNotificationMode(mode = matrixSettings.defaultGroupNotificationMode),
155+
ListItem(
156+
headlineContent = {
157+
Text(stringResource(id = R.string.screen_notification_settings_group_chats))
158+
},
159+
supportingContent = {
160+
Text(getTitleForRoomNotificationMode(mode = matrixSettings.defaultGroupNotificationMode))
161+
},
148162
onClick = onGroupChatsClick
149163
)
150-
151-
PreferenceText(
152-
title = stringResource(id = R.string.screen_notification_settings_direct_chats),
153-
subtitle = getTitleForRoomNotificationMode(mode = matrixSettings.defaultOneToOneNotificationMode),
164+
ListItem(
165+
headlineContent = {
166+
Text(stringResource(id = R.string.screen_notification_settings_direct_chats))
167+
},
168+
supportingContent = {
169+
Text(getTitleForRoomNotificationMode(mode = matrixSettings.defaultOneToOneNotificationMode))
170+
},
154171
onClick = onDirectChatsClick
155172
)
156173
}
@@ -180,9 +197,10 @@ private fun NotificationSettingsContentView(
180197
)
181198
}
182199
PreferenceCategory(title = stringResource(id = R.string.troubleshoot_notifications_entry_point_section)) {
183-
PreferenceText(
184-
modifier = Modifier,
185-
title = stringResource(id = R.string.troubleshoot_notifications_entry_point_title),
200+
ListItem(
201+
headlineContent = {
202+
Text(stringResource(id = R.string.troubleshoot_notifications_entry_point_title))
203+
},
186204
onClick = onTroubleshootNotificationsClick
187205
)
188206
}

features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/preferences/RageshakePreferencesView.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ import io.element.android.features.rageshake.api.R
1616
import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory
1717
import io.element.android.libraries.designsystem.components.preferences.PreferenceSlide
1818
import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch
19-
import io.element.android.libraries.designsystem.components.preferences.PreferenceText
2019
import io.element.android.libraries.designsystem.preview.ElementPreview
2120
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
21+
import io.element.android.libraries.designsystem.theme.components.ListItem
22+
import io.element.android.libraries.designsystem.theme.components.Text
2223
import io.element.android.libraries.ui.strings.CommonStrings
2324

2425
@Composable
@@ -52,7 +53,11 @@ fun RageshakePreferencesView(
5253
onValueChange = ::onSensitivityChanged
5354
)
5455
} else {
55-
PreferenceText(title = "Rageshaking is not supported by your device")
56+
ListItem(
57+
headlineContent = {
58+
Text("Rageshaking is not supported by your device")
59+
},
60+
)
5661
}
5762
}
5863
}

features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportView.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,13 @@ import io.element.android.libraries.designsystem.components.preferences.Preferen
3838
import io.element.android.libraries.designsystem.components.preferences.PreferencePage
3939
import io.element.android.libraries.designsystem.components.preferences.PreferenceRow
4040
import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch
41-
import io.element.android.libraries.designsystem.components.preferences.PreferenceText
4241
import io.element.android.libraries.designsystem.modifiers.onTabOrEnterKeyFocusNext
4342
import io.element.android.libraries.designsystem.preview.ElementPreview
4443
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
4544
import io.element.android.libraries.designsystem.preview.debugPlaceholderBackground
4645
import io.element.android.libraries.designsystem.theme.components.Button
46+
import io.element.android.libraries.designsystem.theme.components.ListItem
47+
import io.element.android.libraries.designsystem.theme.components.Text
4748
import io.element.android.libraries.designsystem.theme.components.TextField
4849
import io.element.android.libraries.designsystem.theme.components.TextFieldValidity
4950
import io.element.android.libraries.ui.strings.CommonStrings
@@ -96,8 +97,10 @@ fun BugReportView(
9697
}
9798
Spacer(modifier = Modifier.height(16.dp))
9899
PreferenceDivider()
99-
PreferenceText(
100-
title = stringResource(id = R.string.screen_bug_report_view_logs),
100+
ListItem(
101+
headlineContent = {
102+
Text(stringResource(id = R.string.screen_bug_report_view_logs))
103+
},
101104
enabled = isFormEnabled,
102105
onClick = onViewLogs,
103106
)

features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ import io.element.android.libraries.designsystem.components.button.MainActionBut
5454
import io.element.android.libraries.designsystem.components.list.ListItemContent
5555
import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory
5656
import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch
57-
import io.element.android.libraries.designsystem.components.preferences.PreferenceText
5857
import io.element.android.libraries.designsystem.preview.ElementPreviewDark
5958
import io.element.android.libraries.designsystem.preview.ElementPreviewLight
6059
import io.element.android.libraries.designsystem.preview.PreviewWithLargeHeight
@@ -481,10 +480,14 @@ private fun TopicSection(
481480
showTopDivider = false,
482481
) {
483482
if (roomTopic is RoomTopicState.CanAddTopic) {
484-
PreferenceText(
485-
title = stringResource(R.string.screen_room_details_add_topic_title),
486-
icon = CompoundIcons.Plus(),
487-
onClick = { onActionClick(RoomDetailsAction.AddTopic) },
483+
ListItem(
484+
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Plus())),
485+
headlineContent = {
486+
Text(stringResource(id = R.string.screen_room_details_add_topic_title))
487+
},
488+
onClick = {
489+
onActionClick(RoomDetailsAction.AddTopic)
490+
},
488491
)
489492
} else if (roomTopic is RoomTopicState.ExistingTopic) {
490493
ClickableLinkText(

libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceCategory.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,6 @@ internal fun PreferenceCategoryPreview() = ElementThemedPreview {
4747
PreferenceCategory(
4848
title = "Category title",
4949
) {
50-
PreferenceText(
51-
title = "Title",
52-
icon = CompoundIcons.ChatProblem(),
53-
)
5450
PreferenceSwitch(
5551
title = "Switch",
5652
icon = CompoundIcons.Threads(),

libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferencePage.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,6 @@ internal fun PreferencePagePreview() = ElementPreview {
9797
PreferenceCategory(
9898
title = "Category title",
9999
) {
100-
PreferenceText(
101-
title = "Title",
102-
subtitle = "Some other text",
103-
icon = CompoundIcons.ChatProblem(),
104-
)
105100
PreferenceDivider()
106101
PreferenceSwitch(
107102
title = "Switch",

0 commit comments

Comments
 (0)