Improve rendering of preference anaytics screen.

This commit is contained in:
Benoit Marty 2023-06-30 18:34:19 +02:00
parent dbc93398cf
commit be92588c28
2 changed files with 19 additions and 18 deletions

View file

@ -18,6 +18,7 @@ package io.element.android.features.analytics.api.preferences
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -27,7 +28,6 @@ import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import io.element.android.features.analytics.api.AnalyticsOptInEvents import io.element.android.features.analytics.api.AnalyticsOptInEvents
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.PreferenceSwitch
import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementPreviewLight
@ -43,23 +43,21 @@ fun AnalyticsPreferencesView(
state.eventSink(AnalyticsOptInEvents.EnableAnalytics(isEnabled = isEnabled)) state.eventSink(AnalyticsOptInEvents.EnableAnalytics(isEnabled = isEnabled))
} }
PreferenceCategory( val firstPart = stringResource(id = CommonStrings.screen_analytics_settings_help_us_improve, state.applicationName)
modifier = modifier, val secondPart = buildAnnotatedStringWithColoredPart(
title = stringResource(id = CommonStrings.screen_analytics_settings_share_data) CommonStrings.screen_analytics_settings_read_terms,
) { CommonStrings.screen_analytics_settings_read_terms_content_link
val firstPart = stringResource(id = CommonStrings.screen_analytics_settings_help_us_improve, state.applicationName) )
val secondPart = buildAnnotatedStringWithColoredPart( val subtitle = "$firstPart\n\n$secondPart"
CommonStrings.screen_analytics_settings_read_terms,
CommonStrings.screen_analytics_settings_read_terms_content_link
)
val title = "$firstPart\n\n$secondPart"
PreferenceSwitch( PreferenceSwitch(
title = title, modifier = modifier,
isChecked = state.isEnabled, title = stringResource(id = CommonStrings.screen_analytics_settings_share_data),
onCheckedChange = ::onEnabledChanged subtitle = subtitle,
) isChecked = state.isEnabled,
} onCheckedChange = ::onEnabledChanged,
switchAlignment = Alignment.Top,
)
} }
@Composable @Composable

View file

@ -24,6 +24,7 @@ import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Announcement import androidx.compose.material.icons.filled.Announcement
import androidx.compose.material3.Switch import androidx.compose.material3.Switch
@ -51,6 +52,7 @@ fun PreferenceSwitch(
icon: ImageVector? = null, icon: ImageVector? = null,
showIconAreaIfNoIcon: Boolean = false, showIconAreaIfNoIcon: Boolean = false,
onCheckedChange: (Boolean) -> Unit = {}, onCheckedChange: (Boolean) -> Unit = {},
switchAlignment: Alignment.Vertical = Alignment.CenterVertically
) { ) {
Row( Row(
modifier = modifier modifier = modifier
@ -84,10 +86,11 @@ fun PreferenceSwitch(
) )
} }
} }
Spacer(modifier = Modifier.width(16.dp))
// TODO Create a wrapper for Switch // TODO Create a wrapper for Switch
Switch( Switch(
modifier = Modifier modifier = Modifier
.align(Alignment.CenterVertically), .align(switchAlignment),
checked = isChecked, checked = isChecked,
enabled = enabled, enabled = enabled,
onCheckedChange = onCheckedChange onCheckedChange = onCheckedChange