diff --git a/app/build.gradle b/app/build.gradle index ecb1c2a..2694dd1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -92,37 +92,37 @@ dependencies { implementation 'androidx.core:core-ktx:1.13.1' implementation 'androidx.appcompat:appcompat:1.7.0' implementation "androidx.compose.material3:material3:1.2.1" - implementation 'com.google.android.play:core-ktx:1.8.1' - implementation 'com.google.android.play:core-ktx:1.8.1' + implementation 'com.google.android.play:review:2.0.1' + implementation 'com.google.android.play:review-ktx:2.0.1' implementation 'com.google.code.gson:gson:2.10.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.navigation:navigation-fragment-ktx:2.7.7' implementation 'androidx.navigation:navigation-ui-ktx:2.7.7' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.8.1' - implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.1' - implementation 'androidx.fragment:fragment-ktx:1.7.1' + implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.8.4' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4' + implementation 'androidx.fragment:fragment-ktx:1.8.2' implementation 'androidx.preference:preference-ktx:1.2.1' implementation 'androidx.recyclerview:recyclerview:1.3.2' - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.1' - implementation 'androidx.compose.material:material-icons-extended:1.6.7' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.4' + implementation 'androidx.compose.material:material-icons-extended:1.6.8' implementation "com.google.accompanist:accompanist-systemuicontroller:0.27.0" - implementation 'androidx.activity:activity-compose:1.9.0' - implementation "androidx.compose.ui:ui:1.6.7" - implementation "androidx.compose.ui:ui-tooling-preview:1.6.7" - implementation "androidx.compose.runtime:runtime-livedata:1.6.7" + implementation 'androidx.activity:activity-compose:1.9.1' + implementation "androidx.compose.ui:ui:1.6.8" + implementation "androidx.compose.ui:ui-tooling-preview:1.6.8" + implementation "androidx.compose.runtime:runtime-livedata:1.6.8" implementation "androidx.navigation:navigation-compose:2.7.7" - implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.8.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4" testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' + androidTestImplementation 'androidx.test.ext:junit:1.2.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' implementation "com.google.dagger:hilt-android:2.51.1" - androidTestImplementation "androidx.compose.ui:ui-test-junit4:1.6.7" - debugImplementation "androidx.compose.ui:ui-tooling:1.6.7" - debugImplementation "androidx.compose.ui:ui-test-manifest:1.6.7" + androidTestImplementation "androidx.compose.ui:ui-test-junit4:1.6.8" + debugImplementation "androidx.compose.ui:ui-tooling:1.6.8" + debugImplementation "androidx.compose.ui:ui-test-manifest:1.6.8" kapt "com.google.dagger:hilt-compiler:2.51.1" - implementation "androidx.room:room-runtime:2.6.1" annotationProcessor "androidx.room:room-compiler:2.6.1" + implementation "androidx.room:room-runtime:2.6.1" ksp "androidx.room:room-compiler:2.6.1" implementation "androidx.room:room-ktx:2.6.1" implementation "androidx.multidex:multidex:2.0.1" diff --git a/app/src/main/java/me/zobrist/tichucounter/MainActivity.kt b/app/src/main/java/me/zobrist/tichucounter/MainActivity.kt index 72fe2bb..5aac582 100644 --- a/app/src/main/java/me/zobrist/tichucounter/MainActivity.kt +++ b/app/src/main/java/me/zobrist/tichucounter/MainActivity.kt @@ -8,14 +8,14 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.outlined.List +import androidx.compose.material.icons.automirrored.outlined.Redo +import androidx.compose.material.icons.automirrored.outlined.Undo import androidx.compose.material.icons.outlined.Calculate import androidx.compose.material.icons.outlined.Info import androidx.compose.material.icons.outlined.Keyboard -import androidx.compose.material.icons.outlined.List import androidx.compose.material.icons.outlined.MoreVert -import androidx.compose.material.icons.outlined.Redo import androidx.compose.material.icons.outlined.Settings -import androidx.compose.material.icons.outlined.Undo import androidx.compose.material3.DrawerState import androidx.compose.material3.DrawerValue import androidx.compose.material3.FloatingActionButton @@ -166,7 +166,11 @@ class MainActivity : AppCompatActivity() { Icons.Outlined.Calculate, stringResource(R.string.menu_counter) ), - DrawerItem(Route.HISTORY, Icons.Outlined.List, stringResource(R.string.menu_history)), + DrawerItem( + Route.HISTORY, + Icons.AutoMirrored.Outlined.List, + stringResource(R.string.menu_history) + ), DrawerItem( Route.SETTINGS, Icons.Outlined.Settings, @@ -217,7 +221,7 @@ class MainActivity : AppCompatActivity() { ) { var topBarState by remember { mutableStateOf(TopBarState()) } - var snackbarHostState by remember { mutableStateOf(SnackbarHostState()) } + val snackbarHostState by remember { mutableStateOf(SnackbarHostState()) } Scaffold( snackbarHost = { SnackbarHost(snackbarHostState) }, @@ -236,7 +240,7 @@ class MainActivity : AppCompatActivity() { startDestination = Route.COUNTER.name, modifier = Modifier.padding(paddings) ) { - this.composable(Route.COUNTER.name.toString()) { + this.composable(Route.COUNTER.name) { var expanded by remember { mutableStateOf(false) } @@ -244,11 +248,11 @@ class MainActivity : AppCompatActivity() { title = stringResource(R.string.app_name), actions = (listOf( TopBarAction( - Icons.Outlined.Undo, + Icons.AutoMirrored.Outlined.Undo, mainViewModel.isUndoActionActive, { mainViewModel.undoLastRound() }), TopBarAction( - Icons.Outlined.Redo, + Icons.AutoMirrored.Outlined.Redo, mainViewModel.isRedoActionActive, { mainViewModel.redoLastRound() }), TopBarAction( diff --git a/app/src/main/java/me/zobrist/tichucounter/data/GameDao.kt b/app/src/main/java/me/zobrist/tichucounter/data/GameDao.kt index 1f8cd32..f70d899 100644 --- a/app/src/main/java/me/zobrist/tichucounter/data/GameDao.kt +++ b/app/src/main/java/me/zobrist/tichucounter/data/GameDao.kt @@ -1,6 +1,8 @@ package me.zobrist.tichucounter.data -import androidx.room.* +import androidx.room.Dao +import androidx.room.Query +import androidx.room.Transaction import kotlinx.coroutines.flow.Flow import me.zobrist.tichucounter.data.entity.Game diff --git a/app/src/main/java/me/zobrist/tichucounter/data/RoundDao.kt b/app/src/main/java/me/zobrist/tichucounter/data/RoundDao.kt index 2da3a09..e6f642a 100644 --- a/app/src/main/java/me/zobrist/tichucounter/data/RoundDao.kt +++ b/app/src/main/java/me/zobrist/tichucounter/data/RoundDao.kt @@ -1,6 +1,7 @@ package me.zobrist.tichucounter.data -import androidx.room.* +import androidx.room.Dao +import androidx.room.Query import me.zobrist.tichucounter.data.entity.Round @Dao diff --git a/app/src/main/java/me/zobrist/tichucounter/domain/ReviewService.kt b/app/src/main/java/me/zobrist/tichucounter/domain/ReviewService.kt index bc2c806..3ee1b9a 100644 --- a/app/src/main/java/me/zobrist/tichucounter/domain/ReviewService.kt +++ b/app/src/main/java/me/zobrist/tichucounter/domain/ReviewService.kt @@ -47,7 +47,6 @@ class ReviewService @Inject constructor(@ActivityContext private val appContext: val reviewInfo = task.result manager.launchReviewFlow(appContext as Activity, reviewInfo) - } else { } } } diff --git a/app/src/main/java/me/zobrist/tichucounter/repository/GameRepository.kt b/app/src/main/java/me/zobrist/tichucounter/repository/GameRepository.kt index f1d067c..1a5ac13 100644 --- a/app/src/main/java/me/zobrist/tichucounter/repository/GameRepository.kt +++ b/app/src/main/java/me/zobrist/tichucounter/repository/GameRepository.kt @@ -22,8 +22,7 @@ class GameRepository @Inject constructor( private val roundDao: RoundDao ) { - var activeGame: Game = Game(true, "TeamA", "TeamB", Date(), Date()) - private set + private var activeGame: Game = Game(true, "TeamA", "TeamB", Date(), Date()) private val newGameFlow = MutableStateFlow(Game()) diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt b/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt index 5fcae12..405b5fd 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt @@ -11,10 +11,10 @@ import androidx.compose.material3.TextField import androidx.compose.material3.TextFieldColors import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.input.key.Key @@ -26,7 +26,7 @@ import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.input.ImeAction -@OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class) +@OptIn(ExperimentalMaterial3Api::class) @Composable fun TypeaheadTextField( value: String, @@ -46,7 +46,7 @@ fun TypeaheadTextField( onExpandedChange = {} ) { - var dropDownWidth by remember { mutableStateOf(0) } + var dropDownWidth by remember { mutableIntStateOf(0) } TextField( value = value, diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt index 9288313..da948f2 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt @@ -12,7 +12,7 @@ import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier @@ -28,7 +28,7 @@ import me.zobrist.tichucounter.ui.AppTheme @Composable fun Counter(viewModel: ICounterViewModel = PreviewViewModel()) { - var orientation by remember { mutableStateOf(Configuration.ORIENTATION_PORTRAIT) } + var orientation by remember { mutableIntStateOf(Configuration.ORIENTATION_PORTRAIT) } orientation = LocalConfiguration.current.orientation if (viewModel.showVictoryDialog) { @@ -122,7 +122,7 @@ fun CounterViewPreview() { } } -@Preview() +@Preview @Composable fun GameVictoryDialog( pointsA: Int = 2000, diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/KeyboardView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/KeyboardView.kt index 85880a6..8a02788 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/KeyboardView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/KeyboardView.kt @@ -19,12 +19,12 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Backspace +import androidx.compose.material.icons.automirrored.outlined.Backspace import androidx.compose.material.icons.outlined.Check import androidx.compose.material.icons.outlined.KeyboardHide import androidx.compose.material.icons.outlined.SwapHoriz -import androidx.compose.material3.Divider import androidx.compose.material3.ElevatedButton +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.LocalTextStyle @@ -198,7 +198,7 @@ fun KeyboardView( deleteButtonPressedState(deletePressed) KeyboardIconButton( - icon = Icons.Outlined.Backspace, + icon = Icons.AutoMirrored.Outlined.Backspace, interactionSource = interactionSource ) {} } @@ -330,7 +330,7 @@ fun CenteredTextField( Row { Text(text = value, color = cursorColor.copy(alpha = 0f)) - Divider( + HorizontalDivider( modifier = Modifier .padding(start = 3.dp, top = 15.dp, bottom = 15.dp) .width(1.dp) diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/history/HistoryView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/history/HistoryView.kt index 6af5e52..220cd31 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/history/HistoryView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/history/HistoryView.kt @@ -48,7 +48,6 @@ import androidx.compose.ui.Alignment.Companion.CenterVertically import androidx.compose.ui.Alignment.Companion.TopEnd import androidx.compose.ui.Modifier import androidx.compose.ui.draw.scale -import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow @@ -242,12 +241,11 @@ fun DismissibleHistoryListItem( @Composable fun ItemBackground( dismissBoxValue: SwipeToDismissBoxValue -) -{ +) { val backgroundColor by animateColorAsState( when (dismissBoxValue) { SwipeToDismissBoxValue.EndToStart -> MaterialTheme.colorScheme.error - SwipeToDismissBoxValue.StartToEnd-> MaterialTheme.colorScheme.primary + SwipeToDismissBoxValue.StartToEnd -> MaterialTheme.colorScheme.primary else -> MaterialTheme.colorScheme.background }, label = "" @@ -276,10 +274,12 @@ fun ItemBackground( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.align(Alignment.CenterStart) ) { - Icon(Icons.Outlined.RestartAlt, + Icon( + Icons.Outlined.RestartAlt, contentDescription = null, tint = textColor, - modifier = Modifier.scale(scale),) + modifier = Modifier.scale(scale), + ) Text(text = stringResource(id = R.string.continue_play), color = textColor) } Column( @@ -288,10 +288,12 @@ fun ItemBackground( modifier = Modifier.align(Alignment.CenterEnd) ) { - Icon(Icons.Outlined.Delete, + Icon( + Icons.Outlined.Delete, contentDescription = null, tint = textColor, - modifier = Modifier.scale(scale),) + modifier = Modifier.scale(scale), + ) Text(text = stringResource(id = R.string.delete), color = textColor) } } diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/layout/DrawerContent.kt b/app/src/main/java/me/zobrist/tichucounter/ui/layout/DrawerContent.kt index eaf1f43..8c56e98 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/layout/DrawerContent.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/layout/DrawerContent.kt @@ -3,10 +3,10 @@ package me.zobrist.tichucounter.ui.layout import android.content.res.Configuration import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.outlined.List import androidx.compose.material.icons.outlined.Calculate -import androidx.compose.material.icons.outlined.List import androidx.compose.material.icons.outlined.Settings -import androidx.compose.material3.Divider +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalDrawerSheet @@ -38,7 +38,7 @@ fun DrawerContent( text = stringResource(R.string.app_name), style = MaterialTheme.typography.headlineSmall ) - Divider(modifier = Modifier.padding(10.dp)) + HorizontalDivider(modifier = Modifier.padding(10.dp)) drawerItems.forEach { screen -> NavigationDrawerItem( @@ -58,7 +58,7 @@ fun DrawerContent( fun DrawerContentPreview() { val counter = DrawerItem(Route.COUNTER, Icons.Outlined.Calculate, "Counter") - val history = DrawerItem(Route.HISTORY, Icons.Outlined.List, "History") + val history = DrawerItem(Route.HISTORY, Icons.AutoMirrored.Outlined.List, "History") val settings = DrawerItem(Route.SETTINGS, Icons.Outlined.Settings, "Settings") AppTheme { Surface { diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/layout/TopBar.kt b/app/src/main/java/me/zobrist/tichucounter/ui/layout/TopBar.kt index a4dbd23..ab760d3 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/layout/TopBar.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/layout/TopBar.kt @@ -1,6 +1,10 @@ package me.zobrist.tichucounter.ui.layout -import androidx.compose.material3.* +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.style.TextOverflow diff --git a/build.gradle b/build.gradle index 4b8563e..8d28e3a 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:8.4.1' + classpath 'com.android.tools.build:gradle:8.5.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong @@ -26,7 +26,3 @@ allprojects { mavenCentral() } } - -tasks.register('clean', Delete) { - delete rootProject.buildDir -} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 15f6fd3..7feced6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip