moved all cache checking code tho the CacheController
* added new sunday bug fix for the timetable, same as for the mensa
This commit is contained in:
parent
9a22d9b737
commit
a7abd48726
|
@ -18,4 +18,4 @@ ProjectLaogai is a app to access the timetable and the mensa menu of Hochschule
|
||||||
[<img src="https://raw.githubusercontent.com/Seil0/Seil0.github.io/master/images/Project_Laogai/ProjectLaogai_Settings.png" width=180>](https://github.com/Seil0/Seil0.github.io/blob/master/images/Project_Laogai/ProjectLaogai_Settings.png)
|
[<img src="https://raw.githubusercontent.com/Seil0/Seil0.github.io/master/images/Project_Laogai/ProjectLaogai_Settings.png" width=180>](https://github.com/Seil0/Seil0.github.io/blob/master/images/Project_Laogai/ProjectLaogai_Settings.png)
|
||||||
[<img src="https://raw.githubusercontent.com/Seil0/Seil0.github.io/master/images/Project_Laogai/ProjectLaogai_NavDrawer.png" width=180>](https://github.com/Seil0/Seil0.github.io/blob/master/images/Project_Laogai/ProjectLaogai_NavDrawer.png)
|
[<img src="https://raw.githubusercontent.com/Seil0/Seil0.github.io/master/images/Project_Laogai/ProjectLaogai_NavDrawer.png" width=180>](https://github.com/Seil0/Seil0.github.io/blob/master/images/Project_Laogai/ProjectLaogai_NavDrawer.png)
|
||||||
|
|
||||||
ProjectLaogai © 2019 [@Seil0](https://git.mosad.xyz/Seil0), a mosad [mosad](http://www.mosad.xyz) Project
|
ProjectLaogai © 2019 [@Seil0](https://git.mosad.xyz/Seil0), a [mosad](http://www.mosad.xyz) Project
|
||||||
|
|
|
@ -13,7 +13,7 @@ android {
|
||||||
minSdkVersion 23
|
minSdkVersion 23
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 14
|
versionCode 14
|
||||||
versionName "0.4.92"
|
versionName "0.4.93"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
resValue "string", "build_time", buildTime()
|
resValue "string", "build_time", buildTime()
|
||||||
setProperty("archivesBaseName", "projectlaogai-$versionName")
|
setProperty("archivesBaseName", "projectlaogai-$versionName")
|
||||||
|
|
|
@ -36,17 +36,10 @@ import com.google.android.material.navigation.NavigationView
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
import kotlinx.android.synthetic.main.activity_main.*
|
||||||
import kotlinx.android.synthetic.main.app_bar_main.*
|
import kotlinx.android.synthetic.main.app_bar_main.*
|
||||||
import org.mosad.seil0.projectlaogai.controller.CacheController
|
import org.mosad.seil0.projectlaogai.controller.CacheController
|
||||||
import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.mensaMenu
|
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController
|
import org.mosad.seil0.projectlaogai.controller.PreferencesController
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cColorAccent
|
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cColorAccent
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cColorPrimary
|
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cColorPrimary
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cCourse
|
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.coursesCacheTime
|
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.mensaCacheTime
|
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.timetableCacheTime
|
|
||||||
import org.mosad.seil0.projectlaogai.controller.TCoRAPIController
|
|
||||||
import org.mosad.seil0.projectlaogai.fragments.*
|
import org.mosad.seil0.projectlaogai.fragments.*
|
||||||
import java.util.*
|
|
||||||
import kotlin.system.measureTimeMillis
|
import kotlin.system.measureTimeMillis
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
|
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
|
||||||
|
@ -136,56 +129,8 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
|
||||||
*/
|
*/
|
||||||
private fun load() {
|
private fun load() {
|
||||||
val startupTime = measureTimeMillis {
|
val startupTime = measureTimeMillis {
|
||||||
// load the settings
|
PreferencesController.load(this) // load the settings, must be finished before doing anything else
|
||||||
PreferencesController.load(this) // this must be finished before doing anything else
|
CacheController(this) // load the cache
|
||||||
|
|
||||||
val tcor = TCoRAPIController(this)
|
|
||||||
val currentTime = System.currentTimeMillis() / 1000
|
|
||||||
val currentDay = Calendar.getInstance().get(Calendar.DAY_OF_WEEK)
|
|
||||||
val cal = Calendar.getInstance()
|
|
||||||
|
|
||||||
|
|
||||||
// TODO this will backfire if someone has to update before the server finished updating the timetable at 0001/0101
|
|
||||||
// timetable sunday workaround
|
|
||||||
cal.time = Date(timetableCacheTime * 1000)
|
|
||||||
|
|
||||||
// update blocking if a) it`s monday and the last cache was not on a monday or b) the cache is older than 6 days
|
|
||||||
if((currentDay == Calendar.MONDAY && cal.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) || currentTime - timetableCacheTime > 518400) {
|
|
||||||
println("updating timetable after sunday!")
|
|
||||||
val jobA = TCoRAPIController.getTimetable(cCourse.courseName, 0, this)
|
|
||||||
val jobB = TCoRAPIController.getTimetable(cCourse.courseName, 1, this)
|
|
||||||
|
|
||||||
jobA.get()
|
|
||||||
jobB.get()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// new sunday bug fix
|
|
||||||
CacheController.readMensa(this)
|
|
||||||
cal.time = Date(mensaMenu.meta.updateTime * 1000)
|
|
||||||
|
|
||||||
// if it's monday and the last cache update was on sunday or is older than 24hr, update blocking
|
|
||||||
if ((currentDay == Calendar.MONDAY && cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) || currentTime - mensaMenu.meta.updateTime > 86400) {
|
|
||||||
println("update mensa blocking")
|
|
||||||
TCoRAPIController.getMensa(this).get()
|
|
||||||
}
|
|
||||||
|
|
||||||
// get the cached files
|
|
||||||
val cache = CacheController(this)
|
|
||||||
cache.readStartCache(cCourse.courseName)
|
|
||||||
|
|
||||||
// check if an update is necessary
|
|
||||||
if(currentTime - coursesCacheTime > 86400)
|
|
||||||
tcor.getCoursesList()
|
|
||||||
|
|
||||||
if(currentTime - mensaCacheTime > 10800)
|
|
||||||
TCoRAPIController.getMensa(this)
|
|
||||||
|
|
||||||
if(currentTime - timetableCacheTime > 10800) {
|
|
||||||
TCoRAPIController.getTimetable(cCourse.courseName, 0, this)
|
|
||||||
TCoRAPIController.getTimetable(cCourse.courseName, 1, this)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
println("startup completed in $startupTime ms")
|
println("startup completed in $startupTime ms")
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,11 +26,13 @@ import android.content.Context
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.google.gson.GsonBuilder
|
import com.google.gson.GsonBuilder
|
||||||
import com.google.gson.JsonParser
|
import com.google.gson.JsonParser
|
||||||
|
import com.google.gson.reflect.TypeToken
|
||||||
|
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cCourse
|
||||||
|
import org.mosad.seil0.projectlaogai.hsoparser.*
|
||||||
import java.io.BufferedReader
|
import java.io.BufferedReader
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileReader
|
import java.io.FileReader
|
||||||
import com.google.gson.reflect.TypeToken
|
import java.util.*
|
||||||
import org.mosad.seil0.projectlaogai.hsoparser.*
|
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
class CacheController(cont: Context) {
|
class CacheController(cont: Context) {
|
||||||
|
@ -38,13 +40,71 @@ class CacheController(cont: Context) {
|
||||||
private val context = cont
|
private val context = cont
|
||||||
|
|
||||||
init {
|
init {
|
||||||
// TODO move cache check here
|
val cal = Calendar.getInstance()
|
||||||
|
val currentDay = Calendar.getInstance().get(Calendar.DAY_OF_WEEK)
|
||||||
|
val currentTime = System.currentTimeMillis() / 1000
|
||||||
|
|
||||||
|
// check if we need to update the mensa data before displaying it
|
||||||
|
readMensa(context)
|
||||||
|
cal.time = Date(mensaMenu.meta.updateTime * 1000)
|
||||||
|
|
||||||
|
// if a) it's monday and the last cache update was on sunday or b) the cache is older than 24hr, update blocking
|
||||||
|
if ((currentDay == Calendar.MONDAY && cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) || currentTime - mensaMenu.meta.updateTime > 86400) {
|
||||||
|
println("update mensa blocking")
|
||||||
|
TCoRAPIController.getMensa(context).get()
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if we need to update the timetables before displaying them
|
||||||
|
readTimetable(cCourse.courseName, 0, context)
|
||||||
|
cal.time = Date(timetables[0].meta.updateTime * 1000)
|
||||||
|
|
||||||
|
// if a) it`s monday and the last cache update was not on a sunday or b) the cache is older than 5 days, update blocking
|
||||||
|
if((currentDay == Calendar.MONDAY && cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) || currentTime - timetables[0].meta.updateTime > 432000) {
|
||||||
|
println("updating timetable after sunday!")
|
||||||
|
val jobA = TCoRAPIController.getTimetable(cCourse.courseName, 0, context)
|
||||||
|
val jobB = TCoRAPIController.getTimetable(cCourse.courseName, 1, context)
|
||||||
|
|
||||||
|
jobA.get()
|
||||||
|
jobB.get()
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if an update is necessary, not blocking
|
||||||
|
if(currentTime - PreferencesController.coursesCacheTime > 86400)
|
||||||
|
TCoRAPIController.getCoursesList(context)
|
||||||
|
|
||||||
|
if(currentTime - PreferencesController.mensaCacheTime > 10800)
|
||||||
|
TCoRAPIController.getMensa(context)
|
||||||
|
|
||||||
|
if(currentTime - PreferencesController.timetableCacheTime > 10800) {
|
||||||
|
TCoRAPIController.getTimetable(cCourse.courseName, 0, context)
|
||||||
|
TCoRAPIController.getTimetable(cCourse.courseName, 1, context)
|
||||||
|
}
|
||||||
|
|
||||||
|
readStartCache(cCourse.courseName)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
var coursesList = ArrayList<Course>()
|
var coursesList = ArrayList<Course>()
|
||||||
var timetables = ArrayList<TimetableWeek>()
|
var timetables = ArrayList<TimetableCourseWeek>()
|
||||||
var mensaMenu = MensaMenu(MensaMeta(0, ""), MensaWeek(), MensaWeek())
|
var mensaMenu = MensaMenu()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* read the courses list from the cached file
|
||||||
|
* add them to the coursesList object
|
||||||
|
*/
|
||||||
|
private fun readCoursesList(context: Context) {
|
||||||
|
val file = File(context.filesDir, "courses.json")
|
||||||
|
|
||||||
|
// make sure the file exists
|
||||||
|
if (!file.exists())
|
||||||
|
TCoRAPIController.getCoursesList(context).get()
|
||||||
|
|
||||||
|
val fileReader = FileReader(file)
|
||||||
|
val bufferedReader = BufferedReader(fileReader)
|
||||||
|
val coursesObject = JsonParser().parse(bufferedReader.readLine()).asJsonObject
|
||||||
|
|
||||||
|
coursesList = Gson().fromJson(coursesObject.getAsJsonArray("courses"), object : TypeToken<List<Course>>() {}.type)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the MensaMenu object from the cached json,
|
* get the MensaMenu object from the cached json,
|
||||||
|
@ -62,7 +122,7 @@ class CacheController(cont: Context) {
|
||||||
val bufferedReader = BufferedReader(fileReader)
|
val bufferedReader = BufferedReader(fileReader)
|
||||||
val mensaObject = JsonParser().parse(bufferedReader.readLine()).asJsonObject
|
val mensaObject = JsonParser().parse(bufferedReader.readLine()).asJsonObject
|
||||||
|
|
||||||
mensaMenu = GsonBuilder().create().fromJson(mensaObject, MensaMenu(MensaMeta(0, ""), MensaWeek(), MensaWeek()).javaClass)
|
mensaMenu = GsonBuilder().create().fromJson(mensaObject, MensaMenu().javaClass)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -82,10 +142,10 @@ class CacheController(cont: Context) {
|
||||||
val timetableObject = JsonParser().parse(bufferedReader.readLine()).asJsonObject
|
val timetableObject = JsonParser().parse(bufferedReader.readLine()).asJsonObject
|
||||||
|
|
||||||
// make sure you add the single weeks in the exact order!
|
// make sure you add the single weeks in the exact order!
|
||||||
if (timetables.size == week) {
|
if (timetables.size > week) {
|
||||||
timetables.add(Gson().fromJson(timetableObject.getAsJsonObject("timetable"), TimetableWeek().javaClass))
|
timetables[week] = (Gson().fromJson(timetableObject, TimetableCourseWeek().javaClass))
|
||||||
} else if (timetables.size >= week) {
|
} else {
|
||||||
timetables[week] = Gson().fromJson(timetableObject.getAsJsonObject("timetable"), TimetableWeek().javaClass)
|
timetables.add(Gson().fromJson(timetableObject, TimetableCourseWeek().javaClass))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,28 +155,10 @@ class CacheController(cont: Context) {
|
||||||
* @param courseName the course name (e.g AI1)
|
* @param courseName the course name (e.g AI1)
|
||||||
*/
|
*/
|
||||||
fun readStartCache(courseName: String) {
|
fun readStartCache(courseName: String) {
|
||||||
readCoursesList()
|
readCoursesList(context)
|
||||||
readMensa(context)
|
readMensa(context)
|
||||||
readTimetable(courseName, 0, context)
|
readTimetable(courseName, 0, context)
|
||||||
readTimetable(courseName, 1, context)
|
readTimetable(courseName, 1, context)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* read the courses list from the cached file
|
|
||||||
* add them to the coursesList object
|
|
||||||
*/
|
|
||||||
private fun readCoursesList() {
|
|
||||||
val file = File(context.filesDir, "courses.json")
|
|
||||||
|
|
||||||
// make sure the file exists
|
|
||||||
if (!file.exists())
|
|
||||||
TCoRAPIController(context).getCoursesList().get()
|
|
||||||
|
|
||||||
val fileReader = FileReader(file)
|
|
||||||
val bufferedReader = BufferedReader(fileReader)
|
|
||||||
val coursesObject = JsonParser().parse(bufferedReader.readLine()).asJsonObject
|
|
||||||
|
|
||||||
coursesList = Gson().fromJson(coursesObject.getAsJsonArray("courses"), object : TypeToken<List<Course>>() {}.type)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -28,13 +28,35 @@ import org.json.JSONObject
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.coursesCacheTime
|
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.coursesCacheTime
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.mensaCacheTime
|
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.mensaCacheTime
|
||||||
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.timetableCacheTime
|
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.timetableCacheTime
|
||||||
import java.io.*
|
import java.io.BufferedWriter
|
||||||
|
import java.io.File
|
||||||
|
import java.io.FileWriter
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
|
||||||
class TCoRAPIController(cont: Context) {
|
class TCoRAPIController {
|
||||||
private val context = cont
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get the json object from tcor api and write it as file (cache)
|
||||||
|
*/
|
||||||
|
fun getCoursesList(context: Context) = doAsync {
|
||||||
|
val url = URL("https://tcor.mosad.xyz/courseList")
|
||||||
|
val file = File(context.filesDir, "courses.json")
|
||||||
|
|
||||||
|
// read data from the API
|
||||||
|
val coursesObject = JSONObject(url.readText()) //JSONObject(inReader.readLine())
|
||||||
|
|
||||||
|
// write the json object to a file
|
||||||
|
val writer = BufferedWriter(FileWriter(file))
|
||||||
|
writer.write(coursesObject.toString())
|
||||||
|
writer.close()
|
||||||
|
|
||||||
|
// update cache time
|
||||||
|
coursesCacheTime = System.currentTimeMillis() / 1000
|
||||||
|
PreferencesController.save(context)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the json object from tcor api and write it as file (cache)
|
* get the json object from tcor api and write it as file (cache)
|
||||||
*/
|
*/
|
||||||
|
@ -76,23 +98,4 @@ class TCoRAPIController(cont: Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* get the json object from tcor api and write it as file (cache)
|
|
||||||
*/
|
|
||||||
fun getCoursesList() = doAsync {
|
|
||||||
val url = URL("https://tcor.mosad.xyz/courseList")
|
|
||||||
val file = File(context.filesDir, "courses.json")
|
|
||||||
|
|
||||||
// read data from the API
|
|
||||||
val coursesObject = JSONObject(url.readText()) //JSONObject(inReader.readLine())
|
|
||||||
|
|
||||||
// write the json object to a file
|
|
||||||
val writer = BufferedWriter(FileWriter(file))
|
|
||||||
writer.write(coursesObject.toString())
|
|
||||||
writer.close()
|
|
||||||
|
|
||||||
// update cache time
|
|
||||||
coursesCacheTime = System.currentTimeMillis() / 1000
|
|
||||||
PreferencesController.save(context)
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -133,7 +133,7 @@ class HomeFragment : Fragment() {
|
||||||
if (timetables.isNotEmpty() && dayIndex < 6) {
|
if (timetables.isNotEmpty() && dayIndex < 6) {
|
||||||
|
|
||||||
// first check the current day
|
// first check the current day
|
||||||
dayCardView = addDayTimetable(timetables[0].days[dayIndex])
|
dayCardView = addDayTimetable(timetables[0].timetable.days[dayIndex])
|
||||||
dayCardView.setDayHeading(resources.getString(R.string.today_date, formatter.format(cal.time)))
|
dayCardView.setDayHeading(resources.getString(R.string.today_date, formatter.format(cal.time)))
|
||||||
|
|
||||||
// if there are no lessons try to find the next day with a lesson
|
// if there are no lessons try to find the next day with a lesson
|
||||||
|
@ -202,7 +202,7 @@ class HomeFragment : Fragment() {
|
||||||
var weekIndexSearch = startWeekIndex
|
var weekIndexSearch = startWeekIndex
|
||||||
loop@ while (dayTimetable == null && weekIndexSearch <= timetables.size) {
|
loop@ while (dayTimetable == null && weekIndexSearch <= timetables.size) {
|
||||||
for (i in (dayIndexSearch) ..5) {
|
for (i in (dayIndexSearch) ..5) {
|
||||||
dayTimetable = timetables[weekIndexSearch].days[i]
|
dayTimetable = timetables[weekIndexSearch].timetable.days[i]
|
||||||
cal.add(Calendar.DATE, 1)
|
cal.add(Calendar.DATE, 1)
|
||||||
|
|
||||||
// add the timetable to the card, if it contains at least one lesson break!
|
// add the timetable to the card, if it contains at least one lesson break!
|
||||||
|
|
|
@ -41,7 +41,8 @@ import org.mosad.seil0.projectlaogai.controller.TCoRAPIController
|
||||||
import org.mosad.seil0.projectlaogai.hsoparser.DataTypes
|
import org.mosad.seil0.projectlaogai.hsoparser.DataTypes
|
||||||
import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar
|
import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar
|
||||||
import org.mosad.seil0.projectlaogai.hsoparser.TimetableWeek
|
import org.mosad.seil0.projectlaogai.hsoparser.TimetableWeek
|
||||||
import org.mosad.seil0.projectlaogai.uicomponents.*
|
import org.mosad.seil0.projectlaogai.uicomponents.DayCardView
|
||||||
|
import org.mosad.seil0.projectlaogai.uicomponents.LessonLinearLayout
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
@ -64,7 +65,7 @@ class TimeTableFragment : Fragment() {
|
||||||
// init actions
|
// init actions
|
||||||
initActions()
|
initActions()
|
||||||
|
|
||||||
if (timetables[0].days.isNotEmpty() && timetables[1].days.isNotEmpty()) {
|
if (timetables[0].timetable.days.isNotEmpty() && timetables[1].timetable.days.isNotEmpty()) {
|
||||||
addInitWeeks()
|
addInitWeeks()
|
||||||
} else {
|
} else {
|
||||||
MaterialDialog(context!!)
|
MaterialDialog(context!!)
|
||||||
|
@ -114,10 +115,10 @@ class TimeTableFragment : Fragment() {
|
||||||
val calendar = Calendar.getInstance()
|
val calendar = Calendar.getInstance()
|
||||||
|
|
||||||
// add current week
|
// add current week
|
||||||
addWeek(dayIndex, 5, timetables[0], calendar).get()
|
addWeek(dayIndex, 5, timetables[0].timetable, calendar).get()
|
||||||
|
|
||||||
// add next week
|
// add next week
|
||||||
addWeek(0, dayIndex - 1, timetables[1], calendar)
|
addWeek(0, dayIndex - 1, timetables[1].timetable, calendar)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addWeek(dayStart: Int, dayEnd: Int, timetable: TimetableWeek, calendar: Calendar) = doAsync {
|
private fun addWeek(dayStart: Int, dayEnd: Int, timetable: TimetableWeek, calendar: Calendar) = doAsync {
|
||||||
|
@ -177,10 +178,10 @@ class TimeTableFragment : Fragment() {
|
||||||
val calendar = Calendar.getInstance()
|
val calendar = Calendar.getInstance()
|
||||||
|
|
||||||
// add current week
|
// add current week
|
||||||
addWeek(dayIndex, 5, timetables[0], calendar).get()
|
addWeek(dayIndex, 5, timetables[0].timetable, calendar).get()
|
||||||
|
|
||||||
// add next week
|
// add next week
|
||||||
addWeek(0, dayIndex - 1, timetables[1], calendar)
|
addWeek(0, dayIndex - 1, timetables[1].timetable, calendar)
|
||||||
|
|
||||||
refreshLayout_Timetable.isRefreshing = false
|
refreshLayout_Timetable.isRefreshing = false
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,9 +122,9 @@ data class Meals(val meals: ArrayList<Meal>)
|
||||||
|
|
||||||
data class MensaWeek(val days: Array<Meals> = Array(7) { Meals(ArrayList()) })
|
data class MensaWeek(val days: Array<Meals> = Array(7) { Meals(ArrayList()) })
|
||||||
|
|
||||||
data class MensaMeta(val updateTime: Long, val mensaName: String)
|
data class MensaMeta(val updateTime: Long = 0, val mensaName: String = "")
|
||||||
|
|
||||||
data class MensaMenu(val meta: MensaMeta, val currentWeek: MensaWeek, val nextWeek: MensaWeek)
|
data class MensaMenu(val meta: MensaMeta = MensaMeta(), val currentWeek: MensaWeek = MensaWeek(), val nextWeek: MensaWeek = MensaWeek())
|
||||||
|
|
||||||
// data classes for the timetable part
|
// data classes for the timetable part
|
||||||
data class Lesson(
|
data class Lesson(
|
||||||
|
@ -136,4 +136,8 @@ data class Lesson(
|
||||||
|
|
||||||
data class TimetableDay(val timeslots: Array<ArrayList<Lesson>> = Array(6) { ArrayList<Lesson>() })
|
data class TimetableDay(val timeslots: Array<ArrayList<Lesson>> = Array(6) { ArrayList<Lesson>() })
|
||||||
|
|
||||||
data class TimetableWeek(val days: Array<TimetableDay> = Array(6) { TimetableDay() })
|
data class TimetableWeek(val days: Array<TimetableDay> = Array(6) { TimetableDay() })
|
||||||
|
|
||||||
|
data class TimetableCourseMeta(var updateTime: Long = 0, val courseName: String = "", val week: Int = 0, val link: String = "")
|
||||||
|
|
||||||
|
data class TimetableCourseWeek(val meta: TimetableCourseMeta = TimetableCourseMeta(), var timetable: TimetableWeek = TimetableWeek())
|
||||||
|
|
Loading…
Reference in New Issue