diff --git a/app/src/main/java/de/jeanlucmakiola/calendula/ui/settings/SettingsScreen.kt b/app/src/main/java/de/jeanlucmakiola/calendula/ui/settings/SettingsScreen.kt index baca932..7a571a7 100644 --- a/app/src/main/java/de/jeanlucmakiola/calendula/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/de/jeanlucmakiola/calendula/ui/settings/SettingsScreen.kt @@ -24,7 +24,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize @@ -51,10 +50,8 @@ import androidx.compose.material.icons.filled.Palette import androidx.compose.material.icons.filled.Translate import androidx.compose.material.icons.filled.Tune import de.jeanlucmakiola.floret.locale.AppLanguage -import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Surface import androidx.compose.material3.Switch import androidx.compose.material3.Text @@ -72,6 +69,7 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.vectorResource import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign @@ -98,6 +96,8 @@ import de.jeanlucmakiola.floret.crash.submitCrashReport import de.jeanlucmakiola.floret.identity.expandEnter import de.jeanlucmakiola.calendula.ui.common.AgendaRangePicker import de.jeanlucmakiola.calendula.ui.common.agendaRangeLabel +import de.jeanlucmakiola.floret.components.AboutCard +import de.jeanlucmakiola.floret.components.AboutLink import de.jeanlucmakiola.floret.components.CollapsingScaffold import de.jeanlucmakiola.floret.components.GroupedRow import de.jeanlucmakiola.calendula.ui.common.IMPLEMENTED_VIEWS @@ -339,83 +339,30 @@ private fun LanguageRow(position: Position) { @Composable private fun AboutCard() { - val context = LocalContext.current - val sourceUrl = stringResource(R.string.about_source_url) - val licenseUrl = stringResource(R.string.about_license_url) - val supportUrl = stringResource(R.string.about_support_url) - - Surface( - color = MaterialTheme.colorScheme.surfaceContainerHigh, - shape = RoundedCornerShape(24.dp), - modifier = Modifier.fillMaxWidth(), - ) { - Column( - modifier = Modifier - .fillMaxWidth() - .padding(16.dp), - ) { - Row(verticalAlignment = Alignment.CenterVertically) { - AppLogo() - Spacer(Modifier.width(16.dp)) - Column(Modifier.weight(1f)) { - Text( - text = stringResource(R.string.app_name), - style = MaterialTheme.typography.titleLarge, - ) - Text( - text = stringResource(R.string.settings_about_author), - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant, - ) - } - } - Spacer(Modifier.height(12.dp)) - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.spacedBy(8.dp), - ) { - OutlinedButton( - onClick = { openUrl(context, sourceUrl) }, - contentPadding = PaddingValues(horizontal = 12.dp), - modifier = Modifier.weight(1f), - ) { - Icon( - painter = painterResource(R.drawable.ic_gitea), - contentDescription = null, - modifier = Modifier.size(18.dp), - ) - Spacer(Modifier.width(8.dp)) - Text(stringResource(R.string.settings_about_source)) - } - OutlinedButton( - onClick = { openUrl(context, licenseUrl) }, - contentPadding = PaddingValues(horizontal = 12.dp), - modifier = Modifier.weight(1f), - ) { - Icon( - Icons.Default.Gavel, - contentDescription = null, - modifier = Modifier.size(18.dp), - ) - Spacer(Modifier.width(8.dp)) - Text(stringResource(R.string.settings_license)) - } - } - Spacer(Modifier.height(8.dp)) - FilledTonalButton( - onClick = { openUrl(context, supportUrl) }, - modifier = Modifier.fillMaxWidth(), - ) { - Icon( - Icons.Default.Favorite, - contentDescription = null, - modifier = Modifier.size(18.dp), - ) - Spacer(Modifier.width(8.dp)) - Text(stringResource(R.string.settings_about_support)) - } - } - } + // The card layout lives in floret-kit (components.AboutCard); Calendula + // supplies its own logo, author and the source / licence / support links. + AboutCard( + logo = { AppLogo() }, + appName = stringResource(R.string.app_name), + author = stringResource(R.string.settings_about_author), + primaryLinks = listOf( + AboutLink( + icon = ImageVector.vectorResource(R.drawable.ic_gitea), + label = stringResource(R.string.settings_about_source), + url = stringResource(R.string.about_source_url), + ), + AboutLink( + icon = Icons.Default.Gavel, + label = stringResource(R.string.settings_license), + url = stringResource(R.string.about_license_url), + ), + ), + highlightLink = AboutLink( + icon = Icons.Default.Favorite, + label = stringResource(R.string.settings_about_support), + url = stringResource(R.string.about_support_url), + ), + ) } /** Plain centred version mark at the foot of the settings list (no card). */