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