Files
QuApp/app/src/main/java/com/example/myserver/ProfileActivity.kt
T
Михаил Дуплин d69fe7e21f second commit
2026-04-07 17:07:56 +03:00

174 lines
5.0 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.example.myserver
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class ProfileActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Получаем имя игрока, которое передали из списка
val playerName = intent.getStringExtra("PLAYER_NAME") ?: "Неизвестный игрок"
setContent {
// Важно: MaterialTheme должен быть корневым
MaterialTheme {
ViewProfileScreen(
name = playerName,
onBackClick = { finish() }
)
}
}
}
}
@Composable
fun ViewProfileScreen(
name: String,
onBackClick: () -> Unit
) {
Surface(
modifier = Modifier.fillMaxSize(),
color = Color(0xFF3E4B54) // Фирменный фон
) {
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp)
) {
// Верхняя панель с кнопкой назад и заголовком
ProfileTopBar(
onBackClick = onBackClick
)
Spacer(modifier = Modifier.height(24.dp))
// Заголовок (можно убрать, если он уже есть в TopBar)
Text(
text = "Профиль игрока",
color = Color.White,
fontSize = 28.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(bottom = 32.dp)
)
// Карточка с именем (в твоем стиле с белой обводкой)
InfoCard(
label = "Игровой ник",
value = name
)
Spacer(modifier = Modifier.height(16.dp))
// Карточка со статусом
InfoCard(
label = "Статус",
value = "В игре"
)
Spacer(modifier = Modifier.height(16.dp))
// Карточка с информацией
InfoCard(
label = "Ранг",
value = "Игрок"
)
// Добавим немного места внизу для красоты
Spacer(modifier = Modifier.weight(1f))
}
}
}
@Composable
fun ProfileTopBar(
onBackClick: () -> Unit
) {
Row(
modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically
) {
IconButton(
onClick = onBackClick,
modifier = Modifier.size(48.dp)
) {
Icon(
imageVector = Icons.Default.ArrowBack,
contentDescription = "Назад",
tint = Color.White
)
}
Text(
text = "Информация об игроке",
color = Color.White,
fontSize = 20.sp,
fontWeight = FontWeight.Medium,
modifier = Modifier.padding(start = 8.dp)
)
}
}
@Composable
fun InfoCard(
label: String,
value: String
) {
Card(
modifier = Modifier.fillMaxWidth(),
shape = RoundedCornerShape(20.dp),
border = BorderStroke(2.dp, Color.White),
colors = CardDefaults.cardColors(
containerColor = Color(0xFF3E4B54)
)
) {
Column(
modifier = Modifier.padding(20.dp)
) {
Text(
text = label,
color = Color.LightGray,
fontSize = 12.sp
)
Text(
text = value,
color = Color.White,
fontSize = 20.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(top = 4.dp)
)
}
}
}
// Предпросмотр для разработки
@Composable
@Preview(showBackground = true)
fun ViewProfileScreenPreview() {
MaterialTheme {
ViewProfileScreen(
name = "Steve",
onBackClick = {}
)
}
}