From d91dda301345d0f52a26354861beeaac33cfa48c 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 | 8 +- .../headache/ui/page/home/HomePage.kt | 180 ++- .../page/summary/monthly/MonthSummaryPage.kt | 86 +- .../ui/page/summary/report/ReportPage.kt | 129 +- .../ui/page/summary/yearly/YearSummaryPage.kt | 101 +- app/src/main/res/drawable/ic_error_24px.xml | 9 - 10 files changed, 225 insertions(+), 1451 deletions(-) delete mode 100644 app/src/main/res/drawable/ic_error_24px.xml 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..bd1f294ebecd5404389d57871d241b0c4787bdf5 100644 GIT binary patch literal 4630 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 GARYiqSMbmP delta 4479 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 diff --git a/app/release/baselineProfiles/1/app-release.dm b/app/release/baselineProfiles/1/app-release.dm index 9c9005bdcc923430abd7fd7ced9e3e2c31206c64..ba348a3ab480765d9acd279dea1cb4f532f25d18 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,58 @@ 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, + ) { + AnimatedContent( + targetState = displayLegendPopup.value, + transitionSpec = { fadeIn() togetherWith fadeOut() }, + ) { display -> + IconButton( + onClick = onDisplayLegend, + ) { + Icon( + imageVector = when (display) { + true -> Icons.Filled.Info + else -> Icons.Outlined.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 +255,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 diff --git a/app/src/main/res/drawable/ic_error_24px.xml b/app/src/main/res/drawable/ic_error_24px.xml deleted file mode 100644 index 73356a1..0000000 --- a/app/src/main/res/drawable/ic_error_24px.xml +++ /dev/null @@ -1,9 +0,0 @@ - - -