#18 Move to edit screen on click

This commit is contained in:
Tibo De Peuter 2023-04-16 13:23:51 +02:00
parent 3900e3c18a
commit 3ff4f82298
7 changed files with 58 additions and 18 deletions

View file

@ -20,6 +20,7 @@ import be.ugent.sel.studeez.common.snackbar.SnackbarManager
import be.ugent.sel.studeez.navigation.StudeezDestinations import be.ugent.sel.studeez.navigation.StudeezDestinations
import be.ugent.sel.studeez.screens.home.HomeScreen import be.ugent.sel.studeez.screens.home.HomeScreen
import be.ugent.sel.studeez.screens.log_in.LoginScreen import be.ugent.sel.studeez.screens.log_in.LoginScreen
import be.ugent.sel.studeez.screens.profile.EditProfileScreen
import be.ugent.sel.studeez.screens.profile.ProfileScreen import be.ugent.sel.studeez.screens.profile.ProfileScreen
import be.ugent.sel.studeez.screens.sign_up.SignUpScreen import be.ugent.sel.studeez.screens.sign_up.SignUpScreen
import be.ugent.sel.studeez.screens.splash.SplashScreen import be.ugent.sel.studeez.screens.splash.SplashScreen
@ -77,12 +78,16 @@ fun resources(): Resources {
fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) { fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) {
val openAndPopUp: (String, String) -> Unit = { val goBack: () -> Unit = {
route, popUp -> appState.navigateAndPopUp(route, popUp) appState.popUp()
} }
val open: (String) -> Unit = { val open: (String) -> Unit = {
route -> appState.navigate(route) route -> appState.navigate(route)
}
val openAndPopUp: (String, String) -> Unit = {
route, popUp -> appState.navigateAndPopUp(route, popUp)
} }
composable(StudeezDestinations.SPLASH_SCREEN) { composable(StudeezDestinations.SPLASH_SCREEN) {
@ -110,4 +115,9 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) {
// TODO Timers screen // TODO Timers screen
// TODO Settings screen // TODO Settings screen
// Edit screens
composable(StudeezDestinations.EDIT_PROFILE_SCREEN) {
EditProfileScreen(goBack)
}
} }

View file

@ -12,4 +12,7 @@ object StudeezDestinations {
// const val TIMERS_SCREEN = "timers" // const val TIMERS_SCREEN = "timers"
// const val SETTINGS_SCREEN = "settings" // const val SETTINGS_SCREEN = "settings"
// Edit screens
const val EDIT_PROFILE_SCREEN = "edit_profile"
} }

View file

@ -2,7 +2,6 @@ package be.ugent.sel.studeez.screens.navbar
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
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.PROFILE_SCREEN import be.ugent.sel.studeez.navigation.StudeezDestinations.PROFILE_SCREEN
import be.ugent.sel.studeez.screens.StudeezViewModel import be.ugent.sel.studeez.screens.StudeezViewModel

View file

@ -0,0 +1,31 @@
package be.ugent.sel.studeez.screens.profile
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import be.ugent.sel.studeez.R
import be.ugent.sel.studeez.common.composable.SecondaryScreenTemplate
import be.ugent.sel.studeez.resources
import be.ugent.sel.studeez.ui.theme.StudeezTheme
@Composable
fun EditProfileScreen(
goBack: () -> Unit
) {
SecondaryScreenTemplate(
title = resources().getString(R.string.editing_profile),
popUp = goBack
) {
Text(text = "TODO")
}
}
@Preview
@Composable
fun EditProfileScreenComposable() {
StudeezTheme {
EditProfileScreen {
{}
}
}
}

View file

@ -27,15 +27,17 @@ fun ProfileScreen(
title = resources().getString(AppText.profile), title = resources().getString(AppText.profile),
open = open, open = open,
openAndPopUp = openAndPopUp, openAndPopUp = openAndPopUp,
action = { EditAction() } action = { EditAction { viewModel.onEditProfileClick(open) } }
) { ) {
Headline(text = (username ?: resources().getString(R.string.no_username))) Headline(text = (username ?: resources().getString(R.string.no_username)))
} }
} }
@Composable @Composable
fun EditAction() { fun EditAction(
IconButton(onClick = { /*TODO*/ }) { onClick: () -> Unit
) {
IconButton(onClick = onClick) {
Icon( Icon(
imageVector = Icons.Default.Edit, imageVector = Icons.Default.Edit,
contentDescription = resources().getString(AppText.edit_profile) contentDescription = resources().getString(AppText.edit_profile)

View file

@ -1,20 +1,10 @@
package be.ugent.sel.studeez.screens.profile package be.ugent.sel.studeez.screens.profile
import androidx.compose.runtime.rememberCoroutineScope
import androidx.lifecycle.viewModelScope
import be.ugent.sel.studeez.R
import be.ugent.sel.studeez.domain.LogService import be.ugent.sel.studeez.domain.LogService
import be.ugent.sel.studeez.domain.UserDAO import be.ugent.sel.studeez.domain.UserDAO
import be.ugent.sel.studeez.resources import be.ugent.sel.studeez.navigation.StudeezDestinations
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.CoroutineScope
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
import javax.inject.Inject import javax.inject.Inject
@HiltViewModel @HiltViewModel
@ -27,4 +17,8 @@ class ProfileViewModel @Inject constructor(
return userDAO.getUsername() return userDAO.getUsername()
} }
fun onEditProfileClick(open: (String) -> Unit) {
open(StudeezDestinations.EDIT_PROFILE_SCREEN)
}
} }

View file

@ -40,6 +40,7 @@
<string name="profile">Profile</string> <string name="profile">Profile</string>
<string name="no_username">Unknown username</string> <string name="no_username">Unknown username</string>
<string name="edit_profile">Edit profile</string> <string name="edit_profile">Edit profile</string>
<string name="editing_profile">Editing profile</string>
<!-- Friends --> <!-- Friends -->
<string name="friends">Friends</string> <string name="friends">Friends</string>