style : CreateLobbyActivity
continuous-integration/drone/push Build is passing Details

androidCompose
Yvan CALATAYUD 1 year ago
parent cf581393f9
commit fb17127303

@ -27,9 +27,10 @@
<activity android:name=".MultiActivity" />
<activity android:name=".ConnexionPlayerActivity" />
<activity android:name=".CreateLobbyActivity" />
<!--
<activity android:name=".ServerDetailsActivity" />
<activity android:name=".CreateLobbyActivity" />
<activity android:name=".QuizMultiActivity" />
-->
</application>

@ -1,4 +1,15 @@
package com.example.mathseduc.ui
package com.example.mathseduc
class CreateLobbyActivity {
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import com.example.mathseduc.ui.CreateLobbyPage
class CreateLobbyActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
CreateLobbyPage()
}
}
}

@ -1,2 +1,225 @@
package com.example.mathseduc.ui
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowDropDown
import androidx.compose.material3.Button
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.material3.TextFieldDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
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 com.example.mathseduc.controllers.ControllerChapter
import com.example.mathseduc.ui.theme.Colors
@Composable
fun CreateLobbyPage() {
var lobbyName by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") }
var nbPlayers by remember { mutableStateOf("") }
var difficulty by remember { mutableStateOf("") }
var chapter by remember { mutableStateOf("") }
var expandedDifficulty by remember { mutableStateOf(false) }
var expandedChapter by remember { mutableStateOf(false) }
var sizeDifficulty by remember { mutableStateOf(IntSize.Zero) }
var sizeChapter by remember { mutableStateOf(IntSize.Zero) }
val context = LocalContext.current
val keyboardController = LocalSoftwareKeyboardController.current
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp)
.background(Colors.Black)
) {
TextField(
value = lobbyName,
onValueChange = { lobbyName = it },
modifier = Modifier
.fillMaxWidth()
.background(Colors.White)
.padding(8.dp),
label = { Text("Lobby Name") }
)
TextField(
value = password,
onValueChange = { password = it },
modifier = Modifier
.fillMaxWidth()
.background(Colors.White)
.padding(8.dp),
label = { Text("Password") },
visualTransformation = PasswordVisualTransformation(),
keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Password)
)
TextField(
value = nbPlayers,
onValueChange = { nbPlayers = it },
modifier = Modifier
.fillMaxWidth()
.background(Colors.White)
.padding(8.dp),
label = { Text("Number of Players") },
keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Number)
)
Box {
val difficultyOptions = listOf("Facile", "Moyen", "Difficile")
TextField(
value = difficulty,
onValueChange = { difficulty = it },
readOnly = true,
enabled = false,
colors = TextFieldDefaults.colors(
disabledTextColor = Colors.Black,
disabledLabelColor = Colors.Black,
disabledTrailingIconColor = Colors.Black,
disabledIndicatorColor = Color.Black
),
modifier = Modifier
.clickable(onClick = {
expandedDifficulty = !expandedDifficulty
})
.onGloballyPositioned {
sizeDifficulty = it.size
}
.fillMaxWidth()
.background(Colors.White)
.padding(8.dp),
label = { Text("Difficulté") },
trailingIcon = {
Icon(
Icons.Default.ArrowDropDown,
contentDescription = null,
Modifier.clickable {
expandedDifficulty = !expandedDifficulty
}
)
}
)
DropdownMenu(
expanded = expandedDifficulty,
onDismissRequest = { expandedDifficulty = false },
modifier = Modifier
.width(with(LocalDensity.current) { sizeDifficulty.width.toDp() })
.background(Colors.White)
.padding(8.dp)
) {
difficultyOptions.forEach { option ->
DropdownMenuItem(
text = { Text(option, color = Colors.Black) },
onClick = {
difficulty = option
expandedDifficulty = false
keyboardController?.hide()
}
)
}
}
}
Box {
val chapterOptions = ControllerChapter.getChapters()
TextField(
value = chapter,
onValueChange = { chapter = it },
readOnly = true,
enabled = false,
colors = TextFieldDefaults.colors(
disabledTextColor = Colors.Black,
disabledLabelColor = Colors.Black,
disabledTrailingIconColor = Colors.Black,
disabledIndicatorColor = Color.Black
),
modifier = Modifier
.clickable(onClick = {
expandedChapter = !expandedChapter
})
.onGloballyPositioned {
sizeChapter = it.size
}
.fillMaxWidth()
.background(Colors.White)
.padding(8.dp),
label = { Text("Chapitre") },
trailingIcon = {
Icon(
Icons.Default.ArrowDropDown,
contentDescription = null,
Modifier.clickable {
expandedChapter = !expandedChapter
}
)
}
)
DropdownMenu(
expanded = expandedChapter,
onDismissRequest = { expandedChapter = false },
modifier = Modifier
.background(Colors.White)
.padding(8.dp)
) {
chapterOptions?.forEach { option ->
DropdownMenuItem(
text = { Text(option.name, color = Colors.Black) },
onClick = {
chapter = option.name
expandedChapter = false
keyboardController?.hide()
}
)
}
}
}
Button(
onClick = {
// Handle button click (Create Lobby)
// Use the collected data: lobbyName, password, nbPlayers, difficulty, chapter
},
modifier = Modifier
.fillMaxWidth()
.padding(8.dp)
) {
Text(text = "Create Lobby", color = Colors.White)
}
}
}

@ -1,7 +1,6 @@
package com.example.mathseduc.ui
import android.content.Intent
import android.widget.Toast
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@ -24,8 +23,6 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import com.example.mathseduc.ConnexionPlayerActivity
import com.example.mathseduc.MainActivity
import com.example.mathseduc.MultiActivity
import com.example.mathseduc.R
import com.example.mathseduc.ui.theme.Colors

Loading…
Cancel
Save