From 80a1c3a3019173832acdb166c41cec4cfb3b8846 Mon Sep 17 00:00:00 2001 From: tobiard Date: Tue, 2 Apr 2024 15:03:46 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20la=20page=20Qui-est-ce=20+=20descr?= =?UTF-8?q?iption=20de=20l'id=C3=A9e=20pour=20la=20suite=20du=20jeu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/.idea/appInsightsSettings.xml | 6 ++ android/.idea/deploymentTargetDropDown.xml | 18 +--- .../fr/iut/sciencequest/navigation/NavHost.kt | 13 +++ .../fr/iut/sciencequest/view/HomeScreen.kt | 11 ++- .../fr/iut/sciencequest/view/games/Qui.kt | 92 +++++++++++++++++++ 5 files changed, 118 insertions(+), 22 deletions(-) create mode 100644 android/.idea/appInsightsSettings.xml create mode 100644 android/app/src/main/java/fr/iut/sciencequest/view/games/Qui.kt diff --git a/android/.idea/appInsightsSettings.xml b/android/.idea/appInsightsSettings.xml new file mode 100644 index 0000000..6bbe2ae --- /dev/null +++ b/android/.idea/appInsightsSettings.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/android/.idea/deploymentTargetDropDown.xml b/android/.idea/deploymentTargetDropDown.xml index 3d7ae4a..0c0c338 100644 --- a/android/.idea/deploymentTargetDropDown.xml +++ b/android/.idea/deploymentTargetDropDown.xml @@ -2,24 +2,8 @@ - - - - - - - - - - - - - - - - - + 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 6e266a8..6773ad6 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 @@ -17,6 +17,7 @@ import fr.iut.sciencequest.view.HomeScreen import fr.iut.sciencequest.view.LoginScreen import fr.iut.sciencequest.view.games.KahootScreen import fr.iut.sciencequest.view.games.PenduScreen +import fr.iut.sciencequest.view.games.QuiScreen import fr.iut.sciencequest.view.scientifiques.scientifiqueListeScreen @@ -42,6 +43,9 @@ fun NavHost(kahotVM: KahootViewModel = viewModel()) { goToKahoot = { kahotVM.lancerPartie() navController.navigate("kahoot") + }, + goToQui = { + navController.navigate("qui") } ) } @@ -89,6 +93,15 @@ fun NavHost(kahotVM: KahootViewModel = viewModel()) { viewModel = kahotVM) } + composable(route= "qui"){ + QuiScreen(goToAccount = { + navController.navigate("account") + }, + goToHome = { + navController.navigate("home") + }) + } + composable(route = "listeScientifiques") { scientifiqueListeScreen(goToAccount = { navController.navigate("account") diff --git a/android/app/src/main/java/fr/iut/sciencequest/view/HomeScreen.kt b/android/app/src/main/java/fr/iut/sciencequest/view/HomeScreen.kt index b4555d0..b816e43 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/view/HomeScreen.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/view/HomeScreen.kt @@ -21,21 +21,22 @@ import fr.iut.sciencequest.ViewModels.KahootViewModel fun HomeScreen(goToHome: () -> Unit, goToAccount: () -> Unit, goToPendu: () -> Unit, - goToKahoot: () -> Unit) { + goToKahoot: () -> Unit, + goToQui: () -> Unit) { Column (modifier = Modifier.fillMaxWidth()){ TopBar(goToAccount, goToHome) - MainContent(goToPendu, goToKahoot) + MainContent(goToPendu, goToKahoot, goToQui) } } @Preview @Composable fun HomeScreenPreview() { - HomeScreen({},{},{}, {}) + HomeScreen({},{},{},{},{}) } @Composable -fun MainContent(goToPendu: () -> Unit, goToKahoot: () -> Unit) { +fun MainContent(goToPendu: () -> Unit, goToKahoot: () -> Unit, goToQui: () -> Unit) { val context = LocalContext.current; val comingSoon = Toast.makeText(context, "Coming soon", Toast.LENGTH_SHORT); @@ -47,7 +48,7 @@ fun MainContent(goToPendu: () -> Unit, goToKahoot: () -> Unit) { Button(onClick = goToKahoot, Modifier.fillMaxWidth()) { Text(text = "Kahoot", fontSize = 13.sp) } - Button(onClick = { comingSoon.show() }, Modifier.fillMaxWidth()) { + Button(onClick = goToQui, Modifier.fillMaxWidth()) { Text(text = "Qui est ce ?", fontSize = 13.sp) } } diff --git a/android/app/src/main/java/fr/iut/sciencequest/view/games/Qui.kt b/android/app/src/main/java/fr/iut/sciencequest/view/games/Qui.kt new file mode 100644 index 0000000..61b749b --- /dev/null +++ b/android/app/src/main/java/fr/iut/sciencequest/view/games/Qui.kt @@ -0,0 +1,92 @@ +package fr.iut.sciencequest.view.games + +import android.widget.Toast +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +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.KahootViewModel +import fr.iut.sciencequest.model.dto.question.QuestionWithSimpleResponseDTO +import fr.iut.sciencequest.model.dto.reponse.ReponseSimpleDTO +import fr.iut.sciencequest.stub.StubQuestionWithReponses +import fr.iut.sciencequest.view.TopBar +import java.util.Timer + +@Composable +fun QuiScreen(viewModel: KahootViewModel = viewModel(), + goToAccount: () -> Unit, + goToHome: () -> Unit) { + val state = viewModel.uiState.collectAsState() + Column(modifier = Modifier.fillMaxWidth()) { + TopBar(goToAccount, goToHome, stringResource(id = R.string.kahoot)) + QuiPlayer(state.value.question) { + viewModel.ajouterPoints(it) + } + } +} + +@Preview +@Composable +fun QuiScreenPreview(){ + QuiScreen(goToAccount = {}, goToHome = {}) +} + + +@Preview +@Composable +fun QuiPlayerPreview(){ + val i = 0 + QuiPlayer(question = StubQuestionWithReponses) {} +} + + +@Composable +fun QuiPlayer(question: QuestionWithSimpleResponseDTO, + sendReponse: (Long) -> Unit){ + val context = LocalContext.current; + val currTime = System.currentTimeMillis() + Column (horizontalAlignment = Alignment.CenterHorizontally){ + QuiQuestion(question = question.question) + QuiReponses(reponses = question.reponses) { + sendReponse(currTime - System.currentTimeMillis()) + Toast.makeText(context, it.reponse, Toast.LENGTH_SHORT).show() + } + } +} + + +@Composable +fun QuiReponses(reponses : List, action: (ReponseSimpleDTO)->Unit) { + LazyVerticalGrid(columns = GridCells.Fixed(2), + contentPadding = PaddingValues(12.dp), + verticalArrangement = Arrangement.spacedBy(10.dp), + horizontalArrangement = Arrangement.spacedBy(10.dp)) { + reponses.forEach { + item() { + Button(onClick = {action(it)}){ + Text(it.reponse) + } + } + } + } +} + +@Composable +fun QuiQuestion(question: String){ + Text(question, textAlign = TextAlign.Center) +} \ No newline at end of file