Прокинут во всех экранах стейт скаффолда
This commit is contained in:
Generated
-17
@@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="deploymentTargetDropDown">
|
|
||||||
<runningDeviceTargetSelectedWithDropDown>
|
|
||||||
<Target>
|
|
||||||
<type value="RUNNING_DEVICE_TARGET" />
|
|
||||||
<deviceKey>
|
|
||||||
<Key>
|
|
||||||
<type value="SERIAL_NUMBER" />
|
|
||||||
<value value="2a40cdac1f0d7ece" />
|
|
||||||
</Key>
|
|
||||||
</deviceKey>
|
|
||||||
</Target>
|
|
||||||
</runningDeviceTargetSelectedWithDropDown>
|
|
||||||
<timeTargetWasSelectedWithDropDown value="2023-01-05T19:44:17.771649600Z" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_17_PREVIEW" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|||||||
@@ -66,4 +66,5 @@ dependencies {
|
|||||||
implementation "androidx.compose.runtime:runtime-livedata:$compose_version"
|
implementation "androidx.compose.runtime:runtime-livedata:$compose_version"
|
||||||
implementation "androidx.compose.material:material-icons-extended:$compose_version"
|
implementation "androidx.compose.material:material-icons-extended:$compose_version"
|
||||||
implementation "com.google.accompanist:accompanist-swiperefresh:0.23.0"
|
implementation "com.google.accompanist:accompanist-swiperefresh:0.23.0"
|
||||||
|
implementation "com.google.accompanist:accompanist-navigation-animation:0.24.1-alpha"
|
||||||
}
|
}
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:theme="@style/Theme.MyDnevnik"
|
android:theme="@style/Theme.MyDnevnik"
|
||||||
|
android:screenOrientation="fullSensor"
|
||||||
android:windowSoftInputMode="adjustResize">
|
android:windowSoftInputMode="adjustResize">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|||||||
@@ -5,12 +5,24 @@ import androidx.compose.foundation.layout.Spacer
|
|||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
|
import androidx.compose.runtime.SideEffect
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.draw.drawBehind
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.graphics.Paint
|
||||||
|
import androidx.compose.ui.graphics.drawscope.drawIntoCanvas
|
||||||
|
import androidx.compose.ui.graphics.scale
|
||||||
|
import androidx.compose.ui.graphics.toArgb
|
||||||
import androidx.compose.ui.graphics.vector.ImageVector
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.res.vectorResource
|
import androidx.compose.ui.res.vectorResource
|
||||||
import androidx.compose.ui.unit.Dp
|
import androidx.compose.ui.unit.Dp
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.navigation.NavController
|
||||||
|
import androidx.navigation.NavHostController
|
||||||
|
import ru.megboyzz.dnevnik.navigation.AppNavRoute
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun Int.AsPainter() = painterResource(this)
|
fun Int.AsPainter() = painterResource(this)
|
||||||
@@ -26,4 +38,67 @@ fun SpacerHeight(height: Dp) = Spacer(Modifier.height(height))
|
|||||||
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun Int.AsImageVector() = ImageVector.vectorResource(this)
|
fun Int.AsImageVector() = ImageVector.vectorResource(this)
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun NavController.navigate(to: AppNavRoute){
|
||||||
|
LaunchedEffect(Unit) {
|
||||||
|
navigate(to.route) {
|
||||||
|
popUpTo(to.route) { inclusive = true }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Modifier.drawColoredShadow(
|
||||||
|
color: Color = Color.Black,
|
||||||
|
alpha: Float = 0.07f,
|
||||||
|
borderRadius: Dp = 0.dp,
|
||||||
|
offsetX: Dp = 0.dp,
|
||||||
|
offsetY: Dp = 0.dp,
|
||||||
|
blurRadius: Dp = 7.dp,
|
||||||
|
spread: Dp = 0.dp,
|
||||||
|
enabled: Boolean = true,
|
||||||
|
) = if(enabled) {
|
||||||
|
this.drawBehind {
|
||||||
|
val transparentColor = color.copy(alpha = 0.0f).toArgb()
|
||||||
|
val shadowColor = color.copy(alpha = alpha).toArgb()
|
||||||
|
this.drawIntoCanvas {
|
||||||
|
val paint = Paint()
|
||||||
|
val frameworkPaint = paint.asFrameworkPaint()
|
||||||
|
frameworkPaint.color = transparentColor
|
||||||
|
frameworkPaint.setShadowLayer(
|
||||||
|
blurRadius.toPx(),
|
||||||
|
offsetX.toPx(),
|
||||||
|
offsetY.toPx(),
|
||||||
|
shadowColor
|
||||||
|
)
|
||||||
|
it.save()
|
||||||
|
|
||||||
|
if(spread.value > 0) {
|
||||||
|
fun calcSpreadScale(spread: Float, childSize: Float): Float {
|
||||||
|
return 1f + ((spread / childSize) * 2f)
|
||||||
|
}
|
||||||
|
|
||||||
|
it.scale(
|
||||||
|
calcSpreadScale(spread.toPx(), this.size.width),
|
||||||
|
calcSpreadScale(spread.toPx(), this.size.height),
|
||||||
|
this.center.x,
|
||||||
|
this.center.y
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
it.drawRoundRect(
|
||||||
|
0f,
|
||||||
|
0f,
|
||||||
|
this.size.width,
|
||||||
|
this.size.height,
|
||||||
|
borderRadius.toPx(),
|
||||||
|
borderRadius.toPx(),
|
||||||
|
paint
|
||||||
|
)
|
||||||
|
it.restore()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this
|
||||||
|
}
|
||||||
@@ -1,12 +1,25 @@
|
|||||||
package ru.megboyzz.dnevnik.navigation
|
package ru.megboyzz.dnevnik.navigation
|
||||||
|
|
||||||
import android.window.SplashScreen
|
import android.window.SplashScreen
|
||||||
|
import androidx.compose.animation.*
|
||||||
|
import androidx.compose.animation.core.CubicBezierEasing
|
||||||
|
import androidx.compose.animation.core.Spring
|
||||||
|
import androidx.compose.animation.core.spring
|
||||||
|
import androidx.compose.animation.core.tween
|
||||||
|
import androidx.compose.material.rememberScaffoldState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
|
import androidx.compose.ui.unit.IntOffset
|
||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import androidx.navigation.compose.NavHost
|
import androidx.navigation.compose.NavHost
|
||||||
import androidx.navigation.compose.composable
|
import androidx.navigation.compose.composable
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
|
import com.google.accompanist.navigation.animation.AnimatedNavHost
|
||||||
|
import com.google.accompanist.navigation.animation.rememberAnimatedNavController
|
||||||
|
import ru.megboyzz.dnevnik.screens.HomeWorkScreen
|
||||||
|
import ru.megboyzz.dnevnik.screens.LoginScreen
|
||||||
|
import ru.megboyzz.dnevnik.screens.MarksScreen
|
||||||
|
import ru.megboyzz.dnevnik.screens.ScheduleScreen
|
||||||
|
|
||||||
|
|
||||||
sealed class AppNavRoute(val route: String){
|
sealed class AppNavRoute(val route: String){
|
||||||
@@ -20,9 +33,9 @@ sealed class AppNavRoute(val route: String){
|
|||||||
object Settings: AppNavRoute("settings_screen")
|
object Settings: AppNavRoute("settings_screen")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalAnimationApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun AppNavHost(){
|
fun AppNavHost(){
|
||||||
val navController = rememberNavController()
|
|
||||||
|
|
||||||
/*val activity = LocalContext.current as MainActivity
|
/*val activity = LocalContext.current as MainActivity
|
||||||
|
|
||||||
@@ -30,14 +43,19 @@ fun AppNavHost(){
|
|||||||
|
|
||||||
val viewModel: AppViewModel = viewModel(factory = AppViewModelFactory(application))*/
|
val viewModel: AppViewModel = viewModel(factory = AppViewModelFactory(application))*/
|
||||||
|
|
||||||
|
|
||||||
|
val scaffoldState = rememberScaffoldState()
|
||||||
|
val navController = rememberAnimatedNavController()
|
||||||
|
|
||||||
NavHost(
|
NavHost(
|
||||||
navController = navController,
|
navController = navController,
|
||||||
startDestination = AppNavRoute.Splash.route
|
startDestination = AppNavRoute.Login.route /* сделать проверку куки файлов */
|
||||||
){
|
){
|
||||||
composable(AppNavRoute.Splash.route) { }
|
composable(AppNavRoute.Splash.route) { }
|
||||||
composable(AppNavRoute.Marks.route) { }
|
composable(AppNavRoute.Login.route) { LoginScreen(navController) }
|
||||||
composable(AppNavRoute.Schedule.route) { }
|
composable(AppNavRoute.Marks.route) { MarksScreen(navController, scaffoldState) }
|
||||||
composable(AppNavRoute.HomeWorks.route) { }
|
composable(AppNavRoute.Schedule.route) { ScheduleScreen(navController, scaffoldState) }
|
||||||
|
composable(AppNavRoute.HomeWorks.route) { HomeWorkScreen(navController, scaffoldState) }
|
||||||
composable(AppNavRoute.Settings.route) { }
|
composable(AppNavRoute.Settings.route) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,12 @@
|
|||||||
package ru.megboyzz.dnevnik.screens
|
package ru.megboyzz.dnevnik.screens
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import androidx.compose.animation.animateColorAsState
|
import androidx.compose.animation.animateColorAsState
|
||||||
import androidx.compose.animation.core.tween
|
import androidx.compose.animation.core.tween
|
||||||
import androidx.compose.animation.expandHorizontally
|
import androidx.compose.animation.expandHorizontally
|
||||||
import androidx.compose.animation.fadeOut
|
import androidx.compose.animation.fadeOut
|
||||||
import androidx.compose.animation.slideInHorizontally
|
import androidx.compose.animation.slideInHorizontally
|
||||||
import androidx.compose.foundation.BorderStroke
|
import androidx.compose.foundation.*
|
||||||
import androidx.compose.foundation.Image
|
|
||||||
import androidx.compose.foundation.background
|
|
||||||
import androidx.compose.foundation.clickable
|
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.*
|
||||||
import androidx.compose.foundation.selection.toggleable
|
import androidx.compose.foundation.selection.toggleable
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
@@ -22,6 +20,8 @@ import androidx.compose.runtime.*
|
|||||||
import androidx.compose.runtime.saveable.rememberSaveable
|
import androidx.compose.runtime.saveable.rememberSaveable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.draw.clip
|
||||||
|
import androidx.compose.ui.draw.shadow
|
||||||
import androidx.compose.ui.focus.FocusRequester
|
import androidx.compose.ui.focus.FocusRequester
|
||||||
import androidx.compose.ui.focus.focusRequester
|
import androidx.compose.ui.focus.focusRequester
|
||||||
import androidx.compose.ui.focus.onFocusChanged
|
import androidx.compose.ui.focus.onFocusChanged
|
||||||
@@ -33,6 +33,8 @@ import androidx.compose.ui.graphics.Outline
|
|||||||
import androidx.compose.ui.graphics.Shape
|
import androidx.compose.ui.graphics.Shape
|
||||||
import androidx.compose.ui.graphics.painter.Painter
|
import androidx.compose.ui.graphics.painter.Painter
|
||||||
import androidx.compose.ui.layout.ContentScale
|
import androidx.compose.ui.layout.ContentScale
|
||||||
|
import androidx.compose.ui.modifier.modifierLocalConsumer
|
||||||
|
import androidx.compose.ui.platform.LocalConfiguration
|
||||||
import androidx.compose.ui.platform.LocalDensity
|
import androidx.compose.ui.platform.LocalDensity
|
||||||
import androidx.compose.ui.semantics.Role
|
import androidx.compose.ui.semantics.Role
|
||||||
import androidx.compose.ui.text.input.KeyboardType
|
import androidx.compose.ui.text.input.KeyboardType
|
||||||
@@ -42,9 +44,12 @@ import androidx.compose.ui.text.style.TextAlign
|
|||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.*
|
import androidx.compose.ui.unit.*
|
||||||
import androidx.constraintlayout.compose.Visibility
|
import androidx.constraintlayout.compose.Visibility
|
||||||
|
import androidx.navigation.NavController
|
||||||
|
import androidx.navigation.compose.rememberNavController
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import ru.megboyzz.dnevnik.*
|
import ru.megboyzz.dnevnik.*
|
||||||
import ru.megboyzz.dnevnik.R
|
import ru.megboyzz.dnevnik.R
|
||||||
|
import ru.megboyzz.dnevnik.navigation.AppNavRoute
|
||||||
import ru.megboyzz.dnevnik.ui.theme.*
|
import ru.megboyzz.dnevnik.ui.theme.*
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@@ -52,9 +57,10 @@ fun MainScaffold(
|
|||||||
icon: Painter,
|
icon: Painter,
|
||||||
title: String,
|
title: String,
|
||||||
/* TODO viewModel */
|
/* TODO viewModel */
|
||||||
content: (@Composable (it: PaddingValues) -> Unit)
|
navController: NavController,
|
||||||
|
scaffoldState: ScaffoldState,
|
||||||
|
content: (@Composable (it: PaddingValues) -> Unit),
|
||||||
) {
|
) {
|
||||||
val scaffoldState = rememberScaffoldState()
|
|
||||||
val scope = rememberCoroutineScope()
|
val scope = rememberCoroutineScope()
|
||||||
Scaffold(
|
Scaffold(
|
||||||
scaffoldState = scaffoldState,
|
scaffoldState = scaffoldState,
|
||||||
@@ -87,14 +93,146 @@ fun MainScaffold(
|
|||||||
drawerBackgroundColor = mainBlue,
|
drawerBackgroundColor = mainBlue,
|
||||||
drawerContentColor = white,
|
drawerContentColor = white,
|
||||||
drawerShape = drawerShape,
|
drawerShape = drawerShape,
|
||||||
drawerContent = { DrawerContent() }
|
drawerContent = { DrawerContent(navController, scaffoldState) },
|
||||||
|
bottomBar = { BottomBar(navController) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun BottomBar(navController: NavController) {
|
||||||
|
//Box(Modifier.fillMaxWidth().height(90.dp).shadow(8.dp))
|
||||||
|
|
||||||
|
// УЖАСНЫЙ КОСТЫЛЬ ДЛЯ ПЕРЕХОДОВ С ПОМОЩЬЮ СТЕЙТОВ TODO - УБРАТЬ
|
||||||
|
val goToMarks = remember { mutableStateOf(false) }
|
||||||
|
val goToHw = remember { mutableStateOf(false) }
|
||||||
|
val goToSchedule = remember { mutableStateOf(false) }
|
||||||
|
|
||||||
|
if(goToMarks.value){
|
||||||
|
navController.navigate(AppNavRoute.Marks)
|
||||||
|
//goToMarks.value = false
|
||||||
|
}
|
||||||
|
if(goToHw.value){
|
||||||
|
navController.navigate(AppNavRoute.HomeWorks)
|
||||||
|
//goToHw.value = false
|
||||||
|
}
|
||||||
|
if(goToSchedule.value){
|
||||||
|
navController.navigate(AppNavRoute.Schedule)
|
||||||
|
//goToSchedule.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
Box(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.height(90.dp)
|
||||||
|
.background(white)
|
||||||
|
.padding(10.dp, 10.dp, 10.dp, 15.dp),
|
||||||
|
){
|
||||||
|
Box(
|
||||||
|
Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
.clip(RoundedCornerShape(20.dp))
|
||||||
|
.background(mainBlue)
|
||||||
|
){
|
||||||
|
Row(
|
||||||
|
horizontalArrangement = Arrangement.SpaceEvenly,
|
||||||
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
|
modifier = Modifier.fillMaxSize()
|
||||||
|
) {
|
||||||
|
BottomNavButton(
|
||||||
|
icon = R.drawable.ic_marks.AsPainter(),
|
||||||
|
text = R.string.title_marks.AsString()
|
||||||
|
) { goToMarks.value = true }
|
||||||
|
BottomNavButton(
|
||||||
|
icon = R.drawable.ic_homework.AsPainter(),
|
||||||
|
text = R.string.title_hw.AsString()
|
||||||
|
) { goToHw.value = true }
|
||||||
|
BottomNavButton(
|
||||||
|
icon = R.drawable.ic_schedule.AsPainter(),
|
||||||
|
text = R.string.title_schedule.AsString()
|
||||||
|
) { goToSchedule.value = true }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DrawerContent() {
|
fun BottomNavButton(
|
||||||
|
icon: Painter,
|
||||||
|
text: String,
|
||||||
|
color: Color = white,
|
||||||
|
onClick: () -> Unit,
|
||||||
|
) {
|
||||||
|
Column(
|
||||||
|
Modifier
|
||||||
|
.clickable(onClick = onClick),
|
||||||
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
|
) {
|
||||||
|
Image(
|
||||||
|
painter = icon,
|
||||||
|
contentDescription = "",
|
||||||
|
modifier = Modifier.padding(5.dp)
|
||||||
|
)
|
||||||
|
Text(
|
||||||
|
text = text,
|
||||||
|
style = MainText,
|
||||||
|
color = color
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Preview
|
||||||
|
@Composable
|
||||||
|
fun BottomNavButtonPrev() {
|
||||||
|
Row(horizontalArrangement = Arrangement.spacedBy(20.dp)) {
|
||||||
|
BottomNavButton(
|
||||||
|
icon = R.drawable.ic_marks.AsPainter(),
|
||||||
|
text = R.string.title_marks.AsString()
|
||||||
|
) { /* TODO*/ }
|
||||||
|
BottomNavButton(
|
||||||
|
icon = R.drawable.ic_homework.AsPainter(),
|
||||||
|
text = R.string.title_hw.AsString()
|
||||||
|
) { /* TODO*/ }
|
||||||
|
BottomNavButton(
|
||||||
|
icon = R.drawable.ic_schedule.AsPainter(),
|
||||||
|
text = R.string.title_schedule.AsString()
|
||||||
|
) { /* TODO*/ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Preview
|
||||||
|
@Composable
|
||||||
|
fun BottomBarPrev() {
|
||||||
|
val navController = rememberNavController()
|
||||||
|
BottomBar(navController = navController)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@SuppressLint("CoroutineCreationDuringComposition")
|
||||||
|
@Composable
|
||||||
|
fun DrawerContent(
|
||||||
|
navController: NavController,
|
||||||
|
scaffoldState: ScaffoldState
|
||||||
|
) {
|
||||||
|
|
||||||
|
// УЖАСНЫЙ КОСТЫЛЬ ДЛЯ ПЕРЕХОДОВ С ПОМОЩЬЮ СТЕЙТОВ TODO - УБРАТЬ
|
||||||
|
val goToMarks = remember { mutableStateOf(false) }
|
||||||
|
val goToHw = remember { mutableStateOf(false) }
|
||||||
|
val goToSchedule = remember { mutableStateOf(false) }
|
||||||
|
|
||||||
|
val scope = rememberCoroutineScope()
|
||||||
|
if(goToMarks.value){
|
||||||
|
navController.navigate(AppNavRoute.Marks)
|
||||||
|
scope.launch { scaffoldState.drawerState.close() }
|
||||||
|
}
|
||||||
|
if(goToHw.value){
|
||||||
|
navController.navigate(AppNavRoute.HomeWorks)
|
||||||
|
scope.launch { scaffoldState.drawerState.close() }
|
||||||
|
}
|
||||||
|
if(goToSchedule.value){
|
||||||
|
navController.navigate(AppNavRoute.Schedule)
|
||||||
|
scope.launch { scaffoldState.drawerState.close() }
|
||||||
|
}
|
||||||
|
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.width(260.dp)
|
.width(260.dp)
|
||||||
@@ -114,15 +252,15 @@ fun DrawerContent() {
|
|||||||
DrawerMainButton(
|
DrawerMainButton(
|
||||||
icon = R.drawable.ic_marks.AsPainter(),
|
icon = R.drawable.ic_marks.AsPainter(),
|
||||||
text = R.string.title_marks.AsString()
|
text = R.string.title_marks.AsString()
|
||||||
) { /* TODO */ }
|
) { goToMarks.value = true }
|
||||||
DrawerMainButton(
|
DrawerMainButton(
|
||||||
icon = R.drawable.ic_homework.AsPainter(),
|
icon = R.drawable.ic_homework.AsPainter(),
|
||||||
text = R.string.title_hw.AsString()
|
text = R.string.title_hw.AsString()
|
||||||
) { /* TODO */ }
|
) { goToHw.value = true }
|
||||||
DrawerMainButton(
|
DrawerMainButton(
|
||||||
icon = R.drawable.ic_schedule.AsPainter(),
|
icon = R.drawable.ic_schedule.AsPainter(),
|
||||||
text = R.string.title_schedule.AsString()
|
text = R.string.title_schedule.AsString()
|
||||||
) { /* TODO */ }
|
) { goToSchedule.value = true }
|
||||||
DrawerMainButton(
|
DrawerMainButton(
|
||||||
icon = R.drawable.ic_settings.AsPainter(),
|
icon = R.drawable.ic_settings.AsPainter(),
|
||||||
text = R.string.title_settings.AsString()
|
text = R.string.title_settings.AsString()
|
||||||
@@ -232,7 +370,19 @@ fun LoginBackground() {
|
|||||||
alignment = Alignment.TopStart
|
alignment = Alignment.TopStart
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun BigLoginBackground() {
|
||||||
|
val icon = R.drawable.header_big.AsPainter()
|
||||||
|
Column(Modifier.fillMaxWidth()) {
|
||||||
|
Image(
|
||||||
|
painter = icon,
|
||||||
|
contentDescription = "",
|
||||||
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
alignment = Alignment.TopStart
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -299,8 +449,9 @@ fun MainTextField(
|
|||||||
.focusRequester(focusRequester)
|
.focusRequester(focusRequester)
|
||||||
.onFocusChanged {
|
.onFocusChanged {
|
||||||
if (it.isFocused)
|
if (it.isFocused)
|
||||||
if(isError.value) isError.value = false
|
if (isError.value) isError.value = false
|
||||||
},
|
}
|
||||||
|
.fillMaxWidth(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -352,28 +503,6 @@ fun ButtonPrev() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Preview
|
|
||||||
@Composable
|
|
||||||
fun DrawerPrev() {
|
|
||||||
Surface(
|
|
||||||
color = mainBlue
|
|
||||||
) {
|
|
||||||
DrawerContent()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Preview
|
|
||||||
@Composable
|
|
||||||
fun MainScaffoldPrev() {
|
|
||||||
MainScaffold(
|
|
||||||
icon = R.drawable.ic_marks.AsPainter(),
|
|
||||||
title = R.string.title_marks.AsString()
|
|
||||||
) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun CheckBoxed() {
|
fun CheckBoxed() {
|
||||||
@@ -417,7 +546,7 @@ fun MainCheckbox(
|
|||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
size: Float = 24f,
|
size: Float = 24f,
|
||||||
checkedColor: Color = mainBlue,
|
checkedColor: Color = mainBlue,
|
||||||
uncheckedColor: Color = white,
|
uncheckedColor: Color = lightGray,
|
||||||
checkmarkColor: Color = white,
|
checkmarkColor: Color = white,
|
||||||
onValueChange: () -> Unit
|
onValueChange: () -> Unit
|
||||||
) {
|
) {
|
||||||
@@ -491,4 +620,113 @@ fun MainButton(
|
|||||||
style = H1
|
style = H1
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun LoginScreenContent(
|
||||||
|
login: MutableState<String>,
|
||||||
|
password: MutableState<String>,
|
||||||
|
isError: MutableState<Boolean>,
|
||||||
|
isRememberMe: MutableState<Boolean>,
|
||||||
|
onSignIn: () -> Unit,
|
||||||
|
onSignUp: () -> Unit,
|
||||||
|
onForgetPassword: () -> Unit
|
||||||
|
) {
|
||||||
|
val configuration = LocalConfiguration.current
|
||||||
|
val screenWidth = configuration.screenWidthDp
|
||||||
|
|
||||||
|
var defaultPadding = 65.dp
|
||||||
|
|
||||||
|
val isNormal = screenWidth < 500
|
||||||
|
|
||||||
|
Box(Modifier.fillMaxSize()) {
|
||||||
|
|
||||||
|
if(!isNormal) BigLoginBackground()
|
||||||
|
|
||||||
|
Column(
|
||||||
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
|
modifier = Modifier.fillMaxWidth()
|
||||||
|
) {
|
||||||
|
if (isNormal) LoginBackground()
|
||||||
|
else {
|
||||||
|
defaultPadding *= 4
|
||||||
|
}
|
||||||
|
Row(horizontalArrangement = Arrangement.Center) {
|
||||||
|
Text(
|
||||||
|
text = R.string.title_welcome.AsString(),
|
||||||
|
style = Big,
|
||||||
|
textAlign = TextAlign.Center,
|
||||||
|
modifier = Modifier.padding(defaultPadding, 20.dp, defaultPadding, 40.dp),
|
||||||
|
color = dark
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Column(
|
||||||
|
modifier = Modifier.padding(defaultPadding, 0.dp)
|
||||||
|
) {
|
||||||
|
Column(Modifier.fillMaxWidth()) {
|
||||||
|
MainTextField(
|
||||||
|
value = login,
|
||||||
|
label = R.string.title_login.AsString(),
|
||||||
|
isError = isError
|
||||||
|
)
|
||||||
|
SpacerHeight(15.dp)
|
||||||
|
MainTextField(
|
||||||
|
value = password,
|
||||||
|
keyboardType = KeyboardType.Password,
|
||||||
|
label = R.string.title_password.AsString(),
|
||||||
|
isError = isError
|
||||||
|
)
|
||||||
|
}
|
||||||
|
SpacerHeight(5.dp)
|
||||||
|
Row(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.height(30.dp),
|
||||||
|
horizontalArrangement = Arrangement.SpaceBetween,
|
||||||
|
verticalAlignment = Alignment.CenterVertically
|
||||||
|
) {
|
||||||
|
Row(
|
||||||
|
modifier = Modifier.fillMaxHeight(),
|
||||||
|
verticalAlignment = Alignment.CenterVertically
|
||||||
|
) {
|
||||||
|
MainCheckbox(isRememberMe) { }
|
||||||
|
SpacerWidth(5.dp)
|
||||||
|
Text(
|
||||||
|
text = R.string.title_remember_me.AsString(),
|
||||||
|
style = MainText,
|
||||||
|
color = dark
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Text(
|
||||||
|
text = R.string.title_forget_password.AsString(),
|
||||||
|
style = MainText,
|
||||||
|
color = dark,
|
||||||
|
modifier = Modifier.clickable(onClick = onForgetPassword)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Column(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
.padding(0.dp, 10.dp),
|
||||||
|
verticalArrangement = Arrangement.Center
|
||||||
|
) {
|
||||||
|
MainButton(
|
||||||
|
text = R.string.title_sign_in.AsString(),
|
||||||
|
onClick = onSignIn
|
||||||
|
)
|
||||||
|
SpacerHeight(5.dp)
|
||||||
|
Text(
|
||||||
|
text = R.string.title_sign_up.AsString(),
|
||||||
|
modifier = Modifier
|
||||||
|
.clickable(onClick = onSignUp)
|
||||||
|
.padding(5.dp)
|
||||||
|
.fillMaxWidth(),
|
||||||
|
textAlign = TextAlign.Center,
|
||||||
|
style = Mini,
|
||||||
|
color = dark
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package ru.megboyzz.dnevnik.screens
|
||||||
|
|
||||||
|
import androidx.compose.material.ScaffoldState
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.navigation.NavController
|
||||||
|
import ru.megboyzz.dnevnik.AsPainter
|
||||||
|
import ru.megboyzz.dnevnik.AsString
|
||||||
|
import ru.megboyzz.dnevnik.R
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun HomeWorkScreen(
|
||||||
|
navController: NavController,
|
||||||
|
scaffoldState: ScaffoldState
|
||||||
|
) {
|
||||||
|
MainScaffold(
|
||||||
|
icon = R.drawable.ic_homework.AsPainter(),
|
||||||
|
title = R.string.title_hw.AsString(),
|
||||||
|
navController = navController,
|
||||||
|
scaffoldState = scaffoldState
|
||||||
|
) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,35 +1,28 @@
|
|||||||
package ru.megboyzz.dnevnik.screens
|
package ru.megboyzz.dnevnik.screens
|
||||||
|
|
||||||
import androidx.compose.foundation.Image
|
|
||||||
import androidx.compose.foundation.background
|
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.*
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
||||||
import androidx.compose.material.*
|
import androidx.compose.material.*
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
|
||||||
import androidx.compose.ui.graphics.vector.ImageVector
|
|
||||||
import androidx.compose.ui.modifier.modifierLocalOf
|
|
||||||
import androidx.compose.ui.platform.LocalConfiguration
|
import androidx.compose.ui.platform.LocalConfiguration
|
||||||
import androidx.compose.ui.platform.LocalContext
|
|
||||||
import androidx.compose.ui.platform.textInputServiceFactory
|
|
||||||
import androidx.compose.ui.res.vectorResource
|
|
||||||
import androidx.compose.ui.text.input.KeyboardType
|
import androidx.compose.ui.text.input.KeyboardType
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.navigation.NavController
|
||||||
import ru.megboyzz.dnevnik.AsString
|
import ru.megboyzz.dnevnik.AsString
|
||||||
import ru.megboyzz.dnevnik.R
|
import ru.megboyzz.dnevnik.R
|
||||||
import ru.megboyzz.dnevnik.SpacerHeight
|
import ru.megboyzz.dnevnik.SpacerHeight
|
||||||
import ru.megboyzz.dnevnik.SpacerWidth
|
import ru.megboyzz.dnevnik.SpacerWidth
|
||||||
|
import ru.megboyzz.dnevnik.navigation.AppNavRoute
|
||||||
import ru.megboyzz.dnevnik.ui.theme.*
|
import ru.megboyzz.dnevnik.ui.theme.*
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun LoginScreen() {
|
fun LoginScreen(navController: NavController) {
|
||||||
|
|
||||||
val login = remember {
|
val login = remember {
|
||||||
mutableStateOf("")
|
mutableStateOf("")
|
||||||
@@ -37,97 +30,20 @@ fun LoginScreen() {
|
|||||||
val password = remember {
|
val password = remember {
|
||||||
mutableStateOf("")
|
mutableStateOf("")
|
||||||
}
|
}
|
||||||
|
val isError = remember {
|
||||||
val configuration = LocalConfiguration.current
|
mutableStateOf(false)
|
||||||
val screenHeight = configuration.screenHeightDp
|
}
|
||||||
val screenWidth = configuration.screenWidthDp
|
val rememberMe = remember {
|
||||||
|
mutableStateOf(false)
|
||||||
val defaultModifier = Modifier.width(500.dp)
|
|
||||||
|
|
||||||
Column(
|
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
|
||||||
modifier = defaultModifier
|
|
||||||
) {
|
|
||||||
if(screenWidth < 500)
|
|
||||||
LoginBackground()
|
|
||||||
else{
|
|
||||||
defaultModifier.then(Modifier.fillMaxWidth())
|
|
||||||
}
|
|
||||||
Row(horizontalArrangement = Arrangement.Center) {
|
|
||||||
Text(
|
|
||||||
text = R.string.title_welcome.AsString(),
|
|
||||||
style = Big,
|
|
||||||
textAlign = TextAlign.Center,
|
|
||||||
modifier = Modifier.padding(65.dp, 20.dp, 65.dp, 40.dp)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
MainTextField(
|
|
||||||
value = login,
|
|
||||||
label = R.string.title_login.AsString()
|
|
||||||
)
|
|
||||||
SpacerHeight(15.dp)
|
|
||||||
MainTextField(
|
|
||||||
value = password,
|
|
||||||
keyboardType = KeyboardType.Password,
|
|
||||||
label = R.string.title_password.AsString()
|
|
||||||
)
|
|
||||||
Row(
|
|
||||||
modifier = Modifier
|
|
||||||
.fillMaxWidth()
|
|
||||||
.padding(65.dp, 10.dp)
|
|
||||||
.height(30.dp),
|
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
|
||||||
verticalAlignment = Alignment.CenterVertically
|
|
||||||
) {
|
|
||||||
Row(
|
|
||||||
modifier = Modifier.fillMaxHeight(),
|
|
||||||
verticalAlignment = Alignment.CenterVertically
|
|
||||||
) {
|
|
||||||
val checkedState = remember { mutableStateOf(true) }
|
|
||||||
MainCheckbox(checkedState) { /* TODO */ }
|
|
||||||
SpacerWidth(5.dp)
|
|
||||||
Text(
|
|
||||||
text = R.string.title_remember_me.AsString(),
|
|
||||||
style = MainText,
|
|
||||||
color = dark
|
|
||||||
)
|
|
||||||
}
|
|
||||||
Text(
|
|
||||||
text = R.string.title_forget_password.AsString(),
|
|
||||||
style = MainText,
|
|
||||||
color = dark,
|
|
||||||
modifier = Modifier.clickable{ /* TODO */ }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
Column(
|
|
||||||
modifier = Modifier
|
|
||||||
.fillMaxSize()
|
|
||||||
.padding(65.dp, 10.dp),
|
|
||||||
verticalArrangement = Arrangement.Center
|
|
||||||
) {
|
|
||||||
MainButton(text = R.string.title_sign_in.AsString()) {
|
|
||||||
/* TODO */
|
|
||||||
}
|
|
||||||
SpacerHeight(5.dp)
|
|
||||||
Text(
|
|
||||||
text = R.string.title_sign_up.AsString(),
|
|
||||||
modifier = Modifier
|
|
||||||
.clickable {
|
|
||||||
/* TODO */
|
|
||||||
}
|
|
||||||
.padding(5.dp)
|
|
||||||
.fillMaxWidth(),
|
|
||||||
textAlign = TextAlign.Center,
|
|
||||||
style = Mini
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Preview
|
LoginScreenContent(
|
||||||
@Composable
|
login = login,
|
||||||
fun LoginPagePrev() {
|
password = password,
|
||||||
LoginScreen()
|
isError = isError,
|
||||||
}
|
isRememberMe = rememberMe,
|
||||||
|
onSignIn = { navController.navigate(AppNavRoute.Marks.route) },
|
||||||
|
onSignUp = { /*TODO*/ },
|
||||||
|
onForgetPassword = { /* TODO */ }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,2 +1,24 @@
|
|||||||
package ru.megboyzz.dnevnik.screens
|
package ru.megboyzz.dnevnik.screens
|
||||||
|
|
||||||
|
import androidx.compose.material.ScaffoldState
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.navigation.NavController
|
||||||
|
import ru.megboyzz.dnevnik.AsPainter
|
||||||
|
import ru.megboyzz.dnevnik.AsString
|
||||||
|
import ru.megboyzz.dnevnik.R
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun MarksScreen(
|
||||||
|
navController: NavController,
|
||||||
|
scaffoldState: ScaffoldState
|
||||||
|
) {
|
||||||
|
MainScaffold(
|
||||||
|
icon = R.drawable.ic_marks.AsPainter(),
|
||||||
|
title = R.string.title_marks.AsString(),
|
||||||
|
navController = navController,
|
||||||
|
scaffoldState = scaffoldState
|
||||||
|
) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,2 +1,24 @@
|
|||||||
package ru.megboyzz.dnevnik.screens
|
package ru.megboyzz.dnevnik.screens
|
||||||
|
|
||||||
|
import androidx.compose.material.ScaffoldState
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.navigation.NavController
|
||||||
|
import ru.megboyzz.dnevnik.AsPainter
|
||||||
|
import ru.megboyzz.dnevnik.AsString
|
||||||
|
import ru.megboyzz.dnevnik.R
|
||||||
|
import ru.megboyzz.dnevnik.navigation.AppNavRoute
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ScheduleScreen(
|
||||||
|
navController: NavController,
|
||||||
|
scaffoldState: ScaffoldState
|
||||||
|
) {
|
||||||
|
MainScaffold(
|
||||||
|
icon = R.drawable.ic_schedule.AsPainter(),
|
||||||
|
title = R.string.title_schedule.AsString(),
|
||||||
|
navController = navController,
|
||||||
|
scaffoldState = scaffoldState
|
||||||
|
) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="150dp"
|
||||||
|
android:height="150dp"
|
||||||
|
android:viewportWidth="150"
|
||||||
|
android:viewportHeight="150">
|
||||||
|
<path
|
||||||
|
android:pathData="M0,0H150V120C150,136.57 136.57,150 120,150H0V0Z"
|
||||||
|
android:fillColor="#3C95FF"/>
|
||||||
|
<group>
|
||||||
|
<clip-path
|
||||||
|
android:pathData="M35,35h80v80h-80z"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M108.52,52.43L83.94,40.72C78.53,37.49 71.8,37.43 66.33,40.57L41.48,52.43C41.38,52.48 41.29,52.53 41.2,52.58C35.3,55.96 33.25,63.47 36.62,69.37C37.77,71.37 39.45,73.01 41.48,74.1L48.33,77.37V93.7C48.34,101 53.09,107.46 60.06,109.63C64.92,111.03 69.95,111.72 75,111.67C80.05,111.72 85.08,111.04 89.94,109.64C96.91,107.47 101.66,101.02 101.67,93.72V77.36L108.33,74.17V101.67C108.33,103.51 109.82,105 111.67,105C113.51,105 115,103.51 115,101.67V61.67C115.02,57.75 111.93,54.14 108.52,52.43ZM95,93.72C95,98.08 92.17,101.95 88,103.26C83.77,104.47 79.39,105.05 75,105C70.6,105.05 66.23,104.47 62,103.26C57.83,101.95 55,98.08 55,93.72V80.54L66.06,85.81C68.78,87.43 71.9,88.28 75.07,88.27C78.09,88.29 81.06,87.49 83.66,85.96L95,80.54V93.72ZM105.67,68.08L80.53,80.08C77.02,82.12 72.68,82.07 69.23,79.93L44.63,68.23C41.89,66.75 40.86,63.33 42.34,60.59C42.84,59.66 43.59,58.9 44.51,58.37L69.49,46.44C73,44.4 77.34,44.46 80.79,46.59L105.37,58.3C107.18,59.3 108.31,61.2 108.33,63.27C108.34,65.22 107.33,67.05 105.67,68.08Z"
|
||||||
|
android:fillColor="#ffffff"/>
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
@@ -7,4 +7,8 @@
|
|||||||
<color name="teal_700">#FF018786</color>
|
<color name="teal_700">#FF018786</color>
|
||||||
<color name="black">#FF000000</color>
|
<color name="black">#FF000000</color>
|
||||||
<color name="white">#FFFFFFFF</color>
|
<color name="white">#FFFFFFFF</color>
|
||||||
|
|
||||||
|
<color name="statusBlue">#3077CC</color>
|
||||||
|
<color name="backGround">#FFF4F4F4</color>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
<string name="title_header">Добро пожаловать в дневник</string>
|
<string name="title_header">Добро пожаловать в дневник</string>
|
||||||
<string name="title_marks">Оценки</string>
|
<string name="title_marks">Оценки</string>
|
||||||
<string name="title_schedule">Расписание</string>
|
<string name="title_schedule">Расписание</string>
|
||||||
<string name="title_hw">Домашнее занадние</string>
|
<string name="title_hw">Домашнее задание</string>
|
||||||
<string name="title_settings">Настройки</string>
|
<string name="title_settings">Настройки</string>
|
||||||
<string name="title_leave_from_acconut">Выйти из аккаунта</string>
|
<string name="title_leave_from_acconut">Выйти из аккаунта</string>
|
||||||
<string name="title_welcome">Добро пожаловать в дневник</string>
|
<string name="title_welcome">Добро пожаловать в дневник</string>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<style name="Theme.MyDnevnik" parent="android:Theme.Material.Light.NoActionBar">
|
<style name="Theme.MyDnevnik" parent="android:Theme.Material.Light.NoActionBar">
|
||||||
<item name="android:statusBarColor">@color/purple_700</item>
|
<item name="android:statusBarColor">@color/statusBlue</item>
|
||||||
|
<item name="android:colorBackground">@color/backGround</item>
|
||||||
</style>
|
</style>
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user