Loading core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/api/Preference.kt +8 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package net.thunderbird.core.ui.compose.preference.api import android.os.Parcelable import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import kotlinx.collections.immutable.ImmutableList import kotlinx.parcelize.IgnoredOnParcel Loading Loading @@ -89,4 +90,11 @@ sealed interface PreferenceDisplay : Preference { override val id: String, val customUi: @Composable (Modifier) -> Unit, ) : PreferenceDisplay @Parcelize data class SectionHeader( override val id: String, val title: () -> String, val color: () -> Color = { Color.Unspecified }, ) : PreferenceDisplay } core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItem.kt +7 −0 Original line number Diff line number Diff line Loading @@ -54,5 +54,12 @@ internal fun PreferenceItem( modifier = modifier, ) } is PreferenceDisplay.SectionHeader -> { PreferenceItemSectionHeaderView( preference = preference, modifier = modifier, ) } } } core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemSectionHeaderView.kt 0 → 100644 +22 −0 Original line number Diff line number Diff line package net.thunderbird.core.ui.compose.preference.ui.components.list import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleMedium import app.k9mail.core.ui.compose.theme2.MainTheme import net.thunderbird.core.ui.compose.preference.api.PreferenceDisplay @Composable internal fun PreferenceItemSectionHeaderView( preference: PreferenceDisplay.SectionHeader, modifier: Modifier = Modifier, ) { Column(modifier = modifier.padding(MainTheme.spacings.double)) { TextTitleMedium( text = preference.title(), color = preference.color(), ) } } feature/account/settings/impl/src/debug/kotlin/net/thunderbird/feature/account/settings/impl/ui/fake/FakePreferenceData.kt +12 −2 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package net.thunderbird.feature.account.settings.impl.ui.fake import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import app.k9mail.core.ui.compose.designsystem.atom.card.CardElevated import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyLarge Loading Loading @@ -38,21 +39,30 @@ object FakePreferenceData { id = "custom", customUi = { modifier -> CardElevated( modifier = modifier.fillMaxWidth() modifier = modifier .fillMaxWidth() .padding(MainTheme.spacings.double), ) { TextBodyLarge( text = "Custom UI", modifier = Modifier.padding(MainTheme.spacings.default) modifier = Modifier .padding(MainTheme.spacings.default) .fillMaxWidth(), ) } }, ) val sectionHeader = PreferenceDisplay.SectionHeader( id = "section_header", title = { "Section Title" }, color = { Color.Black }, ) val preferences = persistentListOf( textPreference, colorPreference, customPreference, sectionHeader, ) } Loading
core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/api/Preference.kt +8 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package net.thunderbird.core.ui.compose.preference.api import android.os.Parcelable import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import kotlinx.collections.immutable.ImmutableList import kotlinx.parcelize.IgnoredOnParcel Loading Loading @@ -89,4 +90,11 @@ sealed interface PreferenceDisplay : Preference { override val id: String, val customUi: @Composable (Modifier) -> Unit, ) : PreferenceDisplay @Parcelize data class SectionHeader( override val id: String, val title: () -> String, val color: () -> Color = { Color.Unspecified }, ) : PreferenceDisplay }
core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItem.kt +7 −0 Original line number Diff line number Diff line Loading @@ -54,5 +54,12 @@ internal fun PreferenceItem( modifier = modifier, ) } is PreferenceDisplay.SectionHeader -> { PreferenceItemSectionHeaderView( preference = preference, modifier = modifier, ) } } }
core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemSectionHeaderView.kt 0 → 100644 +22 −0 Original line number Diff line number Diff line package net.thunderbird.core.ui.compose.preference.ui.components.list import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleMedium import app.k9mail.core.ui.compose.theme2.MainTheme import net.thunderbird.core.ui.compose.preference.api.PreferenceDisplay @Composable internal fun PreferenceItemSectionHeaderView( preference: PreferenceDisplay.SectionHeader, modifier: Modifier = Modifier, ) { Column(modifier = modifier.padding(MainTheme.spacings.double)) { TextTitleMedium( text = preference.title(), color = preference.color(), ) } }
feature/account/settings/impl/src/debug/kotlin/net/thunderbird/feature/account/settings/impl/ui/fake/FakePreferenceData.kt +12 −2 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package net.thunderbird.feature.account.settings.impl.ui.fake import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import app.k9mail.core.ui.compose.designsystem.atom.card.CardElevated import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyLarge Loading Loading @@ -38,21 +39,30 @@ object FakePreferenceData { id = "custom", customUi = { modifier -> CardElevated( modifier = modifier.fillMaxWidth() modifier = modifier .fillMaxWidth() .padding(MainTheme.spacings.double), ) { TextBodyLarge( text = "Custom UI", modifier = Modifier.padding(MainTheme.spacings.default) modifier = Modifier .padding(MainTheme.spacings.default) .fillMaxWidth(), ) } }, ) val sectionHeader = PreferenceDisplay.SectionHeader( id = "section_header", title = { "Section Title" }, color = { Color.Black }, ) val preferences = persistentListOf( textPreference, colorPreference, customPreference, sectionHeader, ) }