diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..3379285 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/solon.iml b/.idea/solon.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/solon.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..b5c241b --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1709058824678 + + + + \ No newline at end of file diff --git a/mobile/app/src/main/java/com/odweta/solon/CalWeekFragment.kt b/mobile/app/src/main/java/com/odweta/solon/CalWeekFragment.kt index 21f0786..3c58a70 100644 --- a/mobile/app/src/main/java/com/odweta/solon/CalWeekFragment.kt +++ b/mobile/app/src/main/java/com/odweta/solon/CalWeekFragment.kt @@ -575,7 +575,7 @@ class DayFragment : Fragment() { dayEndTextView.text = Vars.dayEndString dayEndTextView.typeface = customFont dayEndTextView.setAutoSizeTextTypeUniformWithConfiguration(55, 85, 1, 0) - dayEndTextView.setPadding(0, 30, 0, 30) + dayEndTextView.setPadding(0, 25, 0, 25) dayEndTextView.textAlignment = View.TEXT_ALIGNMENT_CENTER dayEndTextView.gravity = Gravity.CENTER dayEndTextView.setTextColor( @@ -670,6 +670,25 @@ class Subject { return s } + + fun empty(): Subject { + val s = Subject() + + s.name = "err" + s.place = "error" + s.teacher = "error" + s.substitute = "0" + s.number = "0" + s.start = "00:00" + s.end = "00:00" + s.free = false + + return s + } + } + + override fun toString(): String { + return "subject ${this.name} at ${this.place} from ${this.start} to ${this.end}; free? ${this.free}" } } diff --git a/mobile/app/src/main/java/com/odweta/solon/Network.kt b/mobile/app/src/main/java/com/odweta/solon/Network.kt index 2f6e24c..aa89cd9 100644 --- a/mobile/app/src/main/java/com/odweta/solon/Network.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Network.kt @@ -144,7 +144,10 @@ class Network { try { val resp = Vars.client.newCall(request).execute() - resp.body?.string().toString() + val s = resp.body?.string().toString() + val s2 = JSONObject(s).getJSONArray("days").getString(1) + Log.d("TIMETABLE", s2) + s } catch (e: IOException) { """{"error": "network"}""" } 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 5352f1d..019ca40 100644 --- a/mobile/app/src/main/java/com/odweta/solon/Parsing.kt +++ b/mobile/app/src/main/java/com/odweta/solon/Parsing.kt @@ -7,6 +7,42 @@ import java.time.format.DateTimeFormatter class Parsing { companion object { + private fun eventLecture(subject: Subject, subj: JSONObject, subjects: MutableList) { + subject.name = subj.get("title").toString() + subject.place = "" + subject.teacher = "" + subject.substitute = "2" // 2 means school event + + val hourspan = subj.getJSONArray("detailHours").length() + if (hourspan == 1) { + val detailHours = subj.getJSONArray("detailHours") + subject.number = detailHours.getJSONObject(0).get("id").toString() + subject.start = detailHours.getJSONObject(0).get("timeFrom").toString() + subject.start = subject.start.slice(0..subject.start.length - 4) + subject.end = detailHours.getJSONObject(0).get("timeto").toString() + subject.end = subject.end.slice(0..subject.end.length - 4) + subjects.add(subject) + } else { + for (i in 0.. { - subject.name = subj.get("title").toString() - subject.place = "" - subject.teacher = "" - subject.substitute = "2" // 2 means school event - - val hourspan = subj.getJSONArray("detailHours").length() - if (hourspan == 1) { - val detailHours = subj.getJSONArray("detailHours") - subject.number = detailHours.getJSONObject(0).get("id").toString() - subject.start = detailHours.getJSONObject(0).get("timeFrom").toString() - subject.start = subject.start.slice(0..subject.start.length - 4) - subject.end = detailHours.getJSONObject(0).get("timeto").toString() - subject.end = subject.end.slice(0..subject.end.length - 4) - subjects.add(subject) - } else { - for (i in 0.. eventLecture(subject, subj, subjects) + "S_NAHRADOU_VYUKA" -> eventLecture(subject, subj, subjects) } } else { subject.name = subj.getJSONObject("subject").get("abbrev").toString() subject.place = subj.getJSONArray("rooms").getJSONObject(0).get("abbrev").toString() subject.teacher = "" + - "${subj.getJSONArray("teachers").getJSONObject(0).get("name")} " + - "${subj.getJSONArray("teachers").getJSONObject(0).get("surname")}" - if (type == "ROZVRH") { - subject.substitute = "0" - } else if (type == "SUPLOVANI") { - subject.substitute = "1" + "${ + subj.getJSONArray("teachers").getJSONObject(0).get("name") + } " + + "${ + subj.getJSONArray("teachers").getJSONObject(0) + .get("surname") + }" + subject.substitute = when (type) { + "ROZVRH" -> "0" + "SUPLOVANI" -> "1" + else -> "2" } val hourspan = subj.getJSONArray("detailHours").length() if (hourspan == 1) { val detailHours = subj.getJSONArray("detailHours") subject.number = detailHours.getJSONObject(0).get("id").toString() - subject.start = detailHours.getJSONObject(0).get("timeFrom").toString() + subject.start = + detailHours.getJSONObject(0).get("timeFrom").toString() subject.start = subject.start.slice(0..subject.start.length - 4) subject.end = detailHours.getJSONObject(0).get("timeto").toString() subject.end = subject.end.slice(0..subject.end.length - 4) subjects.add(subject) } else { - for (i in 0.. 0) { auxSubjects.add(subjects[0]) + } else { + auxSubjects.add(Subject.empty()) } for ((i, s) in auxSubjects.withIndex()) { @@ -234,6 +263,21 @@ class Parsing { day.date = date day.subjects = auxSubjects + val nextSubjects: MutableList = mutableListOf() + var prevSubject: Subject = Subject.empty() + + for (s in day.subjects) { + if (prevSubject.name != s.name) { + nextSubjects.add(s) + } + prevSubject = s + } + + nextSubjects[nextSubjects.size-1].start = day.subjects[day.subjects.size-1].start + nextSubjects[nextSubjects.size-1].end = day.subjects[day.subjects.size-1].end + + day.subjects = nextSubjects + week.add(day) } diff --git a/release/solon.apk b/release/solon.apk index 625df4a..2959ee1 100644 Binary files a/release/solon.apk and b/release/solon.apk differ