Gitnuro/src/main/kotlin/app/ui/GMenu.kt
Abdelilah El Aissaoui af09479fcf Changed menu design
2021-11-26 06:34:49 +01:00

135 lines
3.4 KiB
Kotlin

@file:OptIn(ExperimentalComposeUiApi::class)
package app.ui
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CornerSize
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.layout.HorizontalAlignmentLine
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import app.theme.primaryTextColor
@Composable
fun GMenu(
onRepositoryOpen: () -> Unit,
onPull: () -> Unit,
onPush: () -> Unit,
onStash: () -> Unit,
onPopStash: () -> Unit,
onCreateBranch: () -> Unit,
) {
Row(
modifier = Modifier
.padding(vertical = 4.dp)
.fillMaxWidth(),
horizontalArrangement = Arrangement.Center,
) {
MenuButton(
modifier = Modifier.padding(start = 8.dp),
title = "Open",
icon = painterResource("open.svg"),
onClick = {
onRepositoryOpen()
}
)
Spacer(modifier = Modifier.weight(1f))
MenuButton(
title = "Pull",
icon = painterResource("download.svg"),
onClick = {
onPull()
},
)
MenuButton(
title = "Push",
icon = painterResource("upload.svg"),
onClick = {
onPush()
},
)
Spacer(modifier = Modifier.width(16.dp))
MenuButton(
title = "Branch",
icon = painterResource("branch.svg"),
onClick = {
onCreateBranch()
},
)
Spacer(modifier = Modifier.width(16.dp))
MenuButton(
title = "Stash",
icon = painterResource("stash.svg"),
onClick = onStash,
)
MenuButton(
title = "Pop",
icon = painterResource("apply_stash.svg"),
onClick = onPopStash,
)
Spacer(modifier = Modifier.weight(1f))
}
}
@Composable
fun MenuButton(
modifier: Modifier = Modifier,
enabled: Boolean = true,
title: String,
icon: Painter,
onClick: () -> Unit
) {
val iconColor = if (enabled) {
MaterialTheme.colors.primary
} else {
MaterialTheme.colors.secondaryVariant
}
OutlinedButton(
modifier = modifier
.padding(horizontal = 2.dp),
enabled = enabled,
onClick = onClick,
) {
Row(
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically,
) {
Image(
painter = icon,
contentDescription = title,
modifier = Modifier
.padding(horizontal = 4.dp)
.size(24.dp),
colorFilter = ColorFilter.tint(iconColor),
)
Text(
text = title,
fontSize = 12.sp,
color = MaterialTheme.colors.primaryTextColor
)
}
}
}