ui improvements, now even marks are animated

This commit is contained in:
Odweta
2025-01-03 10:06:15 +01:00
parent cc86373989
commit e9a422eda0
6 changed files with 161 additions and 476 deletions
-340
View File
@@ -1,340 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DeviceStreaming">
<option name="deviceSelectionList">
<list>
<PersistentDeviceSelectionData>
<option name="api" value="27" />
<option name="brand" value="DOCOMO" />
<option name="codename" value="F01L" />
<option name="id" value="F01L" />
<option name="manufacturer" value="FUJITSU" />
<option name="name" value="F-01L" />
<option name="screenDensity" value="360" />
<option name="screenX" value="720" />
<option name="screenY" value="1280" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="OPPO" />
<option name="codename" value="OP573DL1" />
<option name="id" value="OP573DL1" />
<option name="manufacturer" value="OPPO" />
<option name="name" value="CPH2557" />
<option name="screenDensity" value="480" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="28" />
<option name="brand" value="DOCOMO" />
<option name="codename" value="SH-01L" />
<option name="id" value="SH-01L" />
<option name="manufacturer" value="SHARP" />
<option name="name" value="AQUOS sense2 SH-01L" />
<option name="screenDensity" value="480" />
<option name="screenX" value="1080" />
<option name="screenY" value="2160" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="Lenovo" />
<option name="codename" value="TB370FU" />
<option name="id" value="TB370FU" />
<option name="manufacturer" value="Lenovo" />
<option name="name" value="Tab P12" />
<option name="screenDensity" value="340" />
<option name="screenX" value="1840" />
<option name="screenY" value="2944" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="31" />
<option name="brand" value="samsung" />
<option name="codename" value="a51" />
<option name="id" value="a51" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy A51" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="google" />
<option name="codename" value="akita" />
<option name="id" value="akita" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 8a" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="samsung" />
<option name="codename" value="b0q" />
<option name="id" value="b0q" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy S22 Ultra" />
<option name="screenDensity" value="600" />
<option name="screenX" value="1440" />
<option name="screenY" value="3088" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="32" />
<option name="brand" value="google" />
<option name="codename" value="bluejay" />
<option name="id" value="bluejay" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 6a" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="google" />
<option name="codename" value="caiman" />
<option name="id" value="caiman" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 9 Pro" />
<option name="screenDensity" value="360" />
<option name="screenX" value="960" />
<option name="screenY" value="2142" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="google" />
<option name="codename" value="comet" />
<option name="id" value="comet" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 9 Pro Fold" />
<option name="screenDensity" value="390" />
<option name="screenX" value="2076" />
<option name="screenY" value="2152" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="29" />
<option name="brand" value="samsung" />
<option name="codename" value="crownqlteue" />
<option name="id" value="crownqlteue" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy Note9" />
<option name="screenDensity" value="420" />
<option name="screenX" value="2220" />
<option name="screenY" value="1080" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="samsung" />
<option name="codename" value="dm3q" />
<option name="id" value="dm3q" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy S23 Ultra" />
<option name="screenDensity" value="600" />
<option name="screenX" value="1440" />
<option name="screenY" value="3088" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="samsung" />
<option name="codename" value="e1q" />
<option name="id" value="e1q" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy S24" />
<option name="screenDensity" value="480" />
<option name="screenX" value="1080" />
<option name="screenY" value="2340" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="google" />
<option name="codename" value="felix" />
<option name="id" value="felix" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel Fold" />
<option name="screenDensity" value="420" />
<option name="screenX" value="2208" />
<option name="screenY" value="1840" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="google" />
<option name="codename" value="felix" />
<option name="id" value="felix" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel Fold" />
<option name="screenDensity" value="420" />
<option name="screenX" value="2208" />
<option name="screenY" value="1840" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="google" />
<option name="codename" value="felix_camera" />
<option name="id" value="felix_camera" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel Fold (Camera-enabled)" />
<option name="screenDensity" value="420" />
<option name="screenX" value="2208" />
<option name="screenY" value="1840" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="samsung" />
<option name="codename" value="gts8uwifi" />
<option name="id" value="gts8uwifi" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy Tab S8 Ultra" />
<option name="screenDensity" value="320" />
<option name="screenX" value="1848" />
<option name="screenY" value="2960" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="google" />
<option name="codename" value="husky" />
<option name="id" value="husky" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 8 Pro" />
<option name="screenDensity" value="390" />
<option name="screenX" value="1008" />
<option name="screenY" value="2244" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="30" />
<option name="brand" value="motorola" />
<option name="codename" value="java" />
<option name="id" value="java" />
<option name="manufacturer" value="Motorola" />
<option name="name" value="G20" />
<option name="screenDensity" value="280" />
<option name="screenX" value="720" />
<option name="screenY" value="1600" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="google" />
<option name="codename" value="komodo" />
<option name="id" value="komodo" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 9 Pro XL" />
<option name="screenDensity" value="360" />
<option name="screenX" value="1008" />
<option name="screenY" value="2244" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="google" />
<option name="codename" value="lynx" />
<option name="id" value="lynx" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 7a" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="31" />
<option name="brand" value="google" />
<option name="codename" value="oriole" />
<option name="id" value="oriole" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 6" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="google" />
<option name="codename" value="panther" />
<option name="id" value="panther" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 7" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="samsung" />
<option name="codename" value="q5q" />
<option name="id" value="q5q" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy Z Fold5" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1812" />
<option name="screenY" value="2176" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="samsung" />
<option name="codename" value="q6q" />
<option name="id" value="q6q" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy Z Fold6" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1856" />
<option name="screenY" value="2160" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="30" />
<option name="brand" value="google" />
<option name="codename" value="r11" />
<option name="id" value="r11" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel Watch" />
<option name="screenDensity" value="320" />
<option name="screenX" value="384" />
<option name="screenY" value="384" />
<option name="type" value="WEAR_OS" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="30" />
<option name="brand" value="google" />
<option name="codename" value="redfin" />
<option name="id" value="redfin" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 5" />
<option name="screenDensity" value="440" />
<option name="screenX" value="1080" />
<option name="screenY" value="2340" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="google" />
<option name="codename" value="shiba" />
<option name="id" value="shiba" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 8" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="google" />
<option name="codename" value="tangorpro" />
<option name="id" value="tangorpro" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel Tablet" />
<option name="screenDensity" value="320" />
<option name="screenX" value="1600" />
<option name="screenY" value="2560" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="google" />
<option name="codename" value="tokay" />
<option name="id" value="tokay" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 9" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2424" />
</PersistentDeviceSelectionData>
</list>
</option>
</component>
</project>
@@ -33,9 +33,7 @@ interface BackButtonFactoryInterface {
@Composable @Composable
fun BackButton(onClick: () -> Unit) { fun BackButton(onClick: () -> Unit) {
Box( Box(
modifier = Modifier modifier = Modifier.padding(start = 10.dp)
.fillMaxWidth()
.padding(start = 5.dp)
) { ) {
Button( Button(
onClick = onClick, onClick = onClick,
@@ -66,7 +64,10 @@ object BackButtonFactory: BackButtonFactoryInterface {
override fun get(type: BackButtonType): @Composable () -> Unit { override fun get(type: BackButtonType): @Composable () -> Unit {
return when (type) { return when (type) {
BackButtonType.Menu -> { { BackButton { global.currentScreenElement = ScreenElement.Menu } } } BackButtonType.Menu -> { { BackButton { global.currentScreenElement = ScreenElement.Menu } } }
BackButtonType.MarksAll -> { { BackButton { global.marksDepthLevel = MarksDepthLevel.All } } } BackButtonType.MarksAll -> { { BackButton {
global.currentScreenElement = ScreenElement.Marks
global.marksDepthLevel = MarksDepthLevel.All
} } }
BackButtonType.MarksSubject -> { { BackButton { global.marksDepthLevel = MarksDepthLevel.Subject } } } BackButtonType.MarksSubject -> { { BackButton { global.marksDepthLevel = MarksDepthLevel.Subject } } }
} }
} }
@@ -22,7 +22,6 @@ import androidx.compose.ui.unit.dp
import com.odweta.solon.ui.theme.PastelYellow import com.odweta.solon.ui.theme.PastelYellow
import org.json.JSONObject import org.json.JSONObject
import java.io.File import java.io.File
import java.time.LocalDate
import java.time.LocalDateTime import java.time.LocalDateTime
enum class Screen { enum class Screen {
@@ -197,6 +196,8 @@ class Mark {
enum class ScreenElement { enum class ScreenElement {
Timetable, Timetable,
Marks, Marks,
NewMarks,
FinalMarks,
Menu, Menu,
About, About,
Settings, Settings,
@@ -3,16 +3,6 @@ package com.odweta.solon
import android.os.Bundle import android.os.Bundle
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.animation.SizeTransform
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.animation.slideInVertically
import androidx.compose.animation.slideOutVertically
import androidx.compose.animation.togetherWith
import androidx.compose.animation.with
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -73,6 +63,8 @@ class MainActivity : ComponentActivity() {
when (targetScreen) { when (targetScreen) {
ScreenElement.Timetable -> TimetableScreen() ScreenElement.Timetable -> TimetableScreen()
ScreenElement.Marks -> MarksScreen() ScreenElement.Marks -> MarksScreen()
ScreenElement.NewMarks -> NewMarksScreen()
ScreenElement.FinalMarks -> FinalMarksScreen()
ScreenElement.Menu -> MenuScreen() ScreenElement.Menu -> MenuScreen()
ScreenElement.About -> AboutScreen() ScreenElement.About -> AboutScreen()
ScreenElement.Settings -> SettingsScreen() ScreenElement.Settings -> SettingsScreen()
+142 -121
View File
@@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
@@ -22,8 +21,6 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AutoAwesome import androidx.compose.material.icons.filled.AutoAwesome
import androidx.compose.material.icons.filled.WorkspacePremium import androidx.compose.material.icons.filled.WorkspacePremium
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonColors
import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -33,20 +30,16 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
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.shadow
import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shadow import androidx.compose.ui.graphics.Shadow
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
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.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogProperties
import androidx.compose.ui.zIndex
import com.odweta.solon.ui.theme.PastelGreen import com.odweta.solon.ui.theme.PastelGreen
import com.odweta.solon.ui.theme.PastelGreenTransparent import com.odweta.solon.ui.theme.PastelGreenTransparent
import com.odweta.solon.ui.theme.PastelOrange import com.odweta.solon.ui.theme.PastelOrange
@@ -57,7 +50,6 @@ import com.odweta.solon.ui.theme.PastelRed
import com.odweta.solon.ui.theme.PastelRedTransparent import com.odweta.solon.ui.theme.PastelRedTransparent
import com.odweta.solon.ui.theme.PastelYellow import com.odweta.solon.ui.theme.PastelYellow
import com.odweta.solon.ui.theme.PastelYellowTransparent import com.odweta.solon.ui.theme.PastelYellowTransparent
import java.time.LocalDate
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
var showNewMarksDialog by mutableStateOf(false) var showNewMarksDialog by mutableStateOf(false)
@@ -71,39 +63,33 @@ enum class MarksDepthLevel {
@Composable @Composable
fun MarksScreen() { fun MarksScreen() {
when (global.marksDepthLevel) { Animate(global.marksDepthLevel) { targetDepthLevel ->
MarksDepthLevel.All -> MarksAll() when (targetDepthLevel) {
MarksDepthLevel.Subject -> MarksSubject() MarksDepthLevel.All -> MarksAll()
MarksDepthLevel.Detail -> MarksDetail() MarksDepthLevel.Subject -> MarksSubject()
MarksDepthLevel.Detail -> MarksDetail()
}
} }
NewMarksDialog()
FinalMarksDialog()
} }
@Composable @Composable
fun NewMarksDialog() { fun NewMarksScreen() {
if (showNewMarksDialog) { BackHandler { global.currentScreenElement = ScreenElement.Marks }
val ss = rememberScrollState()
Dialog( val ss = rememberScrollState()
onDismissRequest = { showNewMarksDialog = false }, Column(
properties = DialogProperties( horizontalAlignment = Alignment.CenterHorizontally
dismissOnBackPress = true, ) {
dismissOnClickOutside = true Row(
) verticalAlignment = Alignment.CenterVertically
) { ) {
Column( backButtonFactory.get(BackButtonType.MarksAll)()
Modifier
.verticalScroll(ss) Box(
.padding(vertical = 10.dp), modifier = Modifier.weight(1f),
horizontalAlignment = Alignment.CenterHorizontally contentAlignment = Alignment.Center
) { ) {
Text( Row(
"Nové známky",
color = Color.White,
fontWeight = FontWeight.Bold,
fontSize = 30.sp,
textAlign = TextAlign.Center,
modifier = Modifier modifier = Modifier
.background( .background(
color = Color.Black, color = Color.Black,
@@ -114,75 +100,92 @@ fun NewMarksDialog() {
color = PastelYellow, color = PastelYellow,
width = global.dimens.borderWidth width = global.dimens.borderWidth
) )
.padding(10.dp) .height(70.dp)
) .padding(10.dp),
Spacer(Modifier.height(10.dp)) verticalAlignment = Alignment.CenterVertically
for ((k, v) in global.newMarks) { ) {
if (v.size > 0) { Text(
Column( "Nové známky",
modifier = Modifier color = Color.White,
.padding(10.dp) fontWeight = FontWeight.Bold,
.border( fontSize = 30.sp,
shape = RoundedCornerShape(global.dimens.roundedCorner), textAlign = TextAlign.Center
color = PastelYellow, )
width = global.dimens.borderWidth }
) }
.background( }
Color.Black,
shape = RoundedCornerShape(global.dimens.roundedCorner) Spacer(Modifier.height(10.dp))
)
.fillMaxWidth(), Column(
horizontalAlignment = Alignment.CenterHorizontally modifier = Modifier.verticalScroll(ss)
) { ) {
Text( for ((k, v) in global.newMarks) {
k, if (v.size > 0) {
color = Color.White, Column(
modifier = Modifier.padding(10.dp), modifier = Modifier
fontWeight = FontWeight.Bold, .padding(horizontal = 10.dp)
fontSize = 30.sp .padding(bottom = 10.dp)
.border(
shape = RoundedCornerShape(global.dimens.roundedCorner),
color = PastelYellow,
width = global.dimens.borderWidth
) )
for (i in v) { .background(
Row( Color.Black,
Modifier.padding(10.dp), shape = RoundedCornerShape(global.dimens.roundedCorner)
verticalAlignment = Alignment.CenterVertically )
.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
k,
color = Color.White,
modifier = Modifier.padding(10.dp),
fontWeight = FontWeight.Bold,
fontSize = 30.sp
)
for (i in v) {
Row(
Modifier.padding(10.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(
i.theme,
color = Color.White,
modifier = Modifier
.padding(end = 5.dp, top = 5.dp)
.weight(1f)
)
Column(
horizontalAlignment = Alignment.End
) { ) {
Text( Text(
i.theme, i.grade + " * " + i.weight,
color = Color.White, color = Color.White,
modifier = Modifier modifier = Modifier
.padding(end = 5.dp, top = 5.dp) .background(
.weight(1f) color = getAvgColor(i.grade, true),
) shape = RoundedCornerShape(global.dimens.roundedCorner)
Column( )
horizontalAlignment = Alignment.End .padding(5.dp),
) { style = TextStyle(
Text( shadow = Shadow(
i.grade + " * " + i.weight, color = Color.Black,
color = Color.White, offset = Offset(4f, 4f),
modifier = Modifier blurRadius = 8f
.background(
color = getAvgColor(i.grade, true),
shape = RoundedCornerShape(global.dimens.roundedCorner)
)
.padding(5.dp),
style = TextStyle(
shadow = Shadow(
color = Color.Black,
offset = Offset(4f, 4f),
blurRadius = 8f
)
) )
) )
Text( )
i.editDate.format( Text(
DateTimeFormatter.ofPattern("dd. MM. yyyy") i.editDate.format(
), DateTimeFormatter.ofPattern("dd. MM. yyyy")
color = Color.White ),
) color = Color.White
} )
} }
HorizontalLine()
} }
HorizontalLine()
} }
} }
} }
@@ -192,29 +195,23 @@ fun NewMarksDialog() {
} }
@Composable @Composable
fun FinalMarksDialog() { fun FinalMarksScreen() {
if (showFinalMarksDialog) { BackHandler { global.currentScreenElement = ScreenElement.Marks }
val ss = rememberScrollState()
Dialog( val ss = rememberScrollState()
onDismissRequest = { showFinalMarksDialog = false }, Column(
properties = DialogProperties( horizontalAlignment = Alignment.CenterHorizontally
dismissOnBackPress = true, ) {
dismissOnClickOutside = true Row(
) verticalAlignment = Alignment.CenterVertically
) { ) {
Column( backButtonFactory.get(BackButtonType.MarksAll)()
Modifier
.verticalScroll(ss) Box(
.padding(vertical = 10.dp), modifier = Modifier.weight(1f),
horizontalAlignment = Alignment.CenterHorizontally contentAlignment = Alignment.Center
) { ) {
Text( Row(
"Uzavřené známky",
color = Color.White,
fontWeight = FontWeight.Bold,
fontSize = 30.sp,
textAlign = TextAlign.Center,
modifier = Modifier modifier = Modifier
.background( .background(
color = Color.Black, color = Color.Black,
@@ -225,10 +222,35 @@ fun FinalMarksDialog() {
color = PastelYellow, color = PastelYellow,
width = global.dimens.borderWidth width = global.dimens.borderWidth
) )
.padding(10.dp) .height(70.dp)
) .padding(10.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(
"Uzavřené známky",
color = Color.White,
fontWeight = FontWeight.Bold,
fontSize = 30.sp,
textAlign = TextAlign.Center
)
}
} }
} }
Spacer(Modifier.height(10.dp))
Column(
modifier = Modifier.verticalScroll(ss)
) {
Text("test", color = Color.White)
Text("test", color = Color.White)
Text("test", color = Color.White)
Text("test", color = Color.White)
Text("test", color = Color.White)
Text("test", color = Color.White)
Text("test", color = Color.White)
Text("test", color = Color.White)
}
} }
} }
@@ -420,12 +442,12 @@ fun MarksAll() {
Box(Modifier.fillMaxSize()) { Box(Modifier.fillMaxSize()) {
Row( Row(
modifier = Modifier.align(Alignment.BottomCenter) modifier = Modifier
.align(Alignment.BottomCenter)
) { ) {
FloatingActionButton( FloatingActionButton(
onClick = { showNewMarksDialog = true }, onClick = { global.currentScreenElement = ScreenElement.NewMarks },
modifier = Modifier modifier = Modifier
// .size(40.dp)
.padding(10.dp) .padding(10.dp)
.background( .background(
Color.Black, Color.Black,
@@ -442,9 +464,8 @@ fun MarksAll() {
} }
FloatingActionButton( FloatingActionButton(
onClick = { showFinalMarksDialog = true }, onClick = { global.currentScreenElement = ScreenElement.FinalMarks },
modifier = Modifier modifier = Modifier
// .size(40.dp)
.padding(10.dp) .padding(10.dp)
.background( .background(
Color.Black, Color.Black,
@@ -408,6 +408,16 @@ class Parsing {
for (i in 0..<marksJSONArray.length()) { for (i in 0..<marksJSONArray.length()) {
marksList.add(marksJSONArray.getJSONObject(i)) marksList.add(marksJSONArray.getJSONObject(i))
marksList.add(marksJSONArray.getJSONObject(i))
marksList.add(marksJSONArray.getJSONObject(i))
marksList.add(marksJSONArray.getJSONObject(i))
marksList.add(marksJSONArray.getJSONObject(i))
marksList.add(marksJSONArray.getJSONObject(i))
marksList.add(marksJSONArray.getJSONObject(i))
marksList.add(marksJSONArray.getJSONObject(i))
marksList.add(marksJSONArray.getJSONObject(i))
marksList.add(marksJSONArray.getJSONObject(i))
marksList.add(marksJSONArray.getJSONObject(i))
} }
for (subj in subjectMap.values) { for (subj in subjectMap.values) {