package ui import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.MaterialTheme import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBackIosNew import androidx.compose.material.icons.filled.Settings import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.constraintlayout.compose.ConstraintLayout import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.currentOrThrow import transparentButton import ui.Profiles.Companion.Buttons.Companion.createProfile import ui.Profiles.Companion.Buttons.Companion.currentProfile import ui.screens.ProfilesManager import ui.screens.Settings class Bars { companion object { @Composable fun topBar(screenCount: Int) { ConstraintLayout( modifier = Modifier .padding(10.dp) .fillMaxWidth() ) { val (back, capture) = createRefs() if (screenCount > 1) { backButton(Modifier.constrainAs(back) { linkTo(parent.top, parent.bottom) start.linkTo(parent.start, margin = 5.dp) }) } Capture.captureContext(Modifier.constrainAs(capture) { linkTo(parent.top, parent.bottom) linkTo(parent.start, parent.end) centerVerticallyTo(parent) }) } } @Composable fun bottomBar() { ConstraintLayout( modifier = Modifier .padding(5.dp) .fillMaxWidth() ) { val (currentProfile, createProfile) = createRefs() currentProfile(Modifier.constrainAs(currentProfile) { linkTo(parent.top, parent.bottom) start.linkTo(parent.start) }) if (LocalNavigator.currentOrThrow.lastItem is ProfilesManager) { createProfile(Modifier.constrainAs(createProfile) { linkTo(parent.top, parent.bottom) end.linkTo(parent.end) }) } } } @Composable fun backButton(modifier: Modifier) { val navigator = LocalNavigator.currentOrThrow Box( modifier = modifier .background(MaterialTheme.colors.primary, CircleShape) ) { transparentButton( modifier = Modifier, icon = Icons.Filled.ArrowBackIosNew, contentDescription = "Go Back", onClick = { navigator.pop() }, ) } } @Composable fun settingsButton(modifier: Modifier) { val navigator = LocalNavigator.currentOrThrow transparentButton( modifier = modifier, icon = Icons.Filled.Settings, contentDescription = "Settings", onClick = { if (navigator.lastItem !is Settings) { navigator.push(Settings()) } }, ) } } }