#67 fab unfixed pos
This commit is contained in:
parent
f74da5abc3
commit
e65c2fe002
4 changed files with 58 additions and 26 deletions
|
@ -2,7 +2,10 @@ package be.ugent.sel.studeez.common.composable
|
||||||
|
|
||||||
import androidx.compose.animation.core.animateFloat
|
import androidx.compose.animation.core.animateFloat
|
||||||
import androidx.compose.animation.core.updateTransition
|
import androidx.compose.animation.core.updateTransition
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.Row
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.material.FloatingActionButton
|
import androidx.compose.material.FloatingActionButton
|
||||||
import androidx.compose.material.Icon
|
import androidx.compose.material.Icon
|
||||||
import androidx.compose.material.IconButton
|
import androidx.compose.material.IconButton
|
||||||
|
@ -16,9 +19,12 @@ import androidx.compose.runtime.*
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.rotate
|
import androidx.compose.ui.draw.rotate
|
||||||
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import be.ugent.sel.studeez.resources
|
||||||
import be.ugent.sel.studeez.ui.theme.StudeezTheme
|
import be.ugent.sel.studeez.ui.theme.StudeezTheme
|
||||||
|
import be.ugent.sel.studeez.R.string as AppText
|
||||||
|
|
||||||
const val TRANSITION = "transition"
|
const val TRANSITION = "transition"
|
||||||
val HEIGHT_DIFFERENCE = 30.dp
|
val HEIGHT_DIFFERENCE = 30.dp
|
||||||
|
@ -56,7 +62,9 @@ fun AddButton(
|
||||||
) {
|
) {
|
||||||
// Show minis when expanded.
|
// Show minis when expanded.
|
||||||
if (multiFloatingState == MultiFloatingState.Expanded) {
|
if (multiFloatingState == MultiFloatingState.Expanded) {
|
||||||
ExpandedAddButton(addButtonActions = addButtonActions)
|
ExpandedAddButton(
|
||||||
|
addButtonActions = addButtonActions
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// The base add button
|
// The base add button
|
||||||
|
@ -83,35 +91,57 @@ fun ExpandedAddButton(
|
||||||
addButtonActions: AddButtonActions
|
addButtonActions: AddButtonActions
|
||||||
) {
|
) {
|
||||||
Row {
|
Row {
|
||||||
IconButton(
|
ExpandedEntry(
|
||||||
|
name = AppText.task,
|
||||||
|
imageVector = Icons.Default.Check,
|
||||||
onClick = addButtonActions.onTaskClick,
|
onClick = addButtonActions.onTaskClick,
|
||||||
modifier = Modifier.padding(36.dp, HEIGHT_DIFFERENCE, 36.dp, 0.dp)
|
modifier = Modifier.padding(36.dp, HEIGHT_DIFFERENCE, 36.dp, 0.dp)
|
||||||
) {
|
)
|
||||||
Column (horizontalAlignment = Alignment.CenterHorizontally) {
|
|
||||||
Icon(imageVector = Icons.Default.Check, contentDescription = "Task")
|
|
||||||
Text(text = "Task")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
IconButton(onClick = addButtonActions.onFriendClick) {
|
ExpandedEntry(
|
||||||
Column (horizontalAlignment = Alignment.CenterHorizontally) {
|
name = AppText.friend,
|
||||||
Icon(imageVector = Icons.Default.Person, contentDescription = "Friend")
|
imageVector = Icons.Default.Person,
|
||||||
Text(text = "Friend")
|
onClick = addButtonActions.onFriendClick
|
||||||
}
|
)
|
||||||
}
|
|
||||||
|
|
||||||
IconButton(
|
ExpandedEntry(
|
||||||
|
name = AppText.session,
|
||||||
|
imageVector = Icons.Default.DateRange,
|
||||||
onClick = addButtonActions.onSessionClick,
|
onClick = addButtonActions.onSessionClick,
|
||||||
modifier = Modifier.padding(36.dp, HEIGHT_DIFFERENCE, 36.dp, 0.dp)
|
modifier = Modifier.padding(36.dp, HEIGHT_DIFFERENCE, 36.dp, 0.dp)
|
||||||
) {
|
)
|
||||||
Column(horizontalAlignment = Alignment.CenterHorizontally) {
|
|
||||||
Icon(imageVector = Icons.Default.DateRange, contentDescription = "Session")
|
|
||||||
Text(text = "Session")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ExpandedEntry(
|
||||||
|
name: Int,
|
||||||
|
imageVector: ImageVector,
|
||||||
|
onClick: () -> Unit,
|
||||||
|
modifier: Modifier = Modifier
|
||||||
|
) {
|
||||||
|
IconButton(
|
||||||
|
onClick = onClick,
|
||||||
|
modifier = modifier
|
||||||
|
) {
|
||||||
|
Column(horizontalAlignment = Alignment.CenterHorizontally) {
|
||||||
|
Icon(
|
||||||
|
imageVector = imageVector,
|
||||||
|
contentDescription = resources().getString(name),
|
||||||
|
// TODO Dark overlay
|
||||||
|
// tint = colors.surface
|
||||||
|
)
|
||||||
|
Text(
|
||||||
|
text = resources().getString(name),
|
||||||
|
// TODO Dark overlay
|
||||||
|
// color = colors.surface
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun AddButtonPreview() {
|
fun AddButtonPreview() {
|
||||||
|
@ -123,7 +153,7 @@ fun AddButtonPreview() {
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun ExpandedAddButtonPreview() {
|
fun ExpandedAddButtonPreview() {
|
||||||
StudeezTheme { ExpandedAddButton(
|
StudeezTheme { ExpandedAddButton (
|
||||||
addButtonActions = AddButtonActions({}, {}, {})
|
addButtonActions = AddButtonActions({}, {}, {})
|
||||||
) }
|
) }
|
||||||
}
|
}
|
|
@ -56,7 +56,7 @@ fun PrimaryScreenTemplate(
|
||||||
|
|
||||||
bottomBar = { NavigationBar(navigationBarActions) },
|
bottomBar = { NavigationBar(navigationBarActions) },
|
||||||
floatingActionButtonPosition = FabPosition.Center,
|
floatingActionButtonPosition = FabPosition.Center,
|
||||||
isFloatingActionButtonDocked = false,
|
isFloatingActionButtonDocked = true,
|
||||||
floatingActionButton = { AddButton(AddButtonActions(
|
floatingActionButton = { AddButton(AddButtonActions(
|
||||||
onTaskClick = navigationBarActions.onAddTaskClick,
|
onTaskClick = navigationBarActions.onAddTaskClick,
|
||||||
onFriendClick = navigationBarActions.onAddFriendClick,
|
onFriendClick = navigationBarActions.onAddFriendClick,
|
||||||
|
|
|
@ -95,7 +95,7 @@ fun NavigationBar(
|
||||||
)
|
)
|
||||||
|
|
||||||
// Hack to space the entries in the navigation bar, make space for fab
|
// Hack to space the entries in the navigation bar, make space for fab
|
||||||
BottomNavigationItem(icon = {}, onClick = {}, selected = false)
|
BottomNavigationItem(icon = {}, onClick = {}, selected = false, enabled = false)
|
||||||
|
|
||||||
BottomNavigationItem(
|
BottomNavigationItem(
|
||||||
icon = {
|
icon = {
|
||||||
|
|
|
@ -12,7 +12,9 @@ import androidx.compose.ui.graphics.Color
|
||||||
private val DarkColorPalette = darkColors(
|
private val DarkColorPalette = darkColors(
|
||||||
primary = Blue100,
|
primary = Blue100,
|
||||||
primaryVariant = Blue120,
|
primaryVariant = Blue120,
|
||||||
secondary = Yellow100
|
secondary = Yellow100,
|
||||||
|
|
||||||
|
onPrimary = Color.White
|
||||||
)
|
)
|
||||||
|
|
||||||
private val LightColorPalette = lightColors(
|
private val LightColorPalette = lightColors(
|
||||||
|
|
Reference in a new issue