Лечение детских болезней Drawer, фикс Settings
This commit is contained in:
@@ -12,6 +12,7 @@ import androidx.compose.ui.unit.dp
|
||||
import androidx.navigation.NavController
|
||||
import ru.megboyzz.dnevnik.*
|
||||
import ru.megboyzz.dnevnik.R
|
||||
import ru.megboyzz.dnevnik.navigation.AppNavRoute
|
||||
import ru.megboyzz.dnevnik.screens.ui.UnderlinedText
|
||||
import ru.megboyzz.dnevnik.screens.ui.main.SettingsScaffold
|
||||
import ru.megboyzz.dnevnik.ui.theme.H2
|
||||
@@ -23,9 +24,7 @@ fun SettingsScreen(
|
||||
) {
|
||||
|
||||
SettingsScaffold(
|
||||
onLeave = {
|
||||
//navController.navigate()
|
||||
},
|
||||
onLeave = { navController.navigate(AppNavRoute.Marks) },
|
||||
scaffoldState = scaffoldState,
|
||||
navController = navController
|
||||
) {
|
||||
|
||||
@@ -20,9 +20,12 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.kizitonwose.calendar.core.daysOfWeek
|
||||
import ru.megboyzz.dnevnik.navigate
|
||||
import ru.megboyzz.dnevnik.navigation.AppNavRoute
|
||||
import ru.megboyzz.dnevnik.screens.SettingsScreen
|
||||
import ru.megboyzz.dnevnik.screens.ui.*
|
||||
import ru.megboyzz.dnevnik.screens.ui.calendar.NiceCalendar
|
||||
import ru.megboyzz.dnevnik.screens.ui.main.DrawerContent
|
||||
import ru.megboyzz.dnevnik.screens.ui.main.SettingsScaffold
|
||||
import ru.megboyzz.dnevnik.screens.ui.piechart.PieChart
|
||||
import ru.megboyzz.dnevnik.screens.ui.piechart.PieChartCard
|
||||
@@ -363,7 +366,7 @@ fun ScaffoldTest() {
|
||||
val scaffoldState = rememberScaffoldState()
|
||||
val navController = rememberNavController()
|
||||
SettingsScaffold(
|
||||
onLeave = { /*TODO*/ },
|
||||
onLeave = { navController.navigate(AppNavRoute.Marks) },
|
||||
scaffoldState = scaffoldState,
|
||||
navController = navController
|
||||
) {
|
||||
|
||||
@@ -1,18 +1,22 @@
|
||||
package ru.megboyzz.dnevnik.screens.ui
|
||||
package ru.megboyzz.dnevnik.screens.ui.main
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.Divider
|
||||
import androidx.compose.material.ScaffoldState
|
||||
import androidx.compose.material.Surface
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.draw.shadow
|
||||
import androidx.compose.ui.geometry.CornerRadius
|
||||
import androidx.compose.ui.geometry.Rect
|
||||
import androidx.compose.ui.geometry.RoundRect
|
||||
import androidx.compose.ui.geometry.Size
|
||||
import androidx.compose.ui.graphics.Color
|
||||
@@ -22,15 +26,51 @@ import androidx.compose.ui.graphics.painter.Painter
|
||||
import androidx.compose.ui.unit.Density
|
||||
import androidx.compose.ui.unit.LayoutDirection
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.zIndex
|
||||
import androidx.navigation.NavController
|
||||
import kotlinx.coroutines.launch
|
||||
import ru.megboyzz.dnevnik.*
|
||||
import ru.megboyzz.dnevnik.R
|
||||
import ru.megboyzz.dnevnik.navigation.AppNavRoute
|
||||
import ru.megboyzz.dnevnik.screens.ui.AlmostOutlinedText
|
||||
import ru.megboyzz.dnevnik.screens.ui.ProfileCard
|
||||
import ru.megboyzz.dnevnik.ui.theme.H2
|
||||
import ru.megboyzz.dnevnik.ui.theme.Shapes
|
||||
import ru.megboyzz.dnevnik.ui.theme.mainBlue
|
||||
import ru.megboyzz.dnevnik.ui.theme.white
|
||||
|
||||
@SuppressLint("CoroutineCreationDuringComposition")
|
||||
|
||||
@Composable
|
||||
fun NiceContainerForDrawer(
|
||||
content: @Composable () -> Unit
|
||||
) {
|
||||
|
||||
val elevation = 16.dp
|
||||
|
||||
val shape = RoundedCornerShape(
|
||||
topEnd = 20.dp,
|
||||
bottomEnd = 20.dp
|
||||
)
|
||||
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.shadow(elevation)
|
||||
.zIndex(1f)
|
||||
.clip(shape)
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.background(
|
||||
color = mainBlue,
|
||||
shape = shape
|
||||
)
|
||||
.clip(shape)
|
||||
) {
|
||||
content.invoke()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun DrawerContent(
|
||||
navController: NavController,
|
||||
@@ -38,93 +78,69 @@ fun DrawerContent(
|
||||
) {
|
||||
|
||||
val scope = rememberCoroutineScope()
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.width(260.dp)
|
||||
.fillMaxSize()
|
||||
.padding(10.dp),
|
||||
horizontalAlignment = Alignment.Start
|
||||
){
|
||||
SpacerHeight(10.dp)
|
||||
ProfileCard(painter = R.drawable.ic_author.AsPainter())
|
||||
SpacerHeight(15.dp)
|
||||
AlmostOutlinedText(text = "Идет 3-я четверть")
|
||||
SpacerHeight(20.dp)
|
||||
NiceContainerForDrawer {
|
||||
Column(
|
||||
verticalArrangement = Arrangement.spacedBy(5.dp),
|
||||
modifier = Modifier.padding(5.dp, 0.dp)
|
||||
modifier = Modifier
|
||||
.width(260.dp)
|
||||
.fillMaxSize()
|
||||
.padding(10.dp)
|
||||
.background(mainBlue),
|
||||
horizontalAlignment = Alignment.Start,
|
||||
) {
|
||||
DrawerMainButton(
|
||||
icon = R.drawable.ic_marks.AsPainter(),
|
||||
text = R.string.title_marks.AsString(),
|
||||
onClick = {
|
||||
navController.navigate(AppNavRoute.Marks)
|
||||
scope.launch { scaffoldState.drawerState.close() }
|
||||
}
|
||||
)
|
||||
DrawerMainButton(
|
||||
icon = R.drawable.ic_homework.AsPainter(),
|
||||
text = R.string.title_hw.AsString(),
|
||||
onClick = {
|
||||
navController.navigate(AppNavRoute.HomeWorks)
|
||||
scope.launch { scaffoldState.drawerState.close() }
|
||||
}
|
||||
)
|
||||
DrawerMainButton(
|
||||
icon = R.drawable.ic_schedule.AsPainter(),
|
||||
text = R.string.title_schedule.AsString(),
|
||||
onClick = {
|
||||
navController.navigate(AppNavRoute.Schedule)
|
||||
scope.launch { scaffoldState.drawerState.close() }
|
||||
}
|
||||
)
|
||||
DrawerMainButton(
|
||||
icon = R.drawable.ic_settings.AsPainter(),
|
||||
text = R.string.title_settings.AsString(),
|
||||
onClick = {
|
||||
navController.navigate(AppNavRoute.Settings)
|
||||
scope.launch { scaffoldState.drawerState.close() }
|
||||
}
|
||||
)
|
||||
}
|
||||
Spacer(Modifier.weight(1f))
|
||||
Divider(color = white, thickness = 1.dp)
|
||||
SpacerHeight(5.dp)
|
||||
Column(Modifier.padding(5.dp, 0.dp)) {
|
||||
DrawerMainButton(
|
||||
icon = R.drawable.ic_exit.AsPainter(),
|
||||
text = R.string.title_leave_from_acconut.AsString()
|
||||
) { /* TODO */ }
|
||||
SpacerHeight(10.dp)
|
||||
ProfileCard(painter = R.drawable.ic_author.AsPainter())
|
||||
SpacerHeight(15.dp)
|
||||
AlmostOutlinedText(text = "Идет 3-я четверть")
|
||||
SpacerHeight(20.dp)
|
||||
Column(
|
||||
verticalArrangement = Arrangement.spacedBy(5.dp),
|
||||
) {
|
||||
DrawerMainButton(
|
||||
icon = R.drawable.ic_marks.AsPainter(),
|
||||
text = R.string.title_marks.AsString(),
|
||||
onClick = {
|
||||
navController.navigate(AppNavRoute.Marks)
|
||||
scope.launch { scaffoldState.drawerState.close() }
|
||||
}
|
||||
)
|
||||
DrawerMainButton(
|
||||
icon = R.drawable.ic_homework.AsPainter(),
|
||||
text = R.string.title_hw.AsString(),
|
||||
onClick = {
|
||||
navController.navigate(AppNavRoute.HomeWorks)
|
||||
scope.launch { scaffoldState.drawerState.close() }
|
||||
}
|
||||
)
|
||||
DrawerMainButton(
|
||||
icon = R.drawable.ic_schedule.AsPainter(),
|
||||
text = R.string.title_schedule.AsString(),
|
||||
onClick = {
|
||||
navController.navigate(AppNavRoute.Schedule)
|
||||
scope.launch { scaffoldState.drawerState.close() }
|
||||
}
|
||||
)
|
||||
DrawerMainButton(
|
||||
icon = R.drawable.ic_settings.AsPainter(),
|
||||
text = R.string.title_settings.AsString(),
|
||||
onClick = {
|
||||
navController.navigate(AppNavRoute.Settings)
|
||||
scope.launch { scaffoldState.drawerState.close() }
|
||||
}
|
||||
)
|
||||
}
|
||||
Spacer(Modifier.weight(1f))
|
||||
Divider(color = white, thickness = 1.dp)
|
||||
SpacerHeight(5.dp)
|
||||
Column(Modifier.padding(5.dp, 0.dp)) {
|
||||
DrawerMainButton(
|
||||
icon = R.drawable.ic_exit.AsPainter(),
|
||||
text = R.string.title_leave_from_acconut.AsString()
|
||||
) { /* TODO */ }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val drawerShape = object : Shape {
|
||||
override fun createOutline(
|
||||
size: Size,
|
||||
layoutDirection: LayoutDirection,
|
||||
density: Density
|
||||
): Outline.Rounded {
|
||||
|
||||
val radius = CornerRadius(30f, 30f)
|
||||
val nullRadius = CornerRadius.Zero
|
||||
|
||||
return Outline.Rounded(
|
||||
RoundRect(
|
||||
left = 0f,
|
||||
top = 0f,
|
||||
right = size.width * 26 / 36,
|
||||
bottom = size.height,
|
||||
topLeftCornerRadius = nullRadius,
|
||||
topRightCornerRadius = radius,
|
||||
bottomRightCornerRadius = radius,
|
||||
bottomLeftCornerRadius = nullRadius
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun DrawerMainButton(
|
||||
icon: Painter,
|
||||
@@ -132,26 +148,23 @@ fun DrawerMainButton(
|
||||
textColor: Color = white,
|
||||
onClick: () -> Unit = {}
|
||||
) {
|
||||
Column(
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.height(30.dp)
|
||||
.mainClickable(onClick = onClick),
|
||||
verticalArrangement = Arrangement.Center
|
||||
) {
|
||||
Row(
|
||||
horizontalArrangement = Arrangement.Start
|
||||
){
|
||||
Image(
|
||||
painter = icon,
|
||||
contentDescription = "icon"
|
||||
)
|
||||
SpacerWidth(13.dp)
|
||||
Text(
|
||||
text = text,
|
||||
style = H2,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
.mainClickable { onClick.invoke() }
|
||||
){
|
||||
Image(
|
||||
painter = icon,
|
||||
contentDescription = "icon",
|
||||
Modifier.padding(start = 10.dp)
|
||||
)
|
||||
SpacerWidth(13.dp)
|
||||
Text(
|
||||
text = text,
|
||||
style = H2,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -22,8 +22,6 @@ import kotlinx.coroutines.launch
|
||||
import ru.megboyzz.dnevnik.AsPainter
|
||||
import ru.megboyzz.dnevnik.AsString
|
||||
import ru.megboyzz.dnevnik.SpacerWidth
|
||||
import ru.megboyzz.dnevnik.screens.ui.DrawerContent
|
||||
import ru.megboyzz.dnevnik.screens.ui.drawerShape
|
||||
import ru.megboyzz.dnevnik.ui.theme.mainBlue
|
||||
import ru.megboyzz.dnevnik.ui.theme.white
|
||||
import ru.megboyzz.dnevnik.R
|
||||
@@ -32,7 +30,6 @@ import ru.megboyzz.dnevnik.R
|
||||
fun MainScaffold(
|
||||
icon: Painter,
|
||||
title: String,
|
||||
/* TODO viewModel */
|
||||
navController: NavController,
|
||||
scaffoldState: ScaffoldState,
|
||||
content: (@Composable (it: PaddingValues) -> Unit),
|
||||
@@ -99,10 +96,13 @@ fun BaseScaffold(
|
||||
}
|
||||
},
|
||||
content = content,
|
||||
drawerBackgroundColor = mainBlue,
|
||||
drawerContentColor = white,
|
||||
drawerShape = drawerShape,
|
||||
drawerContent = { DrawerContent(navController, scaffoldState) },
|
||||
drawerBackgroundColor = Color.Transparent,
|
||||
drawerContentColor = Color.Transparent,
|
||||
//drawerShape = drawerShape,
|
||||
drawerElevation = 0.dp,
|
||||
drawerContent = {
|
||||
DrawerContent(navController, scaffoldState)
|
||||
},
|
||||
bottomBar = bottomBar
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
import org.gradle.api.artifacts.dsl.DependencyHandler
|
||||
|
||||
//TODO - придумать обработчик зависмостей основанный на рефлексии
|
||||
|
||||
object AppLibraries: DependencyList() {
|
||||
|
||||
//std lib
|
||||
|
||||
Reference in New Issue
Block a user