diff --git a/Android/app/src/main/java/com/example/mathseduc/CreateLobbyActivity.kt b/Android/app/src/main/java/com/example/mathseduc/CreateLobbyActivity.kt index 002a541..a9cd453 100644 --- a/Android/app/src/main/java/com/example/mathseduc/CreateLobbyActivity.kt +++ b/Android/app/src/main/java/com/example/mathseduc/CreateLobbyActivity.kt @@ -9,7 +9,7 @@ class CreateLobbyActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { - CreateLobbyPage() + CreateLobbyPage(activity = this@CreateLobbyActivity) } } } \ No newline at end of file diff --git a/Android/app/src/main/java/com/example/mathseduc/QuizMultiActivity.kt b/Android/app/src/main/java/com/example/mathseduc/QuizMultiActivity.kt index fa067a6..6e5190c 100644 --- a/Android/app/src/main/java/com/example/mathseduc/QuizMultiActivity.kt +++ b/Android/app/src/main/java/com/example/mathseduc/QuizMultiActivity.kt @@ -23,7 +23,7 @@ class QuizMultiActivity : ComponentActivity() { val lobbyId = intent.getIntExtra("lobbyId",-1) val serverName = intent.getStringExtra("serverName") - QuizMultiScreen(lobbyId, serverName!!) //TODO sus + QuizMultiScreen(lobbyId, serverName!!, activity = this@QuizMultiActivity) //TODO sus } } } diff --git a/Android/app/src/main/java/com/example/mathseduc/ui/activity_create_lobby.kt b/Android/app/src/main/java/com/example/mathseduc/ui/activity_create_lobby.kt index f845a95..79b38dc 100644 --- a/Android/app/src/main/java/com/example/mathseduc/ui/activity_create_lobby.kt +++ b/Android/app/src/main/java/com/example/mathseduc/ui/activity_create_lobby.kt @@ -37,6 +37,10 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.unit.IntSize import androidx.compose.ui.unit.dp +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import com.example.mathseduc.CreateLobbyActivity import com.example.mathseduc.MainActivity import com.example.mathseduc.ServerDetailsActivity import com.example.mathseduc.controllers.ControllerChapter @@ -46,7 +50,7 @@ import com.example.mathseduc.ui.theme.Colors import okhttp3.MultipartBody @Composable -fun CreateLobbyPage() { +fun CreateLobbyPage(activity: CreateLobbyActivity) { var lobbyName by remember { mutableStateOf("") } var password by remember { mutableStateOf("") } var nbPlayers by remember { mutableStateOf("") } @@ -61,6 +65,14 @@ fun CreateLobbyPage() { val context = LocalContext.current val keyboardController = LocalSoftwareKeyboardController.current + val windowInsetsController = remember { + WindowCompat.getInsetsController(activity.window, activity.window.decorView) + } + + windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + + windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) + Column( modifier = Modifier diff --git a/Android/app/src/main/java/com/example/mathseduc/ui/activity_main.kt b/Android/app/src/main/java/com/example/mathseduc/ui/activity_main.kt index bff198d..bc30c07 100644 --- a/Android/app/src/main/java/com/example/mathseduc/ui/activity_main.kt +++ b/Android/app/src/main/java/com/example/mathseduc/ui/activity_main.kt @@ -31,6 +31,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat import com.example.mathseduc.ConnexionPlayerActivity import com.example.mathseduc.MainActivity import com.example.mathseduc.MultiActivity @@ -55,8 +56,9 @@ fun HomePage() { WindowCompat.getInsetsController(window, window.decorView) } - // Hide the status bar - windowInsetsController?.hide(WindowInsetsCompat.Type.statusBars()) + windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + + windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) Column( modifier = modifier, diff --git a/Android/app/src/main/java/com/example/mathseduc/ui/activity_multi.kt b/Android/app/src/main/java/com/example/mathseduc/ui/activity_multi.kt index 1c5897d..c5735cc 100644 --- a/Android/app/src/main/java/com/example/mathseduc/ui/activity_multi.kt +++ b/Android/app/src/main/java/com/example/mathseduc/ui/activity_multi.kt @@ -50,6 +50,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat import com.example.mathseduc.CreateLobbyActivity import com.example.mathseduc.MainActivity import com.example.mathseduc.MultiActivity @@ -72,7 +73,6 @@ fun MultiPage(activity: MultiActivity) { var selectedItem by rememberSaveable { mutableStateOf(null) } var lobbyList by remember { mutableStateOf>(emptyList()) } val scope = rememberCoroutineScope() - var refreshState by remember { mutableStateOf(true) } val isPortrait = LocalConfiguration.current.orientation == Configuration.ORIENTATION_PORTRAIT @@ -82,8 +82,11 @@ fun MultiPage(activity: MultiActivity) { WindowCompat.getInsetsController(activity.window, activity.window.decorView) } - // Hide the status bar - windowInsetsController?.hide(WindowInsetsCompat.Type.statusBars()) + windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + + // Hide the status bar and navigation bar ET OU MAXENCE Y'A UNE OPTION POUR FAIRE LES DEUX DIRECTEMENT REGARDE LA DOC FDP !!! + windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) + // Fonction pour actualiser la liste des lobbies suspend fun refreshLobbyList() { @@ -94,14 +97,11 @@ fun MultiPage(activity: MultiActivity) { Log.e("MainActivity", "Refreshed Lobby List") } - DisposableEffect(refreshState) { + DisposableEffect(Unit) { val refreshRunnable = { scope.launch(Dispatchers.IO) { try { - while (refreshState) { - delay(5000) - refreshLobbyList() - } + refreshLobbyList() } catch (e: Exception) { Log.e("MainActivity", "Error refreshing lobbies: ${e.message}") } @@ -110,8 +110,7 @@ fun MultiPage(activity: MultiActivity) { refreshRunnable.invoke() onDispose { - Toast.makeText(context, "Au REVOIR UwU", Toast.LENGTH_SHORT).show() - refreshState = false + Toast.makeText(context, "Au REVOIR", Toast.LENGTH_SHORT).show() } } @@ -136,13 +135,13 @@ fun MultiPage(activity: MultiActivity) { ) Column( modifier = Modifier - .fillMaxSize() - .padding(start = 16.dp, top = 62.dp, end = 16.dp) + .fillMaxSize() + .padding(start = 16.dp, top = 62.dp, end = 16.dp) ) { Row( modifier = Modifier - .fillMaxWidth() - .padding(bottom = 10.dp), + .fillMaxWidth() + .padding(bottom = 10.dp), verticalAlignment = Alignment.CenterVertically ) { Text( @@ -150,19 +149,18 @@ fun MultiPage(activity: MultiActivity) { color = Colors.White, fontSize = 17.sp, modifier = Modifier - .weight(if (isPortrait) 1f else 0.6f) - .padding(start = 25.dp) + .weight(if (isPortrait) 1f else 0.6f) + .padding(start = 25.dp) ) Button( onClick = { - refreshState = false val intent = Intent(context, CreateLobbyActivity::class.java) context.startActivity(intent) }, shape = RoundedCornerShape(15), modifier = Modifier - .weight(if (isPortrait) 1f else 0.4f) - .padding(end = 20.dp), + .weight(if (isPortrait) 1f else 0.4f) + .padding(end = 20.dp), colors = ButtonDefaults.buttonColors(Colors.Blue) ) { Text(text = "Ajouter un lobby") @@ -171,14 +169,13 @@ fun MultiPage(activity: MultiActivity) { LazyColumn( modifier = Modifier - .fillMaxSize() - .border(2.dp, Color.White,shape = RoundedCornerShape(3)) - .weight(0.85f), + .fillMaxSize() + .border(2.dp, Color.White, shape = RoundedCornerShape(3)) + .weight(0.85f), ) { items(lobbyList) { lobby -> LobbyItem(lobby, selectedItem == lobby) { selectedItem = it - refreshState = false if (ControllerLobby.getNbPlayerInLobby(selectedItem!!.id) < selectedItem!!.nbplayers) { // Créer un Utiliser si le lobby n'est pas plein @@ -197,10 +194,24 @@ fun MultiPage(activity: MultiActivity) { } } } + + Button( + onClick = { + scope.launch { + refreshLobbyList() + } + }, + shape = RoundedCornerShape(15), + modifier = Modifier + .fillMaxWidth(), + colors = ButtonDefaults.buttonColors(Colors.Blue) + ) { + Text(text = "Actualiser") + } } } -// Fonction pour créer un Utiliser pour le lobby sélectionné + private suspend fun createUtiliserForLobby(context: Context, lobby: Lobby) { withContext(Dispatchers.IO) { val formDataBuilder = MultipartBody.Builder().setType(MultipartBody.FORM) @@ -224,18 +235,18 @@ fun LobbyItem(lobby: Lobby, isSelected: Boolean, onItemClick: (Lobby) -> Unit) { var showDialog by rememberSaveable { mutableStateOf(false) } Row( modifier = Modifier - .fillMaxWidth() - .padding(8.dp) - .clickable { - if (lobby.password.isNotEmpty()) { - showDialog = true - } else { - onItemClick(lobby) - } + .fillMaxWidth() + .padding(8.dp) + .clickable { + if (lobby.password.isNotEmpty()) { + showDialog = true + } else { + onItemClick(lobby) } - .clip(RoundedCornerShape(8.dp)) - .background(if (isSelected) Colors.Orange else Colors.Grey) - .padding(16.dp) + } + .clip(RoundedCornerShape(8.dp)) + .background(if (isSelected) Colors.Orange else Colors.Grey) + .padding(16.dp) ) { Text( text = lobby.name, diff --git a/Android/app/src/main/java/com/example/mathseduc/ui/activity_quiz_multi.kt b/Android/app/src/main/java/com/example/mathseduc/ui/activity_quiz_multi.kt index 8b365f1..682a9b9 100644 --- a/Android/app/src/main/java/com/example/mathseduc/ui/activity_quiz_multi.kt +++ b/Android/app/src/main/java/com/example/mathseduc/ui/activity_quiz_multi.kt @@ -29,7 +29,11 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat import com.example.mathseduc.MainActivity +import com.example.mathseduc.QuizMultiActivity import com.example.mathseduc.ServerDetailsActivity import com.example.mathseduc.controllers.ControllerLobby import com.example.mathseduc.controllers.ControllerQuestion @@ -39,7 +43,7 @@ import okhttp3.MultipartBody @Composable -fun QuizMultiScreen(lobbyId: Int,serverName: String) { +fun QuizMultiScreen(lobbyId: Int,serverName: String,activity: QuizMultiActivity) { val context = LocalContext.current var chronoValue by remember { mutableStateOf(0.0f) } @@ -50,6 +54,14 @@ fun QuizMultiScreen(lobbyId: Int,serverName: String) { val progressBarTotalValues by remember { mutableStateOf(Array(listPlayer.size) { 0.0f }) } var quizFinished by remember { mutableStateOf(false) } // Variable pour indiquer si le quiz est terminé ou non + val windowInsetsController = remember { + WindowCompat.getInsetsController(activity.window, activity.window.decorView) + } + + windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + + windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) + LaunchedEffect(Unit) { val timer = ticker(delayMillis = 100) // Update every 100 milliseconds for (tick in timer) {