From ffb8234e1937f8cd8dafb40d07d196ddf79a54fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luc=C3=A0s?= <86352901+LucasVbr@users.noreply.github.com> Date: Mon, 13 Jan 2025 17:57:17 +0100 Subject: [PATCH] feat: Add score screen --- .../java/fr/univpau/queezer/MainActivity.kt | 9 +- .../fr/univpau/queezer/manager/GameManager.kt | 9 +- .../queezer/manager/SettingsManager.kt | 4 +- .../fr/univpau/queezer/screen/ScoreScreen.kt | 164 ------------ .../queezer/view/components/GameCardItem.kt | 92 +++++++ .../view/components/GameCardItemList.kt | 26 ++ .../queezer/view/components/TrackCardItem.kt | 59 +++++ .../view/components/TrackCardItemList.kt | 21 ++ .../{screen => view/screens}/GameScreen.kt | 4 +- .../{screen => view/screens}/HomeScreen.kt | 2 +- .../queezer/view/screens/ScoreScreen.kt | 236 ++++++++++++++++++ .../screens}/SettingsScreen.kt | 2 +- 12 files changed, 445 insertions(+), 183 deletions(-) delete mode 100644 app/src/main/java/fr/univpau/queezer/screen/ScoreScreen.kt create mode 100644 app/src/main/java/fr/univpau/queezer/view/components/GameCardItem.kt create mode 100644 app/src/main/java/fr/univpau/queezer/view/components/GameCardItemList.kt create mode 100644 app/src/main/java/fr/univpau/queezer/view/components/TrackCardItem.kt create mode 100644 app/src/main/java/fr/univpau/queezer/view/components/TrackCardItemList.kt rename app/src/main/java/fr/univpau/queezer/{screen => view/screens}/GameScreen.kt (98%) rename app/src/main/java/fr/univpau/queezer/{screen => view/screens}/HomeScreen.kt (98%) create mode 100644 app/src/main/java/fr/univpau/queezer/view/screens/ScoreScreen.kt rename app/src/main/java/fr/univpau/queezer/{screen => view/screens}/SettingsScreen.kt (99%) diff --git a/app/src/main/java/fr/univpau/queezer/MainActivity.kt b/app/src/main/java/fr/univpau/queezer/MainActivity.kt index 3ab91c3..25d69d6 100644 --- a/app/src/main/java/fr/univpau/queezer/MainActivity.kt +++ b/app/src/main/java/fr/univpau/queezer/MainActivity.kt @@ -1,17 +1,16 @@ package fr.univpau.queezer import android.os.Bundle -import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.runtime.Composable import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController -import fr.univpau.queezer.screen.GameScreen -import fr.univpau.queezer.screen.HomeScreen -import fr.univpau.queezer.screen.ScoreScreen -import fr.univpau.queezer.screen.SettingsScreen +import fr.univpau.queezer.view.screens.GameScreen +import fr.univpau.queezer.view.screens.HomeScreen +import fr.univpau.queezer.view.screens.ScoreScreen +import fr.univpau.queezer.view.screens.SettingsScreen import fr.univpau.queezer.service.DatabaseService import fr.univpau.queezer.viewmodel.GameViewModel diff --git a/app/src/main/java/fr/univpau/queezer/manager/GameManager.kt b/app/src/main/java/fr/univpau/queezer/manager/GameManager.kt index b235c89..33f6d10 100644 --- a/app/src/main/java/fr/univpau/queezer/manager/GameManager.kt +++ b/app/src/main/java/fr/univpau/queezer/manager/GameManager.kt @@ -32,7 +32,7 @@ class GameManager() { constructor(settings: Settings, playlist: Playlist, onTick: () -> Unit, databaseService: DatabaseService) : this() { this.databaseService = databaseService this.settings = settings - this.playlist = playlist + this.playlist = Playlist(playlist.title, playlist.tracks.subList(0, settings.numberOfTitles!!)) this.countDownManager = CountdownManager(30000L, onTickTimer = onTick, onFinishTimer = { nextTrack() }) @@ -109,12 +109,7 @@ class GameManager() { fun nextTrack() { mediaPlayer.release() - - if (currentTrackIndex >= playlist.tracks.size - 1) { - return; // TODO vérifier avant meme de lancer la partie si le nombre de titres est suffisant - } - - if (currentTrackIndex >= settings.numberOfTitles!! - 1) { + if (currentTrackIndex + 1 >= playlist.tracks.size) { gameFinished = true return; } diff --git a/app/src/main/java/fr/univpau/queezer/manager/SettingsManager.kt b/app/src/main/java/fr/univpau/queezer/manager/SettingsManager.kt index c1682e7..aca596e 100644 --- a/app/src/main/java/fr/univpau/queezer/manager/SettingsManager.kt +++ b/app/src/main/java/fr/univpau/queezer/manager/SettingsManager.kt @@ -26,7 +26,5 @@ fun loadSettings(context: Context): Settings { // Si le JSON n'est pas null, le convertir en objet Settings return if (json != null) { Gson().fromJson(json, Settings::class.java) - } else { - Settings() - } + } else Settings() } diff --git a/app/src/main/java/fr/univpau/queezer/screen/ScoreScreen.kt b/app/src/main/java/fr/univpau/queezer/screen/ScoreScreen.kt deleted file mode 100644 index b05189d..0000000 --- a/app/src/main/java/fr/univpau/queezer/screen/ScoreScreen.kt +++ /dev/null @@ -1,164 +0,0 @@ -package fr.univpau.queezer.screen - -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Button -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.livedata.observeAsState -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import androidx.navigation.NavHostController -import fr.univpau.queezer.R -import fr.univpau.queezer.data.Game -import fr.univpau.queezer.viewmodel.GameViewModel - -@Composable -fun ScoreScreen(navController: NavHostController, gameViewModel: GameViewModel) { - val context = LocalContext.current - val gameList : List? = gameViewModel.games.observeAsState().value - - Column( - modifier = Modifier - .fillMaxSize() - .padding(16.dp), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(16.dp) - ) { - // Titre des paramètres - Text( - text = context.resources.getString(R.string.score), - fontSize = 32.sp, - modifier = Modifier.padding(bottom = 32.dp) - ) - - // Nombre de parties jouées - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text( - text = context.resources.getString(R.string.games_played), - fontSize = 24.sp, - ) - if (gameList?.isNotEmpty() == true) { - Text( - text = gameList.size.toString(), - fontSize = 24.sp, - ) - } else { - Text( - text = "0", - fontSize = 24.sp, - ) - } - - } - - // pourcentage de réussite moyen - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text( - text = context.resources.getString(R.string.average_success_rate), - fontSize = 24.sp, - ) - if (gameList?.isNotEmpty() == true) { - Text( - text = (gameList.sumOf { it.score }.div(gameList.size).toString()) + "%", - fontSize = 24.sp, - ) - } else { - Text( - text = "0%", - fontSize = 24.sp, - ) - } - } - - // filtres - // - date - // - mode de jeu –titre/artiste/les deux - // - nombre de titres - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text( - text = context.resources.getString(R.string.filters), - fontSize = 24.sp, - ) - - Row( - horizontalArrangement = Arrangement.SpaceBetween - ){ - Button( - onClick = { /* TODO: Filtre par date */ }, - shape = RoundedCornerShape(8.dp), - modifier = Modifier - .padding(vertical = 8.dp) - ) { - Text(context.resources.getString(R.string.date)) - } - - Button( - onClick = { /* TODO: Filtre par date */ }, - shape = RoundedCornerShape(8.dp), - modifier = Modifier - .padding(vertical = 8.dp) - ) { - Text("Mode de jeu") - } - - Button( - onClick = { /* TODO: Filtre par date */ }, - shape = RoundedCornerShape(8.dp), - modifier = Modifier - .padding(vertical = 8.dp) - ) { - Text("Nombre de titres") - } - } - } - - // Historique des parties (score, nom) - // - cliquer sur une partie pour voir les détails - - gameList?.forEach { - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text( - text = it.playlist.title, - fontSize = 24.sp, - ) - Text( - text = it.score.toString(), - fontSize = 24.sp, - ) - } - } - - Button( - onClick = { navController.navigate("home") }, - shape = RoundedCornerShape(8.dp), - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 8.dp) - ) { - Text(context.resources.getString(R.string.back)) - } - - } -} \ No newline at end of file diff --git a/app/src/main/java/fr/univpau/queezer/view/components/GameCardItem.kt b/app/src/main/java/fr/univpau/queezer/view/components/GameCardItem.kt new file mode 100644 index 0000000..a2c41cf --- /dev/null +++ b/app/src/main/java/fr/univpau/queezer/view/components/GameCardItem.kt @@ -0,0 +1,92 @@ +package fr.univpau.queezer.view.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Card +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import fr.univpau.queezer.data.Game +import fr.univpau.queezer.data.GameMode +import java.text.SimpleDateFormat +import java.util.Locale + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun GameCardItem(game: Game) { + val formatter = SimpleDateFormat("dd MMMM yyyy", Locale.getDefault()) + val showBottomSheet = remember { mutableStateOf(false) } + val coroutineScope = rememberCoroutineScope() + + val maxScore: Int = if (game.settings.gameMode == GameMode.ALL) { + (game.settings.numberOfTitles ?: 1) * 2 + } else { + (game.settings.numberOfTitles ?: 1) + } + + Card( + onClick = { showBottomSheet.value = true }, + modifier = Modifier.fillMaxWidth() + ) { + Column( + modifier = Modifier.padding(16.dp) + ) { + Text( + text = game.playlist.title, + fontSize = 14.sp, + fontWeight = FontWeight.SemiBold + ) + Text(text = formatter.format(game.date)) + + Text(text = "${game.score}/$maxScore") + } + } + + // Modal BottomSheet + if (showBottomSheet.value) { + ModalBottomSheet( + onDismissRequest = { + showBottomSheet.value = false // Fermer la BottomSheet au clic en dehors + } + ) { + // Contenu de la BottomSheet + Column( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = game.playlist.title, + style = MaterialTheme.typography.titleMedium + ) + Text( + text = "${game.score}/$maxScore", + style = MaterialTheme.typography.titleMedium + ) + } + Text( + text = formatter.format(game.date), + ) + + TrackCardItemList(game.playlist.tracks) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/univpau/queezer/view/components/GameCardItemList.kt b/app/src/main/java/fr/univpau/queezer/view/components/GameCardItemList.kt new file mode 100644 index 0000000..69850ee --- /dev/null +++ b/app/src/main/java/fr/univpau/queezer/view/components/GameCardItemList.kt @@ -0,0 +1,26 @@ +package fr.univpau.queezer.view.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import fr.univpau.queezer.data.Game + +@Composable +fun GameCardItemList(games: List) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp) + .verticalScroll(rememberScrollState()), + + verticalArrangement = Arrangement.spacedBy(16.dp), + ) { + for (game in games) GameCardItem(game) + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/univpau/queezer/view/components/TrackCardItem.kt b/app/src/main/java/fr/univpau/queezer/view/components/TrackCardItem.kt new file mode 100644 index 0000000..a0238d8 --- /dev/null +++ b/app/src/main/java/fr/univpau/queezer/view/components/TrackCardItem.kt @@ -0,0 +1,59 @@ +package fr.univpau.queezer.view.components + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Card +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import fr.univpau.queezer.data.Answer +import fr.univpau.queezer.data.Track + +@Composable +fun TrackCardItem(track: Track) { + val titleColor = when (track.title.answer) { + Answer.CORRECT -> { + MaterialTheme.colorScheme.primary + } + Answer.INCORRECT -> { + MaterialTheme.colorScheme.error + } + else -> { + MaterialTheme.colorScheme.onSurface + } + } + + val artistColor = when (track.artist.answer) { + Answer.CORRECT -> { + MaterialTheme.colorScheme.primary + } + Answer.INCORRECT -> { + MaterialTheme.colorScheme.error + } + else -> { + MaterialTheme.colorScheme.onSurface + } + } + + Card( + modifier = Modifier.fillMaxWidth() + ) { + Column( + modifier = Modifier.padding(16.dp) + ) { + Text( + text = track.title.value, + fontSize = 14.sp, + fontWeight = FontWeight.SemiBold, + color = titleColor + ) + + Text(text = track.artist.value, color = artistColor) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/univpau/queezer/view/components/TrackCardItemList.kt b/app/src/main/java/fr/univpau/queezer/view/components/TrackCardItemList.kt new file mode 100644 index 0000000..8e75f00 --- /dev/null +++ b/app/src/main/java/fr/univpau/queezer/view/components/TrackCardItemList.kt @@ -0,0 +1,21 @@ +package fr.univpau.queezer.view.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import fr.univpau.queezer.data.Game +import fr.univpau.queezer.data.Track + +@Composable +fun TrackCardItemList(tracks: List) { + Column( + modifier = Modifier.fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + for (track in tracks) TrackCardItem(track) + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/univpau/queezer/screen/GameScreen.kt b/app/src/main/java/fr/univpau/queezer/view/screens/GameScreen.kt similarity index 98% rename from app/src/main/java/fr/univpau/queezer/screen/GameScreen.kt rename to app/src/main/java/fr/univpau/queezer/view/screens/GameScreen.kt index 56943ff..7a53f0e 100644 --- a/app/src/main/java/fr/univpau/queezer/screen/GameScreen.kt +++ b/app/src/main/java/fr/univpau/queezer/view/screens/GameScreen.kt @@ -1,4 +1,4 @@ -package fr.univpau.queezer.screen +package fr.univpau.queezer.view.screens import android.util.Log import androidx.compose.foundation.layout.Arrangement @@ -49,7 +49,7 @@ fun GameScreen(navController: NavHostController, database: DatabaseService) { val context = LocalContext.current val settings: Settings = loadSettings(context) - var gameManager by remember { mutableStateOf(GameManager(settings, Playlist(), {}, database)) } + var gameManager by remember { mutableStateOf(GameManager()) } var countdown by remember { mutableIntStateOf(30) } LaunchedEffect(settings.playlistUrl) { diff --git a/app/src/main/java/fr/univpau/queezer/screen/HomeScreen.kt b/app/src/main/java/fr/univpau/queezer/view/screens/HomeScreen.kt similarity index 98% rename from app/src/main/java/fr/univpau/queezer/screen/HomeScreen.kt rename to app/src/main/java/fr/univpau/queezer/view/screens/HomeScreen.kt index c9035df..86c24a1 100644 --- a/app/src/main/java/fr/univpau/queezer/screen/HomeScreen.kt +++ b/app/src/main/java/fr/univpau/queezer/view/screens/HomeScreen.kt @@ -1,4 +1,4 @@ -package fr.univpau.queezer.screen +package fr.univpau.queezer.view.screens import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement diff --git a/app/src/main/java/fr/univpau/queezer/view/screens/ScoreScreen.kt b/app/src/main/java/fr/univpau/queezer/view/screens/ScoreScreen.kt new file mode 100644 index 0000000..6ae4e42 --- /dev/null +++ b/app/src/main/java/fr/univpau/queezer/view/screens/ScoreScreen.kt @@ -0,0 +1,236 @@ +package fr.univpau.queezer.view.screens + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material3.CenterAlignedTopAppBar +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.livedata.observeAsState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController +import fr.univpau.queezer.R +import fr.univpau.queezer.data.Game +import fr.univpau.queezer.view.components.GameCardItemList +import fr.univpau.queezer.viewmodel.GameViewModel +import kotlin.math.max + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun ScoreScreen(navController: NavHostController, gameViewModel: GameViewModel) { + val context = LocalContext.current + val games: List = gameViewModel.games.observeAsState().value ?: emptyList() + + val nbGames = games.size; + val averageSuccessRate = games.sumOf { it.score }.div(max(games.size, 1)) + + Scaffold( + topBar = { + CenterAlignedTopAppBar( + colors = TopAppBarDefaults.centerAlignedTopAppBarColors( + containerColor = MaterialTheme.colorScheme.primaryContainer, + titleContentColor = MaterialTheme.colorScheme.primary, + ), + title = { + Text( + text = context.resources.getString(R.string.score), + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + }, + navigationIcon = { + IconButton(onClick = { navController.popBackStack() }) { + Icon( + imageVector = Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = context.resources.getString(R.string.back) + ) + } + }, + ) + }, + ) { innerPadding -> + Column( + modifier = Modifier + .padding(innerPadding), + verticalArrangement = Arrangement.spacedBy(16.dp), + ) { + + Row( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 12.dp), + horizontalArrangement = Arrangement.SpaceAround, + ) { + Column(horizontalAlignment = Alignment.CenterHorizontally) { + Text(text = "$nbGames", fontSize = 24.sp, fontWeight = androidx.compose.ui.text.font.FontWeight.Bold) + Text(text = "Parties jouées", fontSize = 14.sp) + } + Column(horizontalAlignment = Alignment.CenterHorizontally) { + Text(text = "$averageSuccessRate%", fontSize = 24.sp, fontWeight = androidx.compose.ui.text.font.FontWeight.Bold) + Text(text = "De réussite", fontSize = 14.sp) + } + } + + HorizontalDivider() + + // Todo add filters + + GameCardItemList(games) + } + } + +// Column( +// modifier = Modifier +// .fillMaxSize() +// .padding(16.dp), +// horizontalAlignment = Alignment.CenterHorizontally, +// verticalArrangement = Arrangement.spacedBy(16.dp) +// ) { +// // Titre des paramètres +// Text( +// text = context.resources.getString(R.string.score), +// fontSize = 32.sp, +// modifier = Modifier.padding(bottom = 32.dp) +// ) +// +// // Nombre de parties jouées +// Row( +// modifier = Modifier.fillMaxWidth(), +// horizontalArrangement = Arrangement.SpaceBetween +// ) { +// Text( +// text = context.resources.getString(R.string.games_played), +// fontSize = 24.sp, +// ) +// if (gameList?.isNotEmpty() == true) { +// Text( +// text = gameList.size.toString(), +// fontSize = 24.sp, +// ) +// } else { +// Text( +// text = "0", +// fontSize = 24.sp, +// ) +// } +// +// } +// +// // pourcentage de réussite moyen +// Row( +// modifier = Modifier.fillMaxWidth(), +// horizontalArrangement = Arrangement.SpaceBetween +// ) { +// Text( +// text = context.resources.getString(R.string.average_success_rate), +// fontSize = 24.sp, +// ) +// if (gameList?.isNotEmpty() == true) { +// Text( +// text = (gameList.sumOf { it.score }.div(gameList.size).toString()) + "%", +// fontSize = 24.sp, +// ) +// } else { +// Text( +// text = "0%", +// fontSize = 24.sp, +// ) +// } +// } + + // filtres + // - date + // - mode de jeu –titre/artiste/les deux + // - nombre de titres +// Row( +// modifier = Modifier.fillMaxWidth(), +// horizontalArrangement = Arrangement.SpaceBetween +// ) { +// Text( +// text = context.resources.getString(R.string.filters), +// fontSize = 24.sp, +// ) +// +// Row( +// horizontalArrangement = Arrangement.SpaceBetween +// ){ +// Button( +// onClick = { /* TODO: Filtre par date */ }, +// shape = RoundedCornerShape(8.dp), +// modifier = Modifier +// .padding(vertical = 8.dp) +// ) { +// Text(context.resources.getString(R.string.date)) +// } +// +// Button( +// onClick = { /* TODO: Filtre par date */ }, +// shape = RoundedCornerShape(8.dp), +// modifier = Modifier +// .padding(vertical = 8.dp) +// ) { +// Text("Mode de jeu") +// } +// +// Button( +// onClick = { /* TODO: Filtre par date */ }, +// shape = RoundedCornerShape(8.dp), +// modifier = Modifier +// .padding(vertical = 8.dp) +// ) { +// Text("Nombre de titres") +// } +// } +// } + + // Historique des parties (score, nom) + // - cliquer sur une partie pour voir les détails + +// gameList?.forEach { +// Row( +// modifier = Modifier.fillMaxWidth(), +// horizontalArrangement = Arrangement.SpaceBetween +// ) { +// Text( +// text = it.playlist.title, +// fontSize = 24.sp, +// ) +// Text( +// text = it.score.toString(), +// fontSize = 24.sp, +// ) +// } +// } + +// if (gameList !== null) { +// GameList(gameList) +// } +// +// Button( +// onClick = { navController.navigate("home") }, +// shape = RoundedCornerShape(8.dp), +// modifier = Modifier +// .fillMaxWidth() +// .padding(vertical = 8.dp) +// ) { +// Text(context.resources.getString(R.string.back)) +// } + + //} +} \ No newline at end of file diff --git a/app/src/main/java/fr/univpau/queezer/screen/SettingsScreen.kt b/app/src/main/java/fr/univpau/queezer/view/screens/SettingsScreen.kt similarity index 99% rename from app/src/main/java/fr/univpau/queezer/screen/SettingsScreen.kt rename to app/src/main/java/fr/univpau/queezer/view/screens/SettingsScreen.kt index 3b9daba..acaf7a6 100644 --- a/app/src/main/java/fr/univpau/queezer/screen/SettingsScreen.kt +++ b/app/src/main/java/fr/univpau/queezer/view/screens/SettingsScreen.kt @@ -1,4 +1,4 @@ -package fr.univpau.queezer.screen +package fr.univpau.queezer.view.screens import android.widget.Toast import androidx.compose.foundation.layout.Arrangement