diff --git a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/LoginViewModel.kt b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/LoginViewModel.kt new file mode 100644 index 0000000..2f99c5a --- /dev/null +++ b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/LoginViewModel.kt @@ -0,0 +1,17 @@ +package fr.iut.sciencequest.ViewModels + +import androidx.lifecycle.ViewModel +import fr.iut.sciencequest.ViewModels.UiStates.LoginUIState +import kotlinx.coroutines.flow.MutableStateFlow + +class LoginViewModel: ViewModel() { + var uiState = MutableStateFlow(LoginUIState()) + + fun setPseudo(pseudo: String) { + uiState.value = LoginUIState(pseudo, uiState.value.mdp) + } + + fun setMdp(mdp: String) { + uiState.value = LoginUIState(uiState.value.pseudo, mdp) + } +} \ No newline at end of file diff --git a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/LoginUIState.kt b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/LoginUIState.kt new file mode 100644 index 0000000..bf2161f --- /dev/null +++ b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/LoginUIState.kt @@ -0,0 +1,6 @@ +package fr.iut.sciencequest.ViewModels.UiStates + +data class LoginUIState ( + val pseudo: String = "Pseudo", + val mdp: String = "Mot de passe" +) \ No newline at end of file diff --git a/android/app/src/main/java/fr/iut/sciencequest/navigation/NavHost.kt b/android/app/src/main/java/fr/iut/sciencequest/navigation/NavHost.kt index b7d2f9c..376ff10 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/navigation/NavHost.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/navigation/NavHost.kt @@ -24,7 +24,7 @@ fun NavHost(context: Context) { NavHost( modifier = Modifier.fillMaxSize(), navController = navController, - startDestination = "pendu" + startDestination = "login" ) { composable(route = "home") { HomeScreen( diff --git a/android/app/src/main/java/fr/iut/sciencequest/view/Login.kt b/android/app/src/main/java/fr/iut/sciencequest/view/Login.kt index be32308..2661008 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/view/Login.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/view/Login.kt @@ -13,6 +13,7 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -27,44 +28,41 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.lifecycle.viewmodel.compose.viewModel import fr.iut.sciencequest.R +import fr.iut.sciencequest.ViewModels.LoginViewModel @Composable -fun LoginScreen(goToAccount: () -> Unit, goToHome: () -> Unit) { +fun LoginScreen(viewModel: LoginViewModel = viewModel(), + goToAccount: () -> Unit, + goToHome: () -> Unit) { Scaffold( topBar = { TopBar(goToAccount, goToHome, stringResource(id = R.string.connection)) }, ) { innerPadding -> - LoginContainer(Modifier.padding(innerPadding)) + LoginContainer(viewModel, Modifier.padding(innerPadding)) } } @Composable -fun LoginContainer(modifier: Modifier) { +fun LoginContainer(viewModel: LoginViewModel, + modifier: Modifier) { + val state = viewModel.uiState.collectAsState() Column( modifier = modifier.fillMaxHeight(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { - val defaultPseudo = stringResource(id = R.string.Pseudo) - var pseudo by remember { - mutableStateOf(defaultPseudo) - } - val defaultMdp = stringResource(id = R.string.mdp) - var mdp by remember { - mutableStateOf(defaultMdp) - } - //Text(text = stringResource(id = R.string.connection)) - TextField(value = pseudo , - onValueChange = { pseudo = it }, + TextField(value = state.value.pseudo, + onValueChange = { viewModel.setPseudo(it) }, modifier = Modifier .padding(20.dp) - .fillMaxWidth() + .fillMaxWidth(), ) - TextField(value = mdp, - onValueChange = { mdp = it }, + TextField(value = state.value.mdp, + onValueChange = { viewModel.setMdp(it) }, modifier = Modifier .padding(20.dp) .fillMaxWidth() @@ -82,7 +80,7 @@ fun LoginContainer(modifier: Modifier) { textDecoration = TextDecoration.Underline, color = colorResource(id = R.color.purple_200) ), - onClick = registerPopup() + onClick = { }/*TODO*/ //registerPopup() ) }