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

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

Merge pull request #8128 from wmontwe/add-drawer-folder-list-part1

Add drawer folder list - Part 1
parents 80c2a363 94b26ad7
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
package app.k9mail.ui.catalog.ui

interface CatalogPage {
    val displayName: String
    val isFullScreen: Boolean
}
+13 −11
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ fun CatalogAtomContent(
        pages = pages,
        initialPage = initialPage,
        modifier = modifier,
    ) {
        onRenderPage = {
            when (it) {
                TYPOGRAPHY -> typographyItems()
                COLOR -> colorItems()
@@ -39,5 +39,7 @@ fun CatalogAtomContent(
                ICON -> iconItems()
                IMAGE -> imageItems()
            }
    }
        },
        onRenderFullScreenPage = {},
    )
}
+4 −2
Original line number Diff line number Diff line
package app.k9mail.ui.catalog.ui.atom

import app.k9mail.ui.catalog.ui.CatalogPage
import kotlinx.collections.immutable.toImmutableList

enum class CatalogAtomPage(
    private val displayName: String,
) {
    override val displayName: String,
    override val isFullScreen: Boolean = false,
) : CatalogPage {
    TYPOGRAPHY("Typography"),
    COLOR("Colors"),
    BUTTON("Buttons"),
+18 −14
Original line number Diff line number Diff line
package app.k9mail.ui.catalog.ui.common

import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
@@ -20,16 +19,17 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import app.k9mail.core.ui.compose.designsystem.template.ResponsiveContentWithSurface
import app.k9mail.core.ui.compose.theme2.MainTheme
import app.k9mail.ui.catalog.ui.CatalogPage
import app.k9mail.ui.catalog.ui.common.list.fullSpanItem
import kotlinx.collections.immutable.ImmutableList
import kotlinx.coroutines.launch

@OptIn(ExperimentalFoundationApi::class)
@Composable
fun <T> PagedContent(
fun <T : CatalogPage> PagedContent(
    pages: ImmutableList<T>,
    initialPage: T,
    modifier: Modifier = Modifier,
    onRenderFullScreenPage: @Composable (T) -> Unit = {},
    onRenderPage: LazyGridScope.(T) -> Unit,
) {
    val pagerState = rememberPagerState(
@@ -63,7 +63,10 @@ fun <T> PagedContent(
                state = pagerState,
                modifier = Modifier
                    .fillMaxSize(),
            ) { page ->
            ) { pageIndex ->
                if (pages[pageIndex].isFullScreen) {
                    onRenderFullScreenPage(pages[pageIndex])
                } else {
                    LazyVerticalGrid(
                        columns = GridCells.Adaptive(MainTheme.sizes.larger),
                        modifier = Modifier
@@ -72,10 +75,11 @@ fun <T> PagedContent(
                        horizontalArrangement = Arrangement.spacedBy(MainTheme.spacings.double),
                        verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.double),
                    ) {
                    onRenderPage(pages[page])
                        onRenderPage(pages[pageIndex])
                        fullSpanItem { Spacer(modifier = Modifier.height(MainTheme.sizes.smaller)) }
                    }
                }
            }
        }
    }
}
+16 −6
Original line number Diff line number Diff line
@@ -4,7 +4,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import app.k9mail.ui.catalog.ui.common.PagedContent
import app.k9mail.ui.catalog.ui.molecule.CatalogMoleculePage.INPUT
import app.k9mail.ui.catalog.ui.molecule.CatalogMoleculePage.PULL_TO_REFRESH
import app.k9mail.ui.catalog.ui.molecule.CatalogMoleculePage.STATE
import app.k9mail.ui.catalog.ui.molecule.items.PullToRefresh
import app.k9mail.ui.catalog.ui.molecule.items.inputItems
import app.k9mail.ui.catalog.ui.molecule.items.stateItems
import kotlinx.collections.immutable.ImmutableList
@@ -19,10 +21,18 @@ fun CatalogMoleculeContent(
        pages = pages,
        initialPage = initialPage,
        modifier = modifier,
    ) {
        onRenderPage = {
            when (it) {
                INPUT -> inputItems()
                STATE -> stateItems()
                else -> throw IllegalArgumentException("Unknown page: $it")
            }
        },
        onRenderFullScreenPage = { page ->
            when (page) {
                PULL_TO_REFRESH -> PullToRefresh()
                else -> throw IllegalArgumentException("Unknown page: $page")
            }
        },
    )
}
Loading