#52 fix dankzij Lukas tysm

This commit is contained in:
Tibo De Peuter 2023-04-13 13:06:13 +02:00
parent 12fe0c852e
commit 0d65637d91
5 changed files with 14 additions and 68 deletions

View file

@ -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")
}
}

View file

@ -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)

View file

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

View file

@ -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() {}
) {} ) {}
} }
} }

View file

@ -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)
}