feat : hide system bar
continuous-integration/drone/push Build is passing Details

androidCompose
Yvan CALATAYUD 1 year ago
parent 71edb91bf3
commit 5382e21c65

@ -9,7 +9,7 @@ class CreateLobbyActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
CreateLobbyPage()
CreateLobbyPage(activity = this@CreateLobbyActivity)
}
}
}

@ -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
}
}
}

@ -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

@ -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,

@ -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<Lobby?>(null) }
var lobbyList by remember { mutableStateOf<List<Lobby>>(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()
}
} 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()
}
}
@ -155,7 +154,6 @@ fun MultiPage(activity: MultiActivity) {
)
Button(
onClick = {
refreshState = false
val intent = Intent(context, CreateLobbyActivity::class.java)
context.startActivity(intent)
},
@ -178,7 +176,6 @@ fun MultiPage(activity: MultiActivity) {
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)

@ -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) {

Loading…
Cancel
Save