Skip to content

Commit

Permalink
Open TimePickerScreen when add time record
Browse files Browse the repository at this point in the history
  • Loading branch information
YuanLiou committed Jul 16, 2023
1 parent 644dc3b commit 0ca3354
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 6 deletions.
17 changes: 16 additions & 1 deletion wear/src/main/java/com/rayliu/gymnote/wearos/MainNavGraph.kt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import com.rayliu.gymnote.wearos.navigation.DestinationScrollType
import com.rayliu.gymnote.wearos.navigation.SCROLL_TYPE_NAV_ARGUMENT
import com.rayliu.gymnote.wearos.navigation.Screen
import com.rayliu.gymnote.wearos.navigation.WORKOUT_ID_NAV_ARGUMENT
import com.rayliu.gymnote.wearos.timepicker.TimePickerScreen
import com.rayliu.gymnote.wearos.workout.WorkoutScreen
import com.rayliu.gymnote.wearos.workout.WorkoutViewModel
import com.rayliu.gymnote.wearos.workoutlist.WorkoutListScreen
Expand Down Expand Up @@ -162,12 +163,26 @@ fun NavGraphBuilder.mainNavGraph(
recordTypes = recordTypes,
focusRequester = focusRequester,
onRequestFocus = {
RequestFocusOnResume(focusRequester)
RequestFocusOnResume(it)
},
onCancelButtonClicked = {
navController.popBackStack()
},
onTimeAdjustButtonClicked = {
navController.navigate(Screen.TimePickerScreen.route)
}
)
}
composable(
route = Screen.TimePickerScreen.route,
arguments = listOf(
navArgument(SCROLL_TYPE_NAV_ARGUMENT) {
type = NavType.EnumType(DestinationScrollType::class.java)
defaultValue = DestinationScrollType.NONE
}
)
) {
TimePickerScreen()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ fun AddRecordScreen(
recordTypes: ImmutableSet<RecordType>,
focusRequester: FocusRequester,
onCancelButtonClicked: () -> Unit,
onTimeAdjustButtonClicked: () -> Unit,
onRequestFocus: @Composable (FocusRequester) -> Unit,
modifier: Modifier = Modifier
) {
Expand All @@ -56,7 +57,11 @@ fun AddRecordScreen(
) { page ->
for (recordType in recordTypes) {
if (page == recordTypes.indexOf(recordType)) {
ShowScreenByRecordType(focusRequester, recordType)
ShowScreenByRecordType(
focusRequester,
recordType,
onTimeAdjustButtonClicked
)
onRequestFocus(focusRequester)
}
}
Expand Down Expand Up @@ -90,6 +95,7 @@ fun AddRecordScreen(
private fun ShowScreenByRecordType(
focusRequester: FocusRequester,
recordType: RecordType,
onTimeAdjustButtonClicked: () -> Unit
) {
when (recordType) {
RecordType.WEIGHT -> {
Expand Down Expand Up @@ -120,7 +126,8 @@ private fun ShowScreenByRecordType(

RecordType.TIME -> {
AddTimeRecordScreen(
onAdjustButtonClicked = {},
onAdjustButtonClicked = onTimeAdjustButtonClicked,
focusRequester = focusRequester,
modifier = Modifier
)
}
Expand Down Expand Up @@ -165,7 +172,8 @@ private fun AddRecordScreenPreview() {
persistentSetOf(),
focusRequester = FocusRequester(),
onRequestFocus = {},
onCancelButtonClicked = {}
onCancelButtonClicked = {},
onTimeAdjustButtonClicked = {}
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
Expand All @@ -20,14 +22,17 @@ import com.rayliu.gymnote.wearos.theme.PreviewConstants

@Composable
fun AddTimeRecordScreen(
focusRequester: FocusRequester,
onAdjustButtonClicked: () -> Unit,
modifier: Modifier = Modifier,
defaultText: String = "00:00:00"
) {
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Center,
modifier = modifier.fillMaxSize()
modifier = modifier
.fillMaxSize()
.focusRequester(focusRequester)
) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
Expand Down Expand Up @@ -57,7 +62,8 @@ fun AddTimeRecordScreen(
private fun AddTimeRecordPreview() {
GymNoteTheme {
AddTimeRecordScreen(
onAdjustButtonClicked = {}
onAdjustButtonClicked = {},
focusRequester = FocusRequester()
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ sealed class Screen(val route: String) {
object WorkoutList : Screen("workout_list")
object Workout : Screen("workout")
object AddWorkoutRecord : Screen("add_workout_record")
object TimePickerScreen : Screen("time_picker_screen")

fun withArguments(vararg arguments: String): String {
return buildString {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.rayliu.gymnote.wearos.timepicker

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.wear.compose.material.Text
import com.rayliu.gymnote.wearos.theme.GymNoteTheme
import com.rayliu.gymnote.wearos.theme.PreviewConstants

@Composable
fun TimePickerScreen(
modifier: Modifier = Modifier
) {
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Center,
modifier = modifier.fillMaxSize()
) {
Text("TimePicker")
}
}

@Preview(
group = "Screen Preview",
widthDp = PreviewConstants.WEAR_PREVIEW_DEVICE_WIDTH_DP,
heightDp = PreviewConstants.WEAR_PREVIEW_DEVICE_HEIGHT_DP,
apiLevel = PreviewConstants.WEAR_PREVIEW_API_LEVEL
)
@Composable
fun TimePickerScreenPreview() {
GymNoteTheme {
TimePickerScreen()
}
}

0 comments on commit 0ca3354

Please sign in to comment.