diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ab93a07..81d4f4f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -40,6 +40,9 @@ android { jvmTarget.set(JvmTarget.JVM_17) // Use the enum for target JVM version } } + ksp { + arg("room.schemaLocation", "$projectDir/schemas") + } buildFeatures { compose = true } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 008908c..04aef38 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,12 +6,14 @@ android:name=".TomatoApplication" android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" + android:enableOnBackInvokedCallback="true" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/Theme.Tomato"> + android:theme="@style/Theme.Tomato" + tools:targetApi="36"> (Screen.Timer) @@ -75,7 +88,7 @@ fun AppScreen( { if (backStack.size > 1) backStack.removeAt(1) } }, icon = { - Crossfade (selected) { selected -> + Crossfade(selected) { selected -> if (selected) Icon(painterResource(it.selectedIcon), null) else Icon(painterResource(it.unselectedIcon), null) } @@ -89,6 +102,25 @@ fun AppScreen( NavDisplay( backStack = backStack, onBack = { backStack.removeLastOrNull() }, + transitionSpec = { + ContentTransform( + fadeIn(motionScheme.defaultEffectsSpec()), + fadeOut(motionScheme.defaultEffectsSpec()) + ) + }, + popTransitionSpec = { + ContentTransform( + fadeIn(motionScheme.defaultEffectsSpec()), + fadeOut(motionScheme.defaultEffectsSpec()) + ) + }, + predictivePopTransitionSpec = { + ContentTransform( + fadeIn(motionScheme.defaultEffectsSpec()), + fadeOut(motionScheme.defaultEffectsSpec()) + + scaleOut(targetScale = 0.7f), + ) + }, entryProvider = entryProvider { entry { TimerScreen( diff --git a/app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/SettingsScreen.kt b/app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/SettingsScreen.kt index 6dfd860..310159e 100644 --- a/app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/SettingsScreen.kt +++ b/app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/SettingsScreen.kt @@ -1,5 +1,6 @@ package org.nsh07.pomodoro.ui.settingsScreen +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize @@ -7,6 +8,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.LoadingIndicator import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme.colorScheme import androidx.compose.material3.MaterialTheme.typography import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar @@ -34,7 +36,7 @@ fun SettingsScreen(modifier: Modifier = Modifier) { subtitle = {}, titleHorizontalAlignment = Alignment.CenterHorizontally ) - Box(contentAlignment = Alignment.Center, modifier = Modifier.fillMaxSize()) { + Box(contentAlignment = Alignment.Center, modifier = Modifier.fillMaxSize().background(colorScheme.surface)) { Column(horizontalAlignment = Alignment.CenterHorizontally) { LoadingIndicator() Text("Coming Soon", style = typography.headlineSmall, fontFamily = robotoFlexTitle) diff --git a/app/src/main/java/org/nsh07/pomodoro/ui/statsScreen/StatsScreen.kt b/app/src/main/java/org/nsh07/pomodoro/ui/statsScreen/StatsScreen.kt index 43cdb03..6720c33 100644 --- a/app/src/main/java/org/nsh07/pomodoro/ui/statsScreen/StatsScreen.kt +++ b/app/src/main/java/org/nsh07/pomodoro/ui/statsScreen/StatsScreen.kt @@ -1,5 +1,6 @@ package org.nsh07.pomodoro.ui.statsScreen +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize @@ -7,6 +8,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.LoadingIndicator import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme.colorScheme import androidx.compose.material3.MaterialTheme.typography import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar @@ -34,7 +36,7 @@ fun StatsScreen(modifier: Modifier = Modifier) { subtitle = {}, titleHorizontalAlignment = Alignment.CenterHorizontally ) - Box(contentAlignment = Alignment.Center, modifier = Modifier.fillMaxSize()) { + Box(contentAlignment = Alignment.Center, modifier = Modifier.fillMaxSize().background(colorScheme.surface)) { Column(horizontalAlignment = Alignment.CenterHorizontally) { LoadingIndicator() Text("Coming Soon", style = typography.headlineSmall, fontFamily = robotoFlexTitle) diff --git a/app/src/main/java/org/nsh07/pomodoro/ui/timerScreen/TimerScreen.kt b/app/src/main/java/org/nsh07/pomodoro/ui/timerScreen/TimerScreen.kt index 66957db..d2846e5 100644 --- a/app/src/main/java/org/nsh07/pomodoro/ui/timerScreen/TimerScreen.kt +++ b/app/src/main/java/org/nsh07/pomodoro/ui/timerScreen/TimerScreen.kt @@ -34,16 +34,13 @@ import androidx.compose.material3.MaterialTheme.typography import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.graphics.drawscope.Stroke -import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight @@ -71,7 +68,6 @@ fun TimerScreen( modifier: Modifier = Modifier ) { val motionScheme = motionScheme - val haptic = LocalHapticFeedback.current val color by animateColorAsState( if (uiState.timerMode == TimerMode.FOCUS) colorScheme.primary @@ -89,10 +85,6 @@ fun TimerScreen( animationSpec = motionScheme.slowEffectsSpec() ) - LaunchedEffect(uiState.timerMode) { - haptic.performHapticFeedback(HapticFeedbackType.LongPress) - } - Column(modifier = modifier) { TopAppBar( title = {