New DrawerScreen for TimerOverView
This commit is contained in:
		
							parent
							
								
									c73c06b11c
								
							
						
					
					
						commit
						7b3a82cc30
					
				
					 3 changed files with 59 additions and 18 deletions
				
			
		| 
						 | 
				
			
			@ -141,8 +141,7 @@ fun StudeezNavGraph(
 | 
			
		|||
                open,
 | 
			
		||||
                openAndPopUp,
 | 
			
		||||
                viewModel = hiltViewModel(),
 | 
			
		||||
                drawerViewModel = drawerViewModel,
 | 
			
		||||
                navBarViewModel = navBarViewModel,
 | 
			
		||||
                drawerViewModel = drawerViewModel
 | 
			
		||||
            )
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
package be.ugent.sel.studeez.common.composable
 | 
			
		||||
 | 
			
		||||
import androidx.compose.foundation.layout.PaddingValues
 | 
			
		||||
import androidx.compose.foundation.layout.RowScope
 | 
			
		||||
import androidx.compose.material.*
 | 
			
		||||
import androidx.compose.material.icons.Icons
 | 
			
		||||
import androidx.compose.material.icons.filled.Menu
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.runtime.rememberCoroutineScope
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.drawer.Drawer
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.drawer.DrawerActions
 | 
			
		||||
import be.ugent.sel.studeez.resources
 | 
			
		||||
import kotlinx.coroutines.CoroutineScope
 | 
			
		||||
import kotlinx.coroutines.launch
 | 
			
		||||
import be.ugent.sel.studeez.R.string as AppText
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun DrawerScreenTemplate(
 | 
			
		||||
    title: String,
 | 
			
		||||
    drawerActions: DrawerActions,
 | 
			
		||||
    action: @Composable RowScope.() -> Unit = {},
 | 
			
		||||
    content: @Composable (PaddingValues) -> Unit
 | 
			
		||||
) {
 | 
			
		||||
    val scaffoldState: ScaffoldState = rememberScaffoldState()
 | 
			
		||||
    val coroutineScope: CoroutineScope = rememberCoroutineScope()
 | 
			
		||||
 | 
			
		||||
    Scaffold(
 | 
			
		||||
        scaffoldState = scaffoldState,
 | 
			
		||||
 | 
			
		||||
        topBar = { TopAppBar(
 | 
			
		||||
            title = { Text(text = title) },
 | 
			
		||||
            navigationIcon = {
 | 
			
		||||
                IconButton(onClick = {
 | 
			
		||||
                    coroutineScope.launch { scaffoldState.drawerState.open() }
 | 
			
		||||
                }) {
 | 
			
		||||
                    Icon(
 | 
			
		||||
                        imageVector = Icons.Default.Menu,
 | 
			
		||||
                        contentDescription = resources().getString(AppText.menu)
 | 
			
		||||
                    )
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            actions = action
 | 
			
		||||
        )},
 | 
			
		||||
 | 
			
		||||
        drawerContent = {
 | 
			
		||||
            Drawer(drawerActions)
 | 
			
		||||
        }
 | 
			
		||||
    ) {
 | 
			
		||||
        content(it)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -10,10 +10,7 @@ import androidx.compose.ui.Modifier
 | 
			
		|||
import androidx.compose.ui.tooling.preview.Preview
 | 
			
		||||
import androidx.compose.ui.unit.dp
 | 
			
		||||
import be.ugent.sel.studeez.R
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.BasicButton
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.PrimaryScreenTemplate
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.StealthButton
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.TimerEntry
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.*
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.drawer.DrawerActions
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.drawer.DrawerViewModel
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.drawer.getDrawerActions
 | 
			
		||||
| 
						 | 
				
			
			@ -48,30 +45,25 @@ fun TimerOverviewRoute(
 | 
			
		|||
    open: (String) -> Unit,
 | 
			
		||||
    openAndPopUp: (String, String) -> Unit,
 | 
			
		||||
    viewModel: TimerOverviewViewModel,
 | 
			
		||||
    drawerViewModel: DrawerViewModel,
 | 
			
		||||
    navBarViewModel: NavigationBarViewModel,
 | 
			
		||||
    drawerViewModel: DrawerViewModel
 | 
			
		||||
) {
 | 
			
		||||
    TimerOverviewScreen(
 | 
			
		||||
        timerOverviewActions = getTimerOverviewActions(viewModel),
 | 
			
		||||
        drawerActions = getDrawerActions(drawerViewModel, open, openAndPopUp),
 | 
			
		||||
        navigationBarActions = getNavigationBarActions(navBarViewModel, open),
 | 
			
		||||
        drawerActions = getDrawerActions(drawerViewModel, open, openAndPopUp)
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun TimerOverviewScreen(
 | 
			
		||||
    timerOverviewActions: TimerOverviewActions,
 | 
			
		||||
    drawerActions: DrawerActions,
 | 
			
		||||
    navigationBarActions: NavigationBarActions,
 | 
			
		||||
    drawerActions: DrawerActions
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    val timers = timerOverviewActions.getUserTimers().collectAsState(initial = emptyList())
 | 
			
		||||
 | 
			
		||||
    // TODO moet geen primary screen zijn: geen navbar nodig
 | 
			
		||||
    PrimaryScreenTemplate(
 | 
			
		||||
    DrawerScreenTemplate(
 | 
			
		||||
        title = resources().getString(R.string.timers),
 | 
			
		||||
        drawerActions = drawerActions,
 | 
			
		||||
        navigationBarActions = navigationBarActions,
 | 
			
		||||
        drawerActions = drawerActions
 | 
			
		||||
    ) {
 | 
			
		||||
        Column {
 | 
			
		||||
            LazyColumn(
 | 
			
		||||
| 
						 | 
				
			
			@ -112,7 +104,6 @@ fun TimerOverviewPreview() {
 | 
			
		|||
            { flowOf() },
 | 
			
		||||
            { listOf(customTimer, customTimer) },
 | 
			
		||||
            {}),
 | 
			
		||||
        drawerActions = DrawerActions({}, {}, {}, {}, {}),
 | 
			
		||||
        navigationBarActions = NavigationBarActions({}, {}, {}, {})
 | 
			
		||||
        drawerActions = DrawerActions({}, {}, {}, {}, {})
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue