|
|
@ -1,5 +1,6 @@
|
|
|
|
package com.example.mathseduc.ui
|
|
|
|
package com.example.mathseduc.ui
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import android.app.Activity
|
|
|
|
import android.content.Context
|
|
|
|
import android.content.Context
|
|
|
|
import android.content.Intent
|
|
|
|
import android.content.Intent
|
|
|
|
import android.content.res.Configuration
|
|
|
|
import android.content.res.Configuration
|
|
|
@ -45,6 +46,7 @@ import androidx.compose.ui.draw.clip
|
|
|
|
import androidx.compose.ui.graphics.Color
|
|
|
|
import androidx.compose.ui.graphics.Color
|
|
|
|
import androidx.compose.ui.platform.LocalConfiguration
|
|
|
|
import androidx.compose.ui.platform.LocalConfiguration
|
|
|
|
import androidx.compose.ui.platform.LocalContext
|
|
|
|
import androidx.compose.ui.platform.LocalContext
|
|
|
|
|
|
|
|
import androidx.compose.ui.platform.LocalView
|
|
|
|
import androidx.compose.ui.text.input.KeyboardType
|
|
|
|
import androidx.compose.ui.text.input.KeyboardType
|
|
|
|
import androidx.compose.ui.text.input.PasswordVisualTransformation
|
|
|
|
import androidx.compose.ui.text.input.PasswordVisualTransformation
|
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
@ -53,9 +55,8 @@ import androidx.core.view.WindowCompat
|
|
|
|
import androidx.core.view.WindowInsetsCompat
|
|
|
|
import androidx.core.view.WindowInsetsCompat
|
|
|
|
import androidx.core.view.WindowInsetsControllerCompat
|
|
|
|
import androidx.core.view.WindowInsetsControllerCompat
|
|
|
|
import androidx.lifecycle.ViewModelProvider
|
|
|
|
import androidx.lifecycle.ViewModelProvider
|
|
|
|
import com.example.mathseduc.CreateLobbyActivity
|
|
|
|
import androidx.navigation.NavController
|
|
|
|
import com.example.mathseduc.MainActivity
|
|
|
|
import com.example.mathseduc.MainActivity
|
|
|
|
import com.example.mathseduc.MultiActivity
|
|
|
|
|
|
|
|
import com.example.mathseduc.ServerDetailsActivity
|
|
|
|
import com.example.mathseduc.ServerDetailsActivity
|
|
|
|
import com.example.mathseduc.controllers.ControllerChapter
|
|
|
|
import com.example.mathseduc.controllers.ControllerChapter
|
|
|
|
import com.example.mathseduc.controllers.ControllerLobby
|
|
|
|
import com.example.mathseduc.controllers.ControllerLobby
|
|
|
@ -64,16 +65,17 @@ import com.example.mathseduc.models.Lobby
|
|
|
|
import com.example.mathseduc.ui.theme.Colors
|
|
|
|
import com.example.mathseduc.ui.theme.Colors
|
|
|
|
import com.example.mathseduc.viewModel.MultiPageViewModel
|
|
|
|
import com.example.mathseduc.viewModel.MultiPageViewModel
|
|
|
|
import kotlinx.coroutines.Dispatchers
|
|
|
|
import kotlinx.coroutines.Dispatchers
|
|
|
|
import kotlinx.coroutines.delay
|
|
|
|
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
import kotlinx.coroutines.withContext
|
|
|
|
import kotlinx.coroutines.withContext
|
|
|
|
import okhttp3.MultipartBody
|
|
|
|
import okhttp3.MultipartBody
|
|
|
|
|
|
|
|
|
|
|
|
@OptIn(ExperimentalMaterial3Api::class)
|
|
|
|
@OptIn(ExperimentalMaterial3Api::class)
|
|
|
|
@Composable
|
|
|
|
@Composable
|
|
|
|
fun MultiPage(activity: MultiActivity) {
|
|
|
|
fun MultiPage(navController: NavController) {
|
|
|
|
val context = LocalContext.current
|
|
|
|
val context = LocalContext.current
|
|
|
|
val viewModel = ViewModelProvider(activity).get(MultiPageViewModel::class.java)
|
|
|
|
val activity = LocalView.current.context as Activity
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val viewModel = ViewModelProvider(navController.getViewModelStoreOwner(navController.graph.id)).get(MultiPageViewModel::class.java)
|
|
|
|
val lobbyList by viewModel.lobbyList.collectAsState(initial = emptyList())
|
|
|
|
val lobbyList by viewModel.lobbyList.collectAsState(initial = emptyList())
|
|
|
|
|
|
|
|
|
|
|
|
var selectedItem : Lobby? = null
|
|
|
|
var selectedItem : Lobby? = null
|
|
|
@ -89,7 +91,6 @@ fun MultiPage(activity: MultiActivity) {
|
|
|
|
|
|
|
|
|
|
|
|
windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
|
|
|
|
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())
|
|
|
|
windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -122,7 +123,7 @@ fun MultiPage(activity: MultiActivity) {
|
|
|
|
title = {},
|
|
|
|
title = {},
|
|
|
|
navigationIcon = {
|
|
|
|
navigationIcon = {
|
|
|
|
IconButton(
|
|
|
|
IconButton(
|
|
|
|
onClick = { activity.finish() },
|
|
|
|
onClick = { navController.navigate("home") },
|
|
|
|
modifier = Modifier.size(60.dp)
|
|
|
|
modifier = Modifier.size(60.dp)
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
Icon(
|
|
|
|
Icon(
|
|
|
@ -155,8 +156,7 @@ fun MultiPage(activity: MultiActivity) {
|
|
|
|
)
|
|
|
|
)
|
|
|
|
Button(
|
|
|
|
Button(
|
|
|
|
onClick = {
|
|
|
|
onClick = {
|
|
|
|
val intent = Intent(context, CreateLobbyActivity::class.java)
|
|
|
|
navController.navigate("createLobby")
|
|
|
|
context.startActivity(intent)
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
shape = RoundedCornerShape(15),
|
|
|
|
shape = RoundedCornerShape(15),
|
|
|
|
modifier = Modifier
|
|
|
|
modifier = Modifier
|
|
|
@ -182,7 +182,7 @@ fun MultiPage(activity: MultiActivity) {
|
|
|
|
// Créer un Utiliser si le lobby n'est pas plein
|
|
|
|
// Créer un Utiliser si le lobby n'est pas plein
|
|
|
|
|
|
|
|
|
|
|
|
scope.launch {
|
|
|
|
scope.launch {
|
|
|
|
createUtiliserForLobby(context, selectedItem!!)
|
|
|
|
createUtiliserForLobby(context, selectedItem!!, navController)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
// Afficher un message Toast si le lobby est plein
|
|
|
|
// Afficher un message Toast si le lobby est plein
|
|
|
@ -213,7 +213,7 @@ fun MultiPage(activity: MultiActivity) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private suspend fun createUtiliserForLobby(context: Context, lobby: Lobby) {
|
|
|
|
private suspend fun createUtiliserForLobby(context: Context, lobby: Lobby, navController: NavController) {
|
|
|
|
withContext(Dispatchers.IO) {
|
|
|
|
withContext(Dispatchers.IO) {
|
|
|
|
val formDataBuilder = MultipartBody.Builder().setType(MultipartBody.FORM)
|
|
|
|
val formDataBuilder = MultipartBody.Builder().setType(MultipartBody.FORM)
|
|
|
|
formDataBuilder.addFormDataPart("idplayer", MainActivity.idPlayerConnected.toString())
|
|
|
|
formDataBuilder.addFormDataPart("idplayer", MainActivity.idPlayerConnected.toString())
|
|
|
@ -223,10 +223,7 @@ private suspend fun createUtiliserForLobby(context: Context, lobby: Lobby) {
|
|
|
|
ControllerUtiliser.createUtiliserByIdLobby(formDataBuilder)
|
|
|
|
ControllerUtiliser.createUtiliserByIdLobby(formDataBuilder)
|
|
|
|
|
|
|
|
|
|
|
|
// Naviguer vers l'activité ServerDetails avec les détails du lobby
|
|
|
|
// Naviguer vers l'activité ServerDetails avec les détails du lobby
|
|
|
|
val intent = Intent(context, ServerDetailsActivity::class.java)
|
|
|
|
navController.navigate("serverDetails/${lobby.name}/${lobby.id}")
|
|
|
|
intent.putExtra("serverName", lobby.name)
|
|
|
|
|
|
|
|
intent.putExtra("lobbyId", lobby.id)
|
|
|
|
|
|
|
|
context.startActivity(intent)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -265,7 +262,7 @@ fun LobbyItem(lobby: Lobby, isSelected: Boolean, onItemClick: (Lobby) -> Unit) {
|
|
|
|
text = ControllerChapter.getChapterNameById(lobby.idchapter).toString(),
|
|
|
|
text = ControllerChapter.getChapterNameById(lobby.idchapter).toString(),
|
|
|
|
fontSize = 18.sp,
|
|
|
|
fontSize = 18.sp,
|
|
|
|
color = Colors.White,
|
|
|
|
color = Colors.White,
|
|
|
|
modifier = Modifier.weight(1f)
|
|
|
|
modifier = Modifier.weight(3f)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
Text(
|
|
|
|
Text(
|
|
|
|
text = lobby.difficulty.toString(),
|
|
|
|
text = lobby.difficulty.toString(),
|
|
|
|