From c3f2dd1363437f4df01a048fd53d571f9c8767b5 Mon Sep 17 00:00:00 2001 From: "Andres Gomez, Thomas (ITDV RL)" Date: Thu, 25 Sep 2025 12:17:23 +0200 Subject: [PATCH] Change the Scaffold hierarchy --- .idea/misc.xml | 1158 +---------------- app/release/baselineProfiles/0/app-release.dm | Bin 4585 -> 4630 bytes app/release/baselineProfiles/1/app-release.dm | Bin 4537 -> 4596 bytes .../ui/page/calendar/CalendarChooserPage.kt | 5 + .../headache/ui/page/event/list/EventPage.kt | 5 + .../headache/ui/page/home/HomePage.kt | 170 ++- .../page/summary/monthly/MonthSummaryPage.kt | 86 +- .../ui/page/summary/report/ReportPage.kt | 129 +- .../ui/page/summary/yearly/YearSummaryPage.kt | 101 +- 9 files changed, 214 insertions(+), 1440 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 0a0c0e1..74dd639 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,1161 +1,5 @@ + - - - diff --git a/app/release/baselineProfiles/0/app-release.dm b/app/release/baselineProfiles/0/app-release.dm index 12141fa8edebe43e62c447f13ee20e87cb6899dd..cd442152defc28332e12bf6fb7e7d63c3c77735c 100644 GIT binary patch literal 4630 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 diff --git a/app/release/baselineProfiles/1/app-release.dm b/app/release/baselineProfiles/1/app-release.dm index 9c9005bdcc923430abd7fd7ced9e3e2c31206c64..b1b6d4b829a0acecfb206474b545bc0e47065413 100644 GIT binary patch literal 4596 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 literal 4537 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 0 - is ReportDestination -> 1 - is MonthSummaryDestination -> 2 - else -> -1 - } - } - } - val items = rememberBottomBarItems( + val bottomBarItems = rememberBottomBarItems( onYearlyFollowUp = { navigator.navigateToYearSummary() }, @@ -82,12 +80,41 @@ fun HomePage( navigator.navigateToMonthSummary() }, ) + val selectedItem = remember { + derivedStateOf { + when (navigator.backStack.last()) { + is YearSummaryDestination -> 0 + is ReportDestination -> 1 + is MonthSummaryDestination -> 2 + else -> -1 + } + } + } + val displayLegendAction = remember { + derivedStateOf { + when (navigator.backStack.lastOrNull()) { + is ReportDestination -> true + else -> false + } + } + } + val displayLegendPopup = remember { + mutableStateOf(false) + } HomePageContent( modifier = Modifier.fillMaxSize(), navigator = navigator, - items = items, + displayLegendAction = displayLegendAction, + displayLegendPopup = displayLegendPopup, + items = bottomBarItems, selectedItem = selectedItem, + onDisplayLegend = { + displayLegendPopup.value = true + }, + onDismissLegend = { + displayLegendPopup.value = false + }, onFabClick = { editViewModel.show() }, @@ -129,13 +156,50 @@ private fun rememberBottomBarItems( private fun HomePageContent( modifier: Modifier = Modifier, navigator: HomeNavigator, + displayLegendAction: State, + displayLegendPopup: State, items: List, selectedItem: State, + onDisplayLegend: () -> Unit, + onDismissLegend: () -> Unit, onFabClick: () -> Unit, ) { Scaffold( modifier = modifier, - contentWindowInsets = remember { WindowInsets(0, 0, 0, 0) }, + topBar = { + TopAppBar( + colors = TopAppBarDefaults.topAppBarColors( + containerColor = NavigationBarDefaults.containerColor, + ), + title = { + Text( + text = stringResource(R.string.app_name), + ) + }, + actions = { + AnimatedVisibility( + visible = displayLegendAction.value, + ) { + IconButton( + onClick = onDisplayLegend, + ) { + Icon( + imageVector = Icons.Default.Info, + contentDescription = null, + ) + } + DropdownMenu( + expanded = displayLegendPopup.value, + onDismissRequest = onDismissLegend, + ) { + LegendPopupContent( + modifier = Modifier.padding(horizontal = 12.dp, vertical = 4.dp) + ) + } + } + } + ) + }, bottomBar = { NavigationBar { items.forEachIndexed { index, item -> @@ -183,40 +247,44 @@ private fun HomePageContent( ) } -@Stable -data object NavigationItemDefault { - @Stable - val minHeight: Dp = 56.dp - - @Stable - val padding = PaddingValues(horizontal = 16.dp) -} - @Composable -private fun NavigationItem( +private fun LegendPopupContent( modifier: Modifier = Modifier, - padding: PaddingValues = NavigationItemDefault.padding, - minHeight: Dp = NavigationItemDefault.minHeight, - label: String, - onClick: () -> Unit, ) { - Row( - modifier = Modifier - .clickable(onClick = onClick) - .fillMaxWidth() - .heightIn(min = minHeight) - .padding(paddingValues = padding) - .then(other = modifier), - verticalAlignment = Alignment.CenterVertically, + Column( + modifier = modifier, ) { - Text( - modifier = Modifier.weight(1f), - style = MaterialTheme.typography.bodyMedium, - text = label, - ) - Icon( - imageVector = Icons.AutoMirrored.Filled.KeyboardArrowRight, - contentDescription = null, - ) + Row( + horizontalArrangement = Arrangement.spacedBy(space = 4.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Box( + modifier = Modifier + .size(8.dp) + .background( + color = HeadacheColorPalette.Calendar.Headache, + ) + ) + Text( + style = MaterialTheme.typography.labelSmall, + text = "Jours de migraine", + ) + } + Row( + horizontalArrangement = Arrangement.spacedBy(space = 4.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Box( + modifier = Modifier + .size(8.dp) + .background( + color = HeadacheColorPalette.Calendar.Pill, + ) + ) + Text( + style = MaterialTheme.typography.labelSmall, + text = "Prise de cachet", + ) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/MonthSummaryPage.kt b/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/MonthSummaryPage.kt index 3c66f27..71bf1de 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/MonthSummaryPage.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/MonthSummaryPage.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.gestures.snapping.SnapPosition import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn @@ -14,11 +13,7 @@ import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.NavigationBarDefaults -import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBar -import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.runtime.State @@ -26,7 +21,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.keepScreenOn -import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameterProvider @@ -34,7 +28,6 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.pixelized.headache.R import com.pixelized.headache.ui.navigation.destination.navigateToEventPage import com.pixelized.headache.ui.navigation.main.LocalMainNavigator import com.pixelized.headache.ui.page.summary.monthly.item.MonthSummaryItem @@ -89,50 +82,32 @@ private fun MonthSummaryContent( events: State>>, onItem: (MonthSummaryItemUio) -> Unit, ) { - Scaffold( + LazyColumn( modifier = modifier, - contentWindowInsets = remember { WindowInsets(0, 0, 0, 0) }, - topBar = { - TopAppBar( - colors = TopAppBarDefaults.topAppBarColors( - containerColor = NavigationBarDefaults.containerColor, - ), - title = { - Text(text = stringResource(R.string.month_summary_title)) - }, - ) - }, - content = { paddingValues -> - LazyColumn( - modifier = Modifier - .fillMaxSize() - .padding(paddingValues = paddingValues), - state = state, - flingBehavior = flingBehavior, - contentPadding = listPadding, - verticalArrangement = Arrangement.spacedBy(space = spacing), - reverseLayout = false, - ) { - events.value.forEach { entry -> - item { - MonthSummaryTitle( - modifier = Modifier.padding(top = 16.dp), - item = entry.key, - ) - } - items( - items = entry.value, - key = { item -> item.date }, - ) { item -> - MonthSummaryItem( - item = item, - onItem = onItem, - ) - } - } + state = state, + flingBehavior = flingBehavior, + contentPadding = listPadding, + verticalArrangement = Arrangement.spacedBy(space = spacing), + reverseLayout = false, + ) { + events.value.forEach { entry -> + item { + MonthSummaryTitle( + modifier = Modifier.padding(top = 16.dp), + item = entry.key, + ) + } + items( + items = entry.value, + key = { item -> item.date }, + ) { item -> + MonthSummaryItem( + item = item, + onItem = onItem, + ) } } - ) + } } @Composable @@ -141,11 +116,14 @@ private fun MonthSummaryPreview( @PreviewParameter(MonthSummaryPreviewProvider::class) preview: Map>, ) { HeadacheTheme { - val events = remember { mutableStateOf(preview) } - MonthSummaryContent( - events = events, - onItem = { }, - ) + Surface { + val events = remember { mutableStateOf(preview) } + MonthSummaryContent( + modifier = Modifier.fillMaxSize(), + events = events, + onItem = { }, + ) + } } } diff --git a/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportPage.kt b/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportPage.kt index 996d51b..a62513a 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportPage.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportPage.kt @@ -2,47 +2,27 @@ package com.pixelized.headache.ui.page.summary.report import android.icu.util.Calendar -import androidx.compose.foundation.background import androidx.compose.foundation.gestures.FlingBehavior import androidx.compose.foundation.gestures.snapping.SnapPosition import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior 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.WindowInsets import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Info -import androidx.compose.material3.DropdownMenu import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.NavigationBarDefaults -import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface -import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBar -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.keepScreenOn import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalWindowInfo -import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameterProvider @@ -51,11 +31,9 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.pixelized.headache.R import com.pixelized.headache.ui.navigation.destination.navigateToEventPage import com.pixelized.headache.ui.navigation.main.LocalMainNavigator import com.pixelized.headache.ui.theme.HeadacheTheme -import com.pixelized.headache.ui.theme.color.HeadacheColorPalette import com.pixelized.headache.utils.extention.calculate @Stable @@ -108,102 +86,21 @@ private fun ReportContent( events: State>, onMonth: (ReportBoxUio.Month) -> Unit, ) { - Scaffold( - modifier = modifier, - contentWindowInsets = remember { WindowInsets(0, 0, 0, 0) }, - topBar = { - TopAppBar( - colors = TopAppBarDefaults.topAppBarColors( - containerColor = NavigationBarDefaults.containerColor, - ), - title = { - Text( - text = stringResource(R.string.year_summary_title), - ) - }, - actions = { - Box { - val expanded = remember { mutableStateOf(false) } - IconButton( - onClick = { expanded.value = true }, - ) { - Icon( - imageVector = Icons.Default.Info, - contentDescription = null, - ) - } - DropdownMenu( - expanded = expanded.value, - onDismissRequest = { expanded.value = false } - ) { - Legend( - modifier = Modifier.padding(horizontal = 12.dp, vertical = 4.dp) - ) - } - } - } - ) - }, - content = { it -> - LazyColumn( - modifier = Modifier.padding(paddingValues = it), - state = state, - flingBehavior = flingBehavior, - contentPadding = paddingValues, - verticalArrangement = Arrangement.spacedBy(space = contentSpace), - ) { - items( - items = events.value - ) { item -> - ReportBox( - barSize = barSize, - barSpace = barSpace, - item = item, - onMonth = onMonth, - ) - } - } - } - ) -} - -@Composable -private fun Legend( - modifier: Modifier = Modifier, -) { - Column( + LazyColumn( modifier = modifier, + state = state, + flingBehavior = flingBehavior, + contentPadding = paddingValues, + verticalArrangement = Arrangement.spacedBy(space = contentSpace), ) { - Row( - horizontalArrangement = Arrangement.spacedBy(space = 4.dp), - verticalAlignment = Alignment.CenterVertically, - ) { - Box( - modifier = Modifier - .size(8.dp) - .background( - color = HeadacheColorPalette.Calendar.Headache, - ) - ) - Text( - style = MaterialTheme.typography.labelSmall, - text = "Jours de migraine", - ) - } - Row( - horizontalArrangement = Arrangement.spacedBy(space = 4.dp), - verticalAlignment = Alignment.CenterVertically, - ) { - Box( - modifier = Modifier - .size(8.dp) - .background( - color = HeadacheColorPalette.Calendar.Pill, - ) - ) - Text( - style = MaterialTheme.typography.labelSmall, - text = "Prise de cachet", + items( + items = events.value + ) { item -> + ReportBox( + barSize = barSize, + barSpace = barSpace, + item = item, + onMonth = onMonth, ) } } diff --git a/app/src/main/java/com/pixelized/headache/ui/page/summary/yearly/YearSummaryPage.kt b/app/src/main/java/com/pixelized/headache/ui/page/summary/yearly/YearSummaryPage.kt index 121f1ec..9803c61 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/summary/yearly/YearSummaryPage.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/summary/yearly/YearSummaryPage.kt @@ -5,7 +5,6 @@ import androidx.compose.foundation.gestures.snapping.SnapPosition import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.grid.GridCells @@ -16,12 +15,8 @@ import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.grid.rememberLazyGridState import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.NavigationBarDefaults -import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBar -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.runtime.State @@ -31,7 +26,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.keepScreenOn import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalWindowInfo -import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameterProvider @@ -39,7 +33,6 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.pixelized.headache.R import com.pixelized.headache.ui.navigation.destination.navigateToEventPage import com.pixelized.headache.ui.navigation.main.LocalMainNavigator import com.pixelized.headache.ui.theme.HeadacheTheme @@ -103,65 +96,49 @@ fun YearSummaryContent( uio: State>, onMonth: (YearSummaryMonthUio) -> Unit, ) { - Scaffold( + val typography = MaterialTheme.typography + val colorScheme = MaterialTheme.headache.colorScheme + val defaultTextStyle = remember(typography, colorScheme) { + typography.labelSmall.copy(color = colorScheme.base.onSurface) + } + val headacheTextStyle = remember(typography, colorScheme) { + defaultTextStyle.copy(color = colorScheme.calendar.onHeadache) + } + LazyVerticalGrid( modifier = modifier, - contentWindowInsets = remember { WindowInsets(0, 0, 0, 0) }, - topBar = { - TopAppBar( - colors = TopAppBarDefaults.topAppBarColors( - containerColor = NavigationBarDefaults.containerColor, - ), - title = { - Text(text = stringResource(R.string.year_summary_title)) - }, - ) - }, - content = { it -> - val typography = MaterialTheme.typography - val colorScheme = MaterialTheme.headache.colorScheme - val defaultTextStyle = remember(typography, colorScheme) { - typography.labelSmall.copy(color = colorScheme.base.onSurface) - } - val headacheTextStyle = remember(typography, colorScheme) { - defaultTextStyle.copy(color = colorScheme.calendar.onHeadache) - } - LazyVerticalGrid( - modifier = Modifier.padding(paddingValues = it), - state = state, - flingBehavior = flingBehavior, - columns = GridCells.Adaptive(minSize = daySize * 7), - horizontalArrangement = Arrangement.spacedBy(space = space), - verticalArrangement = Arrangement.spacedBy(space = space), - contentPadding = paddingValues, + state = state, + flingBehavior = flingBehavior, + columns = GridCells.Adaptive(minSize = daySize * 7), + horizontalArrangement = Arrangement.spacedBy(space = space), + verticalArrangement = Arrangement.spacedBy(space = space), + contentPadding = paddingValues, + ) { + uio.value.forEachIndexed { index, (year, months) -> + item( + span = { GridItemSpan(maxLineSpan) }, + contentType = { "Title" }, ) { - uio.value.forEachIndexed { index, (year, months) -> - item( - span = { GridItemSpan(maxLineSpan) }, - contentType = { "Title" }, - ) { - Text( - modifier = Modifier.padding(top = 16.dp), - style = MaterialTheme.typography.displaySmall, - text = "$year", - ) - } - items( - items = months, - key = { it.date.time }, - contentType = { "Month" }, - ) { - YearSummaryMonth( - uio = it, - defaultTextStyle = defaultTextStyle, - headacheTextStyle = headacheTextStyle, - daySize = daySize, - onMonth = onMonth, - ) - } - } + Text( + modifier = Modifier.padding(top = 16.dp), + style = MaterialTheme.typography.displaySmall, + text = "$year", + ) + } + items( + items = months, + key = { it.date.time }, + contentType = { "Month" }, + ) { + YearSummaryMonth( + uio = it, + defaultTextStyle = defaultTextStyle, + headacheTextStyle = headacheTextStyle, + daySize = daySize, + onMonth = onMonth, + ) } } - ) + } } @Composable