From 7dc115052dea2eeca61e1f0d74882897e82f2227 Mon Sep 17 00:00:00 2001 From: Nikell1 Date: Tue, 25 Nov 2025 19:52:38 +0300 Subject: [PATCH] add maincreen --- .../java/ru/myitschool/work/ui/Composables.kt | 64 ++++++-- .../work/ui/screen/NavigationGraph.kt | 18 +-- .../work/ui/screen/auth/AuthScreen.kt | 2 +- .../work/ui/screen/book/BookScreen.kt | 11 ++ .../work/ui/screen/main/MainScreen.kt | 151 ++++++++++++++++++ .../java/ru/myitschool/work/ui/theme/Color.kt | 6 +- app/src/main/res/drawable/avatar.xml | 14 ++ 7 files changed, 241 insertions(+), 25 deletions(-) create mode 100644 app/src/main/java/ru/myitschool/work/ui/screen/book/BookScreen.kt create mode 100644 app/src/main/java/ru/myitschool/work/ui/screen/main/MainScreen.kt create mode 100644 app/src/main/res/drawable/avatar.xml diff --git a/app/src/main/java/ru/myitschool/work/ui/Composables.kt b/app/src/main/java/ru/myitschool/work/ui/Composables.kt index 8f01abc..f93987f 100644 --- a/app/src/main/java/ru/myitschool/work/ui/Composables.kt +++ b/app/src/main/java/ru/myitschool/work/ui/Composables.kt @@ -23,26 +23,46 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ru.myitschool.work.R +import ru.myitschool.work.ui.theme.Black import ru.myitschool.work.ui.theme.Gray import ru.myitschool.work.ui.theme.Typography +import ru.myitschool.work.ui.theme.White @Composable fun BaseText24( text: String, modifier: Modifier = Modifier, - color: Color = Color.Unspecified, + color: Color = Black, textAlign: TextAlign = TextAlign.Left ) { Text( text = text, fontSize = 24.sp, - style = _root_ide_package_.ru.myitschool.work.ui.theme.Typography.bodyLarge, + style = Typography.bodyLarge, modifier = modifier, color = color, textAlign = textAlign ) } +@Composable +fun BaseNoBackgroundButton( + text: String, + onClick: () -> Unit +) { + Button( + onClick = onClick, + colors = ButtonDefaults.buttonColors( + containerColor = Color.Transparent, + contentColor = White, + disabledContainerColor = Color.Transparent, + disabledContentColor = White + ) + ) { + BaseText16(text = text, color = White) + } +} + @Composable fun Logo() { Image( @@ -56,11 +76,11 @@ fun Logo() { fun BaseText16( text: String, modifier: Modifier = Modifier, - color: Color = Color.Unspecified + color: Color = Black, ) { Text( text = text, - style = _root_ide_package_.ru.myitschool.work.ui.theme.Typography.bodySmall, + style = Typography.bodySmall, fontSize = 16.sp, color = color, modifier = modifier @@ -71,17 +91,32 @@ fun BaseText16( fun BaseText12( modifier: Modifier = Modifier, text: String, - color: Color = Color.Unspecified, + color: Color = Black, ) { Text( text = text, - style = _root_ide_package_.ru.myitschool.work.ui.theme.Typography.bodySmall, + style = Typography.bodySmall, fontSize = 12.sp, color = color, modifier = modifier, ) } +@Composable +fun BaseText14( + modifier: Modifier = Modifier, + text: String, + color: Color = Black, +) { + Text( + text = text, + style = Typography.bodySmall, + fontSize = 14.sp, + color = color, + modifier = modifier, + ) +} + @Composable fun BaseInputText( placeholder: String= "", @@ -97,12 +132,12 @@ fun BaseInputText( }, shape = RoundedCornerShape(16.dp), placeholder = { - _root_ide_package_.ru.myitschool.work.ui.BaseText16( + BaseText16( text = placeholder, - color = _root_ide_package_.ru.myitschool.work.ui.theme.Gray + color = Gray ) }, - textStyle = _root_ide_package_.ru.myitschool.work.ui.theme.Typography.bodySmall.copy(fontSize = 16.sp), + textStyle = Typography.bodySmall.copy(fontSize = 16.sp), colors = TextFieldDefaults.colors( focusedIndicatorColor = Color.Transparent, unfocusedIndicatorColor = Color.Transparent, @@ -118,14 +153,17 @@ fun BaseInputText( fun BaseText20( text: String, color: Color = Color.Unspecified, - style: TextStyle = _root_ide_package_.ru.myitschool.work.ui.theme.Typography.bodySmall, + style: TextStyle = Typography.bodySmall, + modifier: Modifier = Modifier.padding(7.dp), + textAlign: TextAlign = TextAlign.Unspecified ) { Text( text = text, style = style, fontSize = 20.sp, - modifier = Modifier.padding(7.dp), - color = color + modifier = modifier, + color = color, + textAlign = textAlign ) } @@ -150,6 +188,6 @@ fun BaseButton( shape = RoundedCornerShape(16.dp), ) { icon() - _root_ide_package_.ru.myitschool.work.ui.BaseText20(text = text) + BaseText20(text = text) } } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/NavigationGraph.kt b/app/src/main/java/ru/myitschool/work/ui/screen/NavigationGraph.kt index 7945bc2..4e06d96 100644 --- a/app/src/main/java/ru/myitschool/work/ui/screen/NavigationGraph.kt +++ b/app/src/main/java/ru/myitschool/work/ui/screen/NavigationGraph.kt @@ -15,6 +15,8 @@ import ru.myitschool.work.ui.nav.AuthScreenDestination import ru.myitschool.work.ui.nav.BookScreenDestination import ru.myitschool.work.ui.nav.MainScreenDestination import ru.myitschool.work.ui.screen.auth.AuthScreen +import ru.myitschool.work.ui.screen.book.BookScreen +import ru.myitschool.work.ui.screen.main.MainScreen @Composable fun AppNavHost( @@ -33,18 +35,14 @@ fun AppNavHost( navController = navController) } composable { - Box( - contentAlignment = Alignment.Center - ) { - Text(text = "Hello") - } + MainScreen( + navController = navController + ) } composable { - Box( - contentAlignment = Alignment.Center - ) { - Text(text = "Hello") - } + BookScreen( + navController = navController + ) } } } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt b/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt index ad0dfeb..424ae2b 100644 --- a/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt +++ b/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt @@ -82,7 +82,7 @@ fun AuthScreen( BaseButton( text = stringResource(R.string.auth_sign_in), - onClick = {}, + onClick = { navController.navigate(MainScreenDestination)}, btnColor = Blue, btnContentColor = White ) diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookScreen.kt b/app/src/main/java/ru/myitschool/work/ui/screen/book/BookScreen.kt new file mode 100644 index 0000000..1f77967 --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/ui/screen/book/BookScreen.kt @@ -0,0 +1,11 @@ +package ru.myitschool.work.ui.screen.book + +import androidx.compose.runtime.Composable +import androidx.navigation.NavController + +@Composable +fun BookScreen( + navController: NavController +) { + +} \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/main/MainScreen.kt b/app/src/main/java/ru/myitschool/work/ui/screen/main/MainScreen.kt new file mode 100644 index 0000000..ca9fade --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/ui/screen/main/MainScreen.kt @@ -0,0 +1,151 @@ +package ru.myitschool.work.ui.screen.main + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavController +import ru.myitschool.work.R +import ru.myitschool.work.ui.BaseButton +import ru.myitschool.work.ui.BaseNoBackgroundButton +import ru.myitschool.work.ui.BaseText14 +import ru.myitschool.work.ui.BaseText16 +import ru.myitschool.work.ui.BaseText20 +import ru.myitschool.work.ui.nav.BookScreenDestination +import ru.myitschool.work.ui.theme.Black +import ru.myitschool.work.ui.theme.Blue +import ru.myitschool.work.ui.theme.LightGray +import ru.myitschool.work.ui.theme.Typography +import ru.myitschool.work.ui.theme.White + +@Composable +fun MainScreen( + navController: NavController +) { + Column ( + modifier = Modifier + .background(LightGray) + .fillMaxSize() + ) { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .clip(RoundedCornerShape(bottomStart = 16.dp, bottomEnd = 16.dp)) + .background(Blue) + .fillMaxWidth() + .padding(10.dp) + ) { + Row( + horizontalArrangement = Arrangement.SpaceBetween, + modifier = Modifier.fillMaxWidth() + ) { + + BaseNoBackgroundButton( + text = "Обновить", + onClick = { } + ) + + BaseNoBackgroundButton( + text = "Выйти", + onClick = { } + ) + } + + Image( + painter = painterResource(R.drawable.avatar), + contentDescription = "User avatar", + modifier = Modifier.padding(20.dp) + ) + + BaseText20( + text = "Артемий Артемиев Иванович", + color = White, + textAlign = TextAlign.Center, + modifier = Modifier.width(250.dp), + style = Typography.bodyLarge + ) + + Spacer(modifier = Modifier.height(20.dp)) + } + Column( + verticalArrangement = Arrangement.SpaceBetween, + modifier = Modifier + .fillMaxSize() + .padding(20.dp) + .clip(RoundedCornerShape(16.dp)) + .background(White) + ) { + Column( + modifier = Modifier.fillMaxWidth() + ) { + Text( + text = "Ваши забронированные места", + style = Typography.bodyMedium, + color = Black, + fontSize = 16.sp, + modifier = Modifier.padding( + horizontal = 10.dp, + vertical = 20.dp + ) + ) + BookList() + } + BaseButton( + text = "Бронировать", + btnColor = Blue, + btnContentColor = White, + onClick = { navController.navigate(BookScreenDestination)}, + modifier = Modifier + .padding(horizontal = 10.dp, vertical = 15.dp) + .fillMaxWidth() + ) + } + } +} + +@Composable +fun BookList() { + Column( + modifier = Modifier.padding(horizontal = 20.dp) + ) { + BookListElement() + BookListElement() + BookListElement() + BookListElement() + } +} + +@Composable +fun BookListElement() { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 20.dp), + horizontalArrangement = Arrangement.SpaceBetween + ) { + BaseText14( + text = "Конгресс Холл" + ) + BaseText14( + text = "16.02.3026" + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/theme/Color.kt b/app/src/main/java/ru/myitschool/work/ui/theme/Color.kt index 1acc5bc..6e1bb2e 100644 --- a/app/src/main/java/ru/myitschool/work/ui/theme/Color.kt +++ b/app/src/main/java/ru/myitschool/work/ui/theme/Color.kt @@ -16,4 +16,8 @@ val Gray = Color(0xFF777777) val White = Color(0xFFFFFFFF) -val Red = Color(0xFFFF4D4D) \ No newline at end of file +val Red = Color(0xFFFF4D4D) + +val LightGray = Color(0xFFF2F1F7) + +val Black = Color(0xFF000000) \ No newline at end of file diff --git a/app/src/main/res/drawable/avatar.xml b/app/src/main/res/drawable/avatar.xml new file mode 100644 index 0000000..98811f3 --- /dev/null +++ b/app/src/main/res/drawable/avatar.xml @@ -0,0 +1,14 @@ + + + +