diff --git a/mobile/.idea/caches/deviceStreaming.xml b/mobile/.idea/caches/deviceStreaming.xml
deleted file mode 100644
index 406736c..0000000
--- a/mobile/.idea/caches/deviceStreaming.xml
+++ /dev/null
@@ -1,340 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mobile/app/src/main/java/com/odweta/solon/BackButtonFactory.kt b/mobile/app/src/main/java/com/odweta/solon/BackButtonFactory.kt
index db45f7f..217e12c 100644
--- a/mobile/app/src/main/java/com/odweta/solon/BackButtonFactory.kt
+++ b/mobile/app/src/main/java/com/odweta/solon/BackButtonFactory.kt
@@ -33,9 +33,7 @@ interface BackButtonFactoryInterface {
@Composable
fun BackButton(onClick: () -> Unit) {
Box(
- modifier = Modifier
- .fillMaxWidth()
- .padding(start = 5.dp)
+ modifier = Modifier.padding(start = 10.dp)
) {
Button(
onClick = onClick,
@@ -66,7 +64,10 @@ object BackButtonFactory: BackButtonFactoryInterface {
override fun get(type: BackButtonType): @Composable () -> Unit {
return when (type) {
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 } } }
}
}
diff --git a/mobile/app/src/main/java/com/odweta/solon/Global.kt b/mobile/app/src/main/java/com/odweta/solon/Global.kt
index 283f27c..a3fb5d9 100644
--- a/mobile/app/src/main/java/com/odweta/solon/Global.kt
+++ b/mobile/app/src/main/java/com/odweta/solon/Global.kt
@@ -22,7 +22,6 @@ import androidx.compose.ui.unit.dp
import com.odweta.solon.ui.theme.PastelYellow
import org.json.JSONObject
import java.io.File
-import java.time.LocalDate
import java.time.LocalDateTime
enum class Screen {
@@ -197,6 +196,8 @@ class Mark {
enum class ScreenElement {
Timetable,
Marks,
+ NewMarks,
+ FinalMarks,
Menu,
About,
Settings,
diff --git a/mobile/app/src/main/java/com/odweta/solon/MainActivity.kt b/mobile/app/src/main/java/com/odweta/solon/MainActivity.kt
index 185164b..49d72a1 100644
--- a/mobile/app/src/main/java/com/odweta/solon/MainActivity.kt
+++ b/mobile/app/src/main/java/com/odweta/solon/MainActivity.kt
@@ -3,16 +3,6 @@ package com.odweta.solon
import android.os.Bundle
import androidx.activity.ComponentActivity
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.layout.Box
import androidx.compose.foundation.layout.Column
@@ -73,6 +63,8 @@ class MainActivity : ComponentActivity() {
when (targetScreen) {
ScreenElement.Timetable -> TimetableScreen()
ScreenElement.Marks -> MarksScreen()
+ ScreenElement.NewMarks -> NewMarksScreen()
+ ScreenElement.FinalMarks -> FinalMarksScreen()
ScreenElement.Menu -> MenuScreen()
ScreenElement.About -> AboutScreen()
ScreenElement.Settings -> SettingsScreen()
diff --git a/mobile/app/src/main/java/com/odweta/solon/Marks.kt b/mobile/app/src/main/java/com/odweta/solon/Marks.kt
index 4975ed9..5fb25b0 100644
--- a/mobile/app/src/main/java/com/odweta/solon/Marks.kt
+++ b/mobile/app/src/main/java/com/odweta/solon/Marks.kt
@@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState
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.filled.AutoAwesome
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.Icon
import androidx.compose.material3.Text
@@ -33,20 +30,16 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.shadow
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shadow
-import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
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.sp
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
-import androidx.compose.ui.zIndex
import com.odweta.solon.ui.theme.PastelGreen
import com.odweta.solon.ui.theme.PastelGreenTransparent
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.PastelYellow
import com.odweta.solon.ui.theme.PastelYellowTransparent
-import java.time.LocalDate
import java.time.format.DateTimeFormatter
var showNewMarksDialog by mutableStateOf(false)
@@ -71,39 +63,33 @@ enum class MarksDepthLevel {
@Composable
fun MarksScreen() {
- when (global.marksDepthLevel) {
- MarksDepthLevel.All -> MarksAll()
- MarksDepthLevel.Subject -> MarksSubject()
- MarksDepthLevel.Detail -> MarksDetail()
+ Animate(global.marksDepthLevel) { targetDepthLevel ->
+ when (targetDepthLevel) {
+ MarksDepthLevel.All -> MarksAll()
+ MarksDepthLevel.Subject -> MarksSubject()
+ MarksDepthLevel.Detail -> MarksDetail()
+ }
}
- NewMarksDialog()
- FinalMarksDialog()
}
@Composable
-fun NewMarksDialog() {
- if (showNewMarksDialog) {
- val ss = rememberScrollState()
+fun NewMarksScreen() {
+ BackHandler { global.currentScreenElement = ScreenElement.Marks }
- Dialog(
- onDismissRequest = { showNewMarksDialog = false },
- properties = DialogProperties(
- dismissOnBackPress = true,
- dismissOnClickOutside = true
- )
+ val ss = rememberScrollState()
+ Column(
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
+ Row(
+ verticalAlignment = Alignment.CenterVertically
) {
- Column(
- Modifier
- .verticalScroll(ss)
- .padding(vertical = 10.dp),
- horizontalAlignment = Alignment.CenterHorizontally
+ backButtonFactory.get(BackButtonType.MarksAll)()
+
+ Box(
+ modifier = Modifier.weight(1f),
+ contentAlignment = Alignment.Center
) {
- Text(
- "Nové známky",
- color = Color.White,
- fontWeight = FontWeight.Bold,
- fontSize = 30.sp,
- textAlign = TextAlign.Center,
+ Row(
modifier = Modifier
.background(
color = Color.Black,
@@ -114,75 +100,92 @@ fun NewMarksDialog() {
color = PastelYellow,
width = global.dimens.borderWidth
)
- .padding(10.dp)
- )
- Spacer(Modifier.height(10.dp))
- for ((k, v) in global.newMarks) {
- if (v.size > 0) {
- Column(
- modifier = Modifier
- .padding(10.dp)
- .border(
- shape = RoundedCornerShape(global.dimens.roundedCorner),
- color = PastelYellow,
- width = global.dimens.borderWidth
- )
- .background(
- Color.Black,
- shape = RoundedCornerShape(global.dimens.roundedCorner)
- )
- .fillMaxWidth(),
- horizontalAlignment = Alignment.CenterHorizontally
- ) {
- Text(
- k,
- color = Color.White,
- modifier = Modifier.padding(10.dp),
- fontWeight = FontWeight.Bold,
- fontSize = 30.sp
+ .height(70.dp)
+ .padding(10.dp),
+ verticalAlignment = Alignment.CenterVertically
+ ) {
+ Text(
+ "Nové známky",
+ color = Color.White,
+ fontWeight = FontWeight.Bold,
+ fontSize = 30.sp,
+ textAlign = TextAlign.Center
+ )
+ }
+ }
+ }
+
+ Spacer(Modifier.height(10.dp))
+
+ Column(
+ modifier = Modifier.verticalScroll(ss)
+ ) {
+ for ((k, v) in global.newMarks) {
+ if (v.size > 0) {
+ Column(
+ modifier = Modifier
+ .padding(horizontal = 10.dp)
+ .padding(bottom = 10.dp)
+ .border(
+ shape = RoundedCornerShape(global.dimens.roundedCorner),
+ color = PastelYellow,
+ width = global.dimens.borderWidth
)
- for (i in v) {
- Row(
- Modifier.padding(10.dp),
- verticalAlignment = Alignment.CenterVertically
+ .background(
+ Color.Black,
+ shape = RoundedCornerShape(global.dimens.roundedCorner)
+ )
+ .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(
- i.theme,
+ i.grade + " * " + i.weight,
color = Color.White,
modifier = Modifier
- .padding(end = 5.dp, top = 5.dp)
- .weight(1f)
- )
- Column(
- horizontalAlignment = Alignment.End
- ) {
- Text(
- i.grade + " * " + i.weight,
- color = Color.White,
- modifier = Modifier
- .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
- )
+ .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(
- DateTimeFormatter.ofPattern("dd. MM. yyyy")
- ),
- color = Color.White
- )
- }
+ )
+ Text(
+ i.editDate.format(
+ DateTimeFormatter.ofPattern("dd. MM. yyyy")
+ ),
+ color = Color.White
+ )
}
- HorizontalLine()
}
+ HorizontalLine()
}
}
}
@@ -192,29 +195,23 @@ fun NewMarksDialog() {
}
@Composable
-fun FinalMarksDialog() {
- if (showFinalMarksDialog) {
- val ss = rememberScrollState()
+fun FinalMarksScreen() {
+ BackHandler { global.currentScreenElement = ScreenElement.Marks }
- Dialog(
- onDismissRequest = { showFinalMarksDialog = false },
- properties = DialogProperties(
- dismissOnBackPress = true,
- dismissOnClickOutside = true
- )
+ val ss = rememberScrollState()
+ Column(
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
+ Row(
+ verticalAlignment = Alignment.CenterVertically
) {
- Column(
- Modifier
- .verticalScroll(ss)
- .padding(vertical = 10.dp),
- horizontalAlignment = Alignment.CenterHorizontally
+ backButtonFactory.get(BackButtonType.MarksAll)()
+
+ Box(
+ modifier = Modifier.weight(1f),
+ contentAlignment = Alignment.Center
) {
- Text(
- "Uzavřené známky",
- color = Color.White,
- fontWeight = FontWeight.Bold,
- fontSize = 30.sp,
- textAlign = TextAlign.Center,
+ Row(
modifier = Modifier
.background(
color = Color.Black,
@@ -225,10 +222,35 @@ fun FinalMarksDialog() {
color = PastelYellow,
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()) {
Row(
- modifier = Modifier.align(Alignment.BottomCenter)
+ modifier = Modifier
+ .align(Alignment.BottomCenter)
) {
FloatingActionButton(
- onClick = { showNewMarksDialog = true },
+ onClick = { global.currentScreenElement = ScreenElement.NewMarks },
modifier = Modifier
-// .size(40.dp)
.padding(10.dp)
.background(
Color.Black,
@@ -442,9 +464,8 @@ fun MarksAll() {
}
FloatingActionButton(
- onClick = { showFinalMarksDialog = true },
+ onClick = { global.currentScreenElement = ScreenElement.FinalMarks },
modifier = Modifier
-// .size(40.dp)
.padding(10.dp)
.background(
Color.Black,
diff --git a/mobile/app/src/main/java/com/odweta/solon/Parsing.kt b/mobile/app/src/main/java/com/odweta/solon/Parsing.kt
index f1d5f6b..a848d34 100644
--- a/mobile/app/src/main/java/com/odweta/solon/Parsing.kt
+++ b/mobile/app/src/main/java/com/odweta/solon/Parsing.kt
@@ -408,6 +408,16 @@ class Parsing {
for (i in 0..