in WearSpeakerSample/wear/src/main/java/com/example/android/wearable/speaker/ControlDashboard.kt [49:115]
fun ControlDashboard(
controlDashboardUiState: ControlDashboardUiState,
onMicClicked: () -> Unit,
onPlayClicked: () -> Unit,
onMusicClicked: () -> Unit,
modifier: Modifier = Modifier
) {
val circle = Any()
val mic = Any()
val play = Any()
val music = Any()
val constraintSet = createConstraintSet(
controlDashboardUiState = controlDashboardUiState,
circle = circle,
mic = mic,
play = play,
music = music,
)
// We are using ConstraintLayout here for the circular constraints
// In general, ConstraintLayout is less necessary for Compose than it was for Views
ConstraintLayout(
constraintSet = constraintSet,
modifier = modifier
) {
Spacer(
modifier = Modifier.layoutId(circle)
)
ControlDashboardButton(
buttonState = controlDashboardUiState.micState,
onClick = onMicClicked,
layoutId = mic,
imageVector = Icons.Filled.Mic,
contentDescription = if (controlDashboardUiState.micState.expanded) {
stringResource(id = R.string.stop_recording)
} else {
stringResource(id = R.string.record)
}
)
ControlDashboardButton(
buttonState = controlDashboardUiState.playState,
onClick = onPlayClicked,
layoutId = play,
imageVector = Icons.Filled.PlayArrow,
contentDescription = if (controlDashboardUiState.playState.expanded) {
stringResource(id = R.string.stop_playing_recording)
} else {
stringResource(id = R.string.play_recording)
}
)
ControlDashboardButton(
buttonState = controlDashboardUiState.musicState,
onClick = onMusicClicked,
layoutId = music,
imageVector = Icons.Filled.MusicNote,
contentDescription = if (controlDashboardUiState.musicState.expanded) {
stringResource(id = R.string.stop_playing_music)
} else {
stringResource(id = R.string.play_music)
}
)
}
}