mia/src/main/kotlin/ui/Bars.kt

106 lines
3.5 KiB
Kotlin

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())
}
},
)
}
}
}