main #6

Closed
student-d-sherstnev wants to merge 19 commits from Minipigi-org/NTO-2026-Android-TeamTask-Template:main into main
4 changed files with 65 additions and 19 deletions
Showing only changes of commit abe032cdda - Show all commits

View File

@ -18,7 +18,7 @@
<activity
android:name=".ui.root.RootActivity"
android:exported="true"
android:windowSoftInputMode="adjustResize"
android:windowSoftInputMode="adjustNothing"
android:label="@string/title_activity_root">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

View File

@ -1,6 +1,7 @@
package ru.myitschool.work.ui.root
import android.os.Bundle
import android.view.WindowManager.LayoutParams
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
@ -16,6 +17,7 @@ class RootActivity : ComponentActivity() {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
actionBar?.hide()
window.setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE)
setContent {
WorkTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->

View File

@ -5,11 +5,17 @@ import androidx.compose.foundation.layout.Column
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.imePadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable
@ -23,6 +29,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
@ -51,13 +58,27 @@ fun AuthScreen(
Column(
modifier = Modifier
.fillMaxSize()
.padding(all = 24.dp),
.padding(horizontal = 48.dp)
.verticalScroll(rememberScrollState())
.imePadding(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Icon(
painter = painterResource(R.drawable.difference),
contentDescription = stringResource(R.string.icon_alter),
tint = MaterialTheme.colorScheme.primary,
modifier = Modifier.size(184.dp)
)
Spacer(modifier = Modifier.size(48.dp))
Text(
text = stringResource(R.string.auth_title),
style = MaterialTheme.typography.headlineSmall,
text = stringResource(R.string.auth_title_1),
style = MaterialTheme.typography.headlineLarge,
textAlign = TextAlign.Center
)
Text(
text = stringResource(R.string.auth_title_2),
style = MaterialTheme.typography.titleLarge,
textAlign = TextAlign.Center
)
when (val currentState = state) {
@ -76,26 +97,43 @@ private fun Content(
viewModel: AuthViewModel,
state: AuthState.Data
) {
var inputText by remember { mutableStateOf("") }
Spacer(modifier = Modifier.size(16.dp))
TextField(
var login by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") }
Spacer(modifier = Modifier.size(48.dp))
OutlinedTextField(
modifier = Modifier.testTag(TestIds.Auth.CODE_INPUT).fillMaxWidth(),
value = inputText,
value = login,
onValueChange = {
inputText = it
viewModel.onIntent(AuthIntent.TextInput(it))
login = it
viewModel.onIntent(AuthIntent.TextInput(login, password))
},
label = { Text(stringResource(R.string.auth_label)) }
placeholder = { Text(stringResource(R.string.auth_placeholder_login)) },
label = { Text(stringResource(R.string.auth_label_login)) }
)
Spacer(modifier = Modifier.size(16.dp))
Button(
modifier = Modifier.testTag(TestIds.Auth.SIGN_BUTTON).fillMaxWidth(),
onClick = {
viewModel.onIntent(AuthIntent.Send(inputText))
OutlinedTextField(
modifier = Modifier.testTag(TestIds.Auth.CODE_INPUT).fillMaxWidth(),
value = password,
onValueChange = {
password = it
viewModel.onIntent(AuthIntent.TextInput(login, password))
},
enabled = state.isEnabledSend
placeholder = { Text(stringResource(R.string.auth_placeholder_password)) },
label = { Text(stringResource(R.string.auth_label_passord)) }
)
Spacer(modifier = Modifier.size(20.dp))
Button(
modifier = Modifier.testTag(TestIds.Auth.SIGN_BUTTON).fillMaxWidth().height(64.dp),
onClick = {
viewModel.onIntent(AuthIntent.Send(login, password))
},
enabled = state.isEnabledSend,
) {
Text(stringResource(R.string.auth_sign_in))
Text(
text = stringResource(R.string.auth_sign_in),
style = MaterialTheme.typography.titleMedium,
)
}
if (state.error != null) {
Text(

View File

@ -1,8 +1,12 @@
<resources>
<string name="app_name">Work</string>
<string name="title_activity_root">RootActivity</string>
<string name="auth_title">Привет! Введи код для авторизации</string>
<string name="auth_label">Код</string>
<string name="auth_title_1">Войдите</string>
<string name="auth_title_2">Используя аккаунт S-App</string>
<string name="auth_label_login">Логин</string>
<string name="auth_placeholder_login">Введите логин</string>
<string name="auth_label_passord">Пароль</string>
<string name="auth_placeholder_password">Введите пароль</string>
<string name="auth_sign_in">Войти</string>
<string name="main_refresh">Обновить</string>
@ -12,4 +16,6 @@
<string name="book_add">Забронировать</string>
<string name="book_back">Назад</string>
<string name="book_empty">Всё забронировано</string>
<string name="icon_alter">Иконка</string>
</resources>