#52 fix dankzij Lukas tysm
This commit is contained in:
parent
12fe0c852e
commit
0d65637d91
5 changed files with 14 additions and 68 deletions
|
@ -1,9 +1,7 @@
|
||||||
package be.ugent.sel.studeez.common.composable
|
package be.ugent.sel.studeez.common.composable
|
||||||
|
|
||||||
import androidx.compose.foundation.Image
|
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.*
|
||||||
import androidx.compose.material.Divider
|
|
||||||
import androidx.compose.material.Icon
|
import androidx.compose.material.Icon
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
|
@ -13,25 +11,19 @@ import androidx.compose.material.icons.outlined.Info
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.vector.ImageVector
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
import androidx.compose.ui.res.painterResource
|
|
||||||
import androidx.compose.ui.res.stringResource
|
|
||||||
import androidx.compose.ui.res.vectorResource
|
import androidx.compose.ui.res.vectorResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import be.ugent.sel.studeez.R
|
import be.ugent.sel.studeez.R
|
||||||
|
import be.ugent.sel.studeez.data.local.models.User
|
||||||
import be.ugent.sel.studeez.resources
|
import be.ugent.sel.studeez.resources
|
||||||
import be.ugent.sel.studeez.ui.theme.StudeezTheme
|
import be.ugent.sel.studeez.ui.theme.StudeezTheme
|
||||||
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun Drawer(
|
fun Drawer(
|
||||||
currentUser: String,
|
|
||||||
onLogoutClick: () -> Unit
|
onLogoutClick: () -> Unit
|
||||||
) {
|
) {
|
||||||
Column(modifier = Modifier.fillMaxSize()) {
|
Column(modifier = Modifier.fillMaxSize()) {
|
||||||
LoggedInUserCard(currentUser)
|
|
||||||
|
|
||||||
Divider()
|
|
||||||
|
|
||||||
DrawerEntry(
|
DrawerEntry(
|
||||||
icon = Icons.Default.Home,
|
icon = Icons.Default.Home,
|
||||||
text = resources().getString(R.string.home)
|
text = resources().getString(R.string.home)
|
||||||
|
@ -87,39 +79,12 @@ fun DrawerEntry(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
|
||||||
fun LoggedInUserCard(
|
|
||||||
username: String
|
|
||||||
) {
|
|
||||||
Column() {
|
|
||||||
// TODO Profile picture of current user
|
|
||||||
Image(
|
|
||||||
painter = painterResource(id = R.drawable.ic_launcher_background),
|
|
||||||
contentDescription = stringResource(R.string.profile_picture_description)
|
|
||||||
)
|
|
||||||
|
|
||||||
Text(text = username)
|
|
||||||
|
|
||||||
// TODO Description of user (normal user or something else?)
|
|
||||||
Text(text = stringResource(id = R.string.user_description))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun DrawerPreview() {
|
fun DrawerPreview() {
|
||||||
StudeezTheme {
|
StudeezTheme {
|
||||||
Drawer(
|
Drawer(
|
||||||
"John Doe",
|
|
||||||
{}
|
{}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Preview
|
|
||||||
@Composable
|
|
||||||
fun LoggedInUserCardPreview() {
|
|
||||||
StudeezTheme {
|
|
||||||
LoggedInUserCard("John Doe")
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,10 +1,8 @@
|
||||||
package be.ugent.sel.studeez.screens.home
|
package be.ugent.sel.studeez.screens.home
|
||||||
|
|
||||||
import androidx.compose.material.rememberScaffoldState
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
|
||||||
import be.ugent.sel.studeez.R
|
import be.ugent.sel.studeez.R
|
||||||
import be.ugent.sel.studeez.common.composable.BasicButton
|
import be.ugent.sel.studeez.common.composable.BasicButton
|
||||||
import be.ugent.sel.studeez.common.ext.basicButton
|
import be.ugent.sel.studeez.common.ext.basicButton
|
||||||
|
@ -16,12 +14,9 @@ fun HomeScreen(
|
||||||
openAndPopUp: (String, String) -> Unit,
|
openAndPopUp: (String, String) -> Unit,
|
||||||
viewModel: HomeViewModel = hiltViewModel()
|
viewModel: HomeViewModel = hiltViewModel()
|
||||||
) {
|
) {
|
||||||
|
|
||||||
PrimaryScreen(
|
PrimaryScreen(
|
||||||
title = resources().getString(R.string.home),
|
title = resources().getString(R.string.home),
|
||||||
openDrawer = { viewModel.openDrawer() },
|
onLogoutClick = { viewModel.onLogoutClick(openAndPopUp) }
|
||||||
onLogoutClick = { viewModel.onLogoutClick(openAndPopUp) },
|
|
||||||
viewModel.scaffoldState
|
|
||||||
) {
|
) {
|
||||||
BasicButton(R.string.start_session, Modifier.basicButton()) {
|
BasicButton(R.string.start_session, Modifier.basicButton()) {
|
||||||
viewModel.onStartSessionClick(openAndPopUp)
|
viewModel.onStartSessionClick(openAndPopUp)
|
||||||
|
|
|
@ -2,12 +2,14 @@ package be.ugent.sel.studeez.screens.home
|
||||||
|
|
||||||
import androidx.compose.material.ScaffoldState
|
import androidx.compose.material.ScaffoldState
|
||||||
import androidx.compose.material.rememberScaffoldState
|
import androidx.compose.material.rememberScaffoldState
|
||||||
|
import be.ugent.sel.studeez.data.local.models.User
|
||||||
import be.ugent.sel.studeez.domain.AccountDAO
|
import be.ugent.sel.studeez.domain.AccountDAO
|
||||||
import be.ugent.sel.studeez.domain.LogService
|
import be.ugent.sel.studeez.domain.LogService
|
||||||
import be.ugent.sel.studeez.navigation.StudeezDestinations.HOME_SCREEN
|
import be.ugent.sel.studeez.navigation.StudeezDestinations.HOME_SCREEN
|
||||||
import be.ugent.sel.studeez.navigation.StudeezDestinations.LOGIN_SCREEN
|
import be.ugent.sel.studeez.navigation.StudeezDestinations.LOGIN_SCREEN
|
||||||
import be.ugent.sel.studeez.screens.StudeezViewModel
|
import be.ugent.sel.studeez.screens.StudeezViewModel
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
|
@ -15,7 +17,6 @@ class HomeViewModel @Inject constructor(
|
||||||
private val accountDAO: AccountDAO,
|
private val accountDAO: AccountDAO,
|
||||||
logService: LogService
|
logService: LogService
|
||||||
) : StudeezViewModel(logService) {
|
) : StudeezViewModel(logService) {
|
||||||
val scaffoldState: ScaffoldState = rememberScaffoldState()
|
|
||||||
|
|
||||||
fun onStartSessionClick(openAndPopUp: (String, String) -> Unit) {
|
fun onStartSessionClick(openAndPopUp: (String, String) -> Unit) {
|
||||||
// TODO openAndPopUp(StudeezDestinations.xxx, StudeezDestinations.HOME_SCREEN)
|
// TODO openAndPopUp(StudeezDestinations.xxx, StudeezDestinations.HOME_SCREEN)
|
||||||
|
@ -27,10 +28,4 @@ class HomeViewModel @Inject constructor(
|
||||||
openAndPopup(LOGIN_SCREEN, HOME_SCREEN)
|
openAndPopup(LOGIN_SCREEN, HOME_SCREEN)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun openDrawer() {
|
|
||||||
launchCatching {
|
|
||||||
scaffoldState.drawerState.open()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -5,22 +5,26 @@ import androidx.compose.material.*
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.Menu
|
import androidx.compose.material.icons.filled.Menu
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.rememberCoroutineScope
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import be.ugent.sel.studeez.R
|
import be.ugent.sel.studeez.R
|
||||||
import be.ugent.sel.studeez.common.composable.CollapsedAddButton
|
import be.ugent.sel.studeez.common.composable.CollapsedAddButton
|
||||||
import be.ugent.sel.studeez.common.composable.Drawer
|
import be.ugent.sel.studeez.common.composable.Drawer
|
||||||
import be.ugent.sel.studeez.common.composable.NavigationBar
|
import be.ugent.sel.studeez.common.composable.NavigationBar
|
||||||
|
import be.ugent.sel.studeez.data.local.models.User
|
||||||
import be.ugent.sel.studeez.resources
|
import be.ugent.sel.studeez.resources
|
||||||
import be.ugent.sel.studeez.ui.theme.StudeezTheme
|
import be.ugent.sel.studeez.ui.theme.StudeezTheme
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun PrimaryScreen(
|
fun PrimaryScreen(
|
||||||
title: String,
|
title: String,
|
||||||
openDrawer: () -> Unit,
|
|
||||||
onLogoutClick: () -> Unit,
|
onLogoutClick: () -> Unit,
|
||||||
scaffoldState: ScaffoldState,
|
|
||||||
content: @Composable (PaddingValues) -> Unit
|
content: @Composable (PaddingValues) -> Unit
|
||||||
) {
|
) {
|
||||||
|
val scaffoldState: ScaffoldState = rememberScaffoldState()
|
||||||
|
val coroutineScope: CoroutineScope = rememberCoroutineScope()
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
scaffoldState = scaffoldState,
|
scaffoldState = scaffoldState,
|
||||||
|
@ -28,7 +32,9 @@ fun PrimaryScreen(
|
||||||
topBar = { TopAppBar(
|
topBar = { TopAppBar(
|
||||||
title = { Text(text = title) },
|
title = { Text(text = title) },
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { openDrawer() }) {
|
IconButton(onClick = {
|
||||||
|
coroutineScope.launch { scaffoldState.drawerState.open() }
|
||||||
|
}) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Default.Menu,
|
imageVector = Icons.Default.Menu,
|
||||||
contentDescription = resources().getString(R.string.menu)
|
contentDescription = resources().getString(R.string.menu)
|
||||||
|
@ -39,7 +45,6 @@ fun PrimaryScreen(
|
||||||
|
|
||||||
drawerContent = {
|
drawerContent = {
|
||||||
Drawer(
|
Drawer(
|
||||||
currentUser = "TODO John Doe",
|
|
||||||
onLogoutClick = { onLogoutClick() }
|
onLogoutClick = { onLogoutClick() }
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
@ -59,7 +64,7 @@ fun PrimaryScreenPreview() {
|
||||||
StudeezTheme {
|
StudeezTheme {
|
||||||
PrimaryScreen(
|
PrimaryScreen(
|
||||||
"Preview screen",
|
"Preview screen",
|
||||||
{}, {}, rememberScaffoldState()
|
{}
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,14 +0,0 @@
|
||||||
package be.ugent.sel.studeez.screens.templates.primary_screen
|
|
||||||
|
|
||||||
import androidx.compose.material.ScaffoldState
|
|
||||||
import androidx.compose.material.rememberScaffoldState
|
|
||||||
import androidx.compose.runtime.Composable
|
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import be.ugent.sel.studeez.StudeezAppstate
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
fun rememberPrimaryScreenState(
|
|
||||||
scaffoldState: ScaffoldState = rememberScaffoldState()
|
|
||||||
) = remember(scaffoldState) {
|
|
||||||
StudeezAppstate(scaffoldState)
|
|
||||||
}
|
|
Reference in a new issue