diff --git a/app/release/baselineProfiles/0/app-release.dm b/app/release/baselineProfiles/0/app-release.dm index bd1f294..58a4441 100644 Binary files a/app/release/baselineProfiles/0/app-release.dm and b/app/release/baselineProfiles/0/app-release.dm differ diff --git a/app/release/baselineProfiles/1/app-release.dm b/app/release/baselineProfiles/1/app-release.dm index ba348a3..22aa0c6 100644 Binary files a/app/release/baselineProfiles/1/app-release.dm and b/app/release/baselineProfiles/1/app-release.dm differ diff --git a/app/src/main/java/com/pixelized/headache/MainActivity.kt b/app/src/main/java/com/pixelized/headache/MainActivity.kt index 3e1b6b4..5b62a7e 100644 --- a/app/src/main/java/com/pixelized/headache/MainActivity.kt +++ b/app/src/main/java/com/pixelized/headache/MainActivity.kt @@ -3,6 +3,7 @@ package com.pixelized.headache import android.Manifest.permission.READ_CALENDAR import android.Manifest.permission.WRITE_CALENDAR import android.content.pm.PackageManager.PERMISSION_GRANTED +import android.os.Build import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent @@ -33,6 +34,11 @@ class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + // Force the 3-button navigation bar to be transparent + // See: https://developer.android.com/develop/ui/views/layout/edge-to-edge#create-transparent + window.isNavigationBarContrastEnforced = false + } if (ContextCompat.checkSelfPermission(this, READ_CALENDAR) != PERMISSION_GRANTED) { requestPermissionLauncher.launch(READ_CALENDAR) diff --git a/app/src/main/java/com/pixelized/headache/ui/common/toolbar/Toolbar.kt b/app/src/main/java/com/pixelized/headache/ui/common/toolbar/Toolbar.kt new file mode 100644 index 0000000..7c09e64 --- /dev/null +++ b/app/src/main/java/com/pixelized/headache/ui/common/toolbar/Toolbar.kt @@ -0,0 +1,40 @@ +package com.pixelized.headache.ui.common.toolbar + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.material3.BottomAppBarDefaults +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarColors +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.Dp + +@Suppress("NOTHING_TO_INLINE") +@OptIn(ExperimentalMaterial3Api::class) +@Composable +inline fun Toolbar( + modifier: Modifier = Modifier, + noinline title: @Composable () -> Unit, + noinline navigationIcon: @Composable () -> Unit = {}, + noinline actions: @Composable RowScope.() -> Unit = {}, + expandedHeight: Dp = TopAppBarDefaults.TopAppBarExpandedHeight, + windowInsets: WindowInsets = TopAppBarDefaults.windowInsets, + colors: TopAppBarColors = TopAppBarDefaults.topAppBarColors( + containerColor = BottomAppBarDefaults.containerColor, + ), + scrollBehavior: TopAppBarScrollBehavior? = null, +) { + TopAppBar( + title = title, + modifier = modifier, + navigationIcon = navigationIcon, + actions = actions, + expandedHeight = expandedHeight, + windowInsets = windowInsets, + colors = colors, + scrollBehavior = scrollBehavior, + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/headache/ui/navigation/home/HomeNavigator.kt b/app/src/main/java/com/pixelized/headache/ui/navigation/home/HomeNavigator.kt index ff85fba..db15f1e 100644 --- a/app/src/main/java/com/pixelized/headache/ui/navigation/home/HomeNavigator.kt +++ b/app/src/main/java/com/pixelized/headache/ui/navigation/home/HomeNavigator.kt @@ -15,6 +15,6 @@ class HomeNavigator( fun popBackstack() = backStack.removeLastOrNull() fun goTo(destination: HomeDestination) { - backStack.add(destination) + backStack[0] = destination } } \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/headache/ui/page/calendar/CalendarChooserPage.kt b/app/src/main/java/com/pixelized/headache/ui/page/calendar/CalendarChooserPage.kt index dca9607..473328d 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/calendar/CalendarChooserPage.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/calendar/CalendarChooserPage.kt @@ -13,8 +13,6 @@ import androidx.compose.material3.MaterialTheme 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.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.rememberCoroutineScope @@ -24,6 +22,7 @@ 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.common.toolbar.Toolbar import com.pixelized.headache.ui.navigation.main.LocalMainNavigator import kotlinx.coroutines.launch @@ -65,10 +64,7 @@ private fun CalendarContent( Scaffold( modifier = modifier, topBar = { - TopAppBar( - colors = TopAppBarDefaults.topAppBarColors( - containerColor = NavigationBarDefaults.containerColor, - ), + Toolbar( navigationIcon = { IconButton( onClick = onBack, diff --git a/app/src/main/java/com/pixelized/headache/ui/page/event/list/EventItem.kt b/app/src/main/java/com/pixelized/headache/ui/page/event/list/EventItem.kt index b9144b6..23edc7d 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/event/list/EventItem.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/event/list/EventItem.kt @@ -80,9 +80,9 @@ fun EventItem( Box( modifier = Modifier .clickable { onItem(item) } - .fillMaxWidth() .heightIn(min = minHeigh) .height(IntrinsicSize.Min) + .fillMaxWidth() .then(other = modifier), contentAlignment = Alignment.CenterStart, ) { diff --git a/app/src/main/java/com/pixelized/headache/ui/page/event/list/EventPage.kt b/app/src/main/java/com/pixelized/headache/ui/page/event/list/EventPage.kt index c7e1bba..c8b0a12 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/event/list/EventPage.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/event/list/EventPage.kt @@ -1,10 +1,6 @@ package com.pixelized.headache.ui.page.event.list -import androidx.compose.animation.AnimatedContent import androidx.compose.animation.animateColorAsState -import androidx.compose.animation.fadeIn -import androidx.compose.animation.fadeOut -import androidx.compose.animation.togetherWith import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize @@ -22,12 +18,10 @@ import androidx.compose.material3.FloatingActionButton 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.material3.minimumInteractiveComponentSize import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.runtime.State @@ -44,6 +38,7 @@ 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.common.toolbar.Toolbar import com.pixelized.headache.ui.navigation.main.LocalMainNavigator import com.pixelized.headache.ui.page.event.edit.EventEditBottomSheet import com.pixelized.headache.ui.page.event.edit.EventEditBottomSheetViewModel @@ -107,10 +102,7 @@ private fun EventContent( Scaffold( modifier = modifier, topBar = { - TopAppBar( - colors = TopAppBarDefaults.topAppBarColors( - containerColor = NavigationBarDefaults.containerColor, - ), + Toolbar( navigationIcon = { IconButton( onClick = onBack, @@ -186,17 +178,10 @@ private fun EventContent( key = { it.id }, contentType = { "EventItem" }, ) { item -> - AnimatedContent( - modifier = Modifier.animateItem(), - targetState = item, - transitionSpec = { fadeIn() togetherWith fadeOut() }, - ) { animatedItem -> - EventItem( - modifier = Modifier.fillMaxWidth(), - item = animatedItem, - onItem = onEvent, - ) - } + EventItem( + item = item, + onItem = onEvent, + ) } } } diff --git a/app/src/main/java/com/pixelized/headache/ui/page/home/HomePage.kt b/app/src/main/java/com/pixelized/headache/ui/page/home/HomePage.kt index 43263b2..74516c3 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/home/HomePage.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/home/HomePage.kt @@ -25,12 +25,9 @@ import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.NavigationBar -import androidx.compose.material3.NavigationBarDefaults import androidx.compose.material3.NavigationBarItem import androidx.compose.material3.Scaffold 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 @@ -44,6 +41,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import com.pixelized.headache.R +import com.pixelized.headache.ui.common.toolbar.Toolbar import com.pixelized.headache.ui.navigation.destination.MonthSummaryDestination import com.pixelized.headache.ui.navigation.destination.ReportDestination import com.pixelized.headache.ui.navigation.destination.YearSummaryDestination @@ -167,10 +165,7 @@ private fun HomePageContent( Scaffold( modifier = modifier, topBar = { - TopAppBar( - colors = TopAppBarDefaults.topAppBarColors( - containerColor = NavigationBarDefaults.containerColor, - ), + Toolbar( title = { Text( text = stringResource(R.string.app_name), 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 71bf1de..a89b23d 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 @@ -7,6 +7,7 @@ import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState @@ -14,6 +15,7 @@ import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Surface +import androidx.compose.material3.minimumInteractiveComponentSize import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.runtime.State @@ -93,7 +95,6 @@ private fun MonthSummaryContent( events.value.forEach { entry -> item { MonthSummaryTitle( - modifier = Modifier.padding(top = 16.dp), item = entry.key, ) } diff --git a/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/item/MonthSummaryItem.kt b/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/item/MonthSummaryItem.kt index 7ee80f1..1c1c572 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/item/MonthSummaryItem.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/item/MonthSummaryItem.kt @@ -60,6 +60,7 @@ fun MonthSummaryItem( Column( modifier = Modifier .clickable { onItem(item) } + .fillMaxWidth() .padding(paddingValues = padding) .then(other = modifier), verticalArrangement = Arrangement.spacedBy(space = spacing.height) diff --git a/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/item/MonthSummaryTitle.kt b/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/item/MonthSummaryTitle.kt index 6c869e9..785d78d 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/item/MonthSummaryTitle.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/item/MonthSummaryTitle.kt @@ -22,7 +22,7 @@ data class MonthSummaryTitleUio( object MonthSummaryTitleDefault { @Stable - val padding: PaddingValues = PaddingValues(horizontal = 16.dp) + val padding: PaddingValues = PaddingValues(start = 16.dp, top = 16.dp, end = 16.dp,) @SuppressLint("ConstantLocale") @Stable diff --git a/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportBox.kt b/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportBox.kt index a5bfa42..13071a7 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportBox.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportBox.kt @@ -1,10 +1,12 @@ package com.pixelized.headache.ui.page.summary.report +import android.R import android.annotation.SuppressLint import android.icu.text.DateFormat import android.icu.text.SimpleDateFormat import android.icu.util.Calendar import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/com/pixelized/headache/ui/theme/color/HeadacheColorPalette.kt b/app/src/main/java/com/pixelized/headache/ui/theme/color/HeadacheColorPalette.kt index 468c5f1..9c0adc3 100644 --- a/app/src/main/java/com/pixelized/headache/ui/theme/color/HeadacheColorPalette.kt +++ b/app/src/main/java/com/pixelized/headache/ui/theme/color/HeadacheColorPalette.kt @@ -17,7 +17,7 @@ object HeadacheColorPalette { @Immutable object Calendar { - val Headache = Additional.LightRed + val Headache = Additional.VeryLightRed val Pill = Additional.DarkRed } diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index e659fe7..bd17a92 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -7,7 +7,7 @@ L\'édition du calendrier a échouée Choix du calendrier - Évennement migraineux + Évènements migraineux Suivi mensuel Suivi annuel \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6a220e4..c3604ff 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,7 +7,7 @@ Calendar edit failed. Choose your calendar - Headache event + Headache events Monthly follow-up Annual follow-up \ No newline at end of file