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

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

Merge pull request #8139 from wmontwe/add-drawer-folder-list-part3

Add drawer folder list - part 3
parents c05533a2 8afe58c6
Loading
Loading
Loading
Loading
+25 −2
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ package app.k9mail.ui.catalog.ui.atom.items
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.grid.LazyGridScope
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
@@ -24,6 +25,28 @@ fun LazyGridScope.iconItems() {
    sectionHeaderItem(
        text = "Compose Icons",
    )
    sectionSubtitleItem(text = "Sizes")
    defaultItem {
        IconItem(
            name = "Small",
            imageVector = Icons.Outlined.Info,
            modifier = Modifier.size(MainTheme.sizes.iconSmall),
        )
    }
    defaultItem {
        IconItem(
            name = "Default",
            imageVector = Icons.Outlined.Info,
            modifier = Modifier.size(MainTheme.sizes.icon),
        )
    }
    defaultItem {
        IconItem(
            name = "Large",
            imageVector = Icons.Outlined.Info,
            modifier = Modifier.size(MainTheme.sizes.iconLarge),
        )
    }
    sectionSubtitleItem(text = "Filled")
    getIconsFor(Icons.Filled)
    sectionSubtitleItem(text = "Outlined")
@@ -81,13 +104,13 @@ private fun IconItem(
) {
    Column(
        modifier = Modifier
            .padding(defaultItemPadding())
            .then(modifier),
            .padding(defaultItemPadding()),
        horizontalAlignment = Alignment.CenterHorizontally,
        verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.default),
    ) {
        Icon(
            imageVector = imageVector,
            modifier = modifier,
        )
        TextBodySmall(text = name)
    }
+13 −1
Original line number Diff line number Diff line
@@ -3,13 +3,25 @@ package app.k9mail.core.ui.compose.designsystem.organism.drawer
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import app.k9mail.core.ui.compose.designsystem.PreviewWithThemes
import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons

@Composable
@Preview(showBackground = true)
internal fun NavigationDrawerItemBadgePreview() {
    PreviewWithThemes {
        NavigationDrawerItemBadge(
            label = "100+",
            label = "99+",
        )
    }
}

@Composable
@Preview(showBackground = true)
internal fun NavigationDrawerItemBadgeWithIconPreview() {
    PreviewWithThemes {
        NavigationDrawerItemBadge(
            label = "99+",
            imageVector = Icons.Outlined.Info,
        )
    }
}
+35 −2
Original line number Diff line number Diff line
package app.k9mail.core.ui.compose.designsystem.atom.icon

import androidx.compose.material.icons.automirrored.outlined.ArrowBack
import androidx.compose.material.icons.automirrored.outlined.Send
import androidx.compose.material.icons.filled.Cancel
import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material.icons.filled.Outbox
import androidx.compose.material.icons.filled.Star
import androidx.compose.material.icons.filled.VisibilityOff
import androidx.compose.material.icons.outlined.AccountCircle
import androidx.compose.material.icons.outlined.Archive
import androidx.compose.material.icons.outlined.Check
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material.icons.outlined.Drafts
import androidx.compose.material.icons.outlined.ErrorOutline
import androidx.compose.material.icons.outlined.ExpandLess
import androidx.compose.material.icons.outlined.ExpandMore
import androidx.compose.material.icons.outlined.Folder
import androidx.compose.material.icons.outlined.Inbox
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material.icons.outlined.Menu
import androidx.compose.material.icons.outlined.Report
import androidx.compose.material.icons.outlined.Security
import androidx.compose.material.icons.outlined.Send
import androidx.compose.material.icons.outlined.Visibility
import androidx.compose.ui.graphics.vector.ImageVector
import app.k9mail.core.ui.compose.designsystem.atom.icon.filled.Dot
import androidx.compose.material.icons.Icons as MaterialIcons

// We're using getters so not all icons are loaded into memory as soon as one of the nested objects is accessed.
object Icons {
    object Filled {
        val Cancel: ImageVector
            get() = MaterialIcons.Filled.Cancel

        val CheckCircle: ImageVector
            get() = MaterialIcons.Filled.CheckCircle

        val Cancel: ImageVector
            get() = MaterialIcons.Filled.Cancel
        val Dot: ImageVector
            get() = MaterialIcons.Filled.Dot

        val Star: ImageVector
            get() = MaterialIcons.Filled.Star
    }

    object Outlined {
        val AccountCircle: ImageVector
            get() = MaterialIcons.Outlined.AccountCircle

        val Archive: ImageVector
            get() = MaterialIcons.Outlined.Archive

        val ArrowBack: ImageVector
            get() = MaterialIcons.AutoMirrored.Outlined.ArrowBack

        val Check: ImageVector
            get() = MaterialIcons.Outlined.Check

        val Delete: ImageVector
            get() = MaterialIcons.Outlined.Delete

        val Drafts: ImageVector
            get() = MaterialIcons.Outlined.Drafts

        val ErrorOutline: ImageVector
            get() = MaterialIcons.Outlined.ErrorOutline

@@ -47,6 +71,9 @@ object Icons {
        val ExpandLess: ImageVector
            get() = MaterialIcons.Outlined.ExpandLess

        val Folder: ImageVector
            get() = MaterialIcons.Outlined.Folder

        val Inbox: ImageVector
            get() = MaterialIcons.Outlined.Inbox

@@ -62,6 +89,12 @@ object Icons {
        val Security: ImageVector
            get() = MaterialIcons.Outlined.Security

        val Send: ImageVector
            get() = MaterialIcons.AutoMirrored.Outlined.Send

        val Report: ImageVector
            get() = MaterialIcons.Outlined.Report

        val Visibility: ImageVector
            get() = MaterialIcons.Outlined.Visibility

+27 −0
Original line number Diff line number Diff line
package app.k9mail.core.ui.compose.designsystem.atom.icon.filled

import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.materialIcon
import androidx.compose.material.icons.materialPath
import androidx.compose.ui.graphics.vector.ImageVector

@Suppress("MagicNumber")
val Icons.Filled.Dot: ImageVector
    get() {
        if (instance != null) {
            return instance!!
        }
        instance = materialIcon(name = "Filled.Dot") {
            materialPath {
                moveTo(12.0f, 6.0f)
                curveToRelative(-3.31f, 0.0f, -6.0f, 2.69f, -6.0f, 6.0f)
                reflectiveCurveToRelative(2.69f, 6.0f, 6.0f, 6.0f)
                reflectiveCurveToRelative(6.0f, -2.69f, 6.0f, -6.0f)
                reflectiveCurveToRelative(-2.69f, -6.0f, -6.0f, -6.0f)
                close()
            }
        }
        return instance!!
    }

private var instance: ImageVector? = null
+29 −3
Original line number Diff line number Diff line
package app.k9mail.core.ui.compose.designsystem.organism.drawer

import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import app.k9mail.core.ui.compose.designsystem.atom.icon.Icon
import app.k9mail.core.ui.compose.designsystem.atom.text.TextLabelLarge
import app.k9mail.core.ui.compose.theme2.MainTheme

/**
 * A badge for a navigation drawer item with an optional icon.
 *
 * @param label The label to display.
 * @param modifier The modifier to apply.
 * @param imageVector The image vector to display (optional).
 */
@Composable
fun NavigationDrawerItemBadge(
    label: String,
    modifier: Modifier = Modifier,
    imageVector: ImageVector? = null,
) {
    Row(
        modifier = modifier,
        verticalAlignment = Alignment.CenterVertically,
    ) {
        if (imageVector != null) {
            Icon(
                imageVector = imageVector,
                modifier = Modifier.size(MainTheme.sizes.iconSmall)
                    .padding(end = MainTheme.spacings.quarter),
            )
        }
        TextLabelLarge(
            text = label,
        modifier = modifier,
        )
    }
}
Loading