diff --git a/wear/src/main/java/com/example/util/simpletimetracker/presentation/components/RefreshButton.kt b/wear/src/main/java/com/example/util/simpletimetracker/presentation/components/RefreshButton.kt index 6427d118..12f6a0f8 100644 --- a/wear/src/main/java/com/example/util/simpletimetracker/presentation/components/RefreshButton.kt +++ b/wear/src/main/java/com/example/util/simpletimetracker/presentation/components/RefreshButton.kt @@ -5,28 +5,32 @@ */ package com.example.util.simpletimetracker.presentation.components -import android.widget.Toast import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Refresh import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.rotate import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.wear.compose.material.Icon import androidx.wear.compose.material.OutlinedButton import com.example.util.simpletimetracker.R +import com.example.util.simpletimetracker.presentation.remember.rememberAnimationRotation @Composable fun RefreshButton(onClick: () -> Unit, contentDescription: String? = null) { val context = LocalContext.current - - + var pressCount by remember { mutableIntStateOf(0) } + val targetRotation = rememberAnimationRotation(key = pressCount) OutlinedButton( onClick = { - // Idea: Instead of a toast, spin the button while the callback is executing... - Toast.makeText(context, "Refreshing", Toast.LENGTH_SHORT).show() + pressCount++ onClick() }, content = { @@ -37,7 +41,9 @@ fun RefreshButton(onClick: () -> Unit, contentDescription: String? = null) { ), ) }, - modifier = Modifier.padding(all = 8.dp), + modifier = Modifier + .rotate(targetRotation) + .padding(all = 8.dp), ) } diff --git a/wear/src/main/java/com/example/util/simpletimetracker/presentation/remember/animationRotation.kt b/wear/src/main/java/com/example/util/simpletimetracker/presentation/remember/animationRotation.kt new file mode 100644 index 00000000..d04a2f0e --- /dev/null +++ b/wear/src/main/java/com/example/util/simpletimetracker/presentation/remember/animationRotation.kt @@ -0,0 +1,21 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ +package com.example.util.simpletimetracker.presentation.remember + +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.tween +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue + +@Composable +fun rememberAnimationRotation(key: Int): Float { + val targetRotation by animateFloatAsState( + targetValue = key * 360F, + animationSpec = tween(1500), + label = "rotation", + ) + return targetRotation +} \ No newline at end of file diff --git a/wear/src/main/java/com/example/util/simpletimetracker/presentation/screens/ActivitiesScreen.kt b/wear/src/main/java/com/example/util/simpletimetracker/presentation/screens/ActivitiesScreen.kt index 363685c7..8ad702ea 100644 --- a/wear/src/main/java/com/example/util/simpletimetracker/presentation/screens/ActivitiesScreen.kt +++ b/wear/src/main/java/com/example/util/simpletimetracker/presentation/screens/ActivitiesScreen.kt @@ -59,8 +59,8 @@ fun ActivitiesScreen(onRequestTagSelection: (activityId: Long) -> Unit) { ActivitiesList( - activities, - currentActivities, + activities = activities, + currentActivities = currentActivities, onSelectActivity = { coroutineScope.launch(Dispatchers.Default) { startActivitiesMediator.requestStart(it)