Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 9b1d1a17 authored by Wolf-Martell Montwé's avatar Wolf-Martell Montwé Committed by GitHub
Browse files

Merge pull request #9208 from shamim-emon/fix-issue-9197

Feat: add support for section header for preference system
parents 9e3d6c49 bf218e0c
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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
@@ -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
}
+7 −0
Original line number Diff line number Diff line
@@ -54,5 +54,12 @@ internal fun PreferenceItem(
                modifier = modifier,
            )
        }

        is PreferenceDisplay.SectionHeader -> {
            PreferenceItemSectionHeaderView(
                preference = preference,
                modifier = modifier,
            )
        }
    }
}
+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(),
        )
    }
}
+12 −2
Original line number Diff line number Diff line
@@ -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
@@ -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,
    )
}