@ -32,7 +32,10 @@ import kotlinx.android.synthetic.main.fragment_timetable.*
import org.jetbrains.anko.doAsync
import org.jetbrains.anko.uiThread
import org.mosad.seil0.projectlaogai.R
import org.mosad.seil0.projectlaogai.controller.CacheController
import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.timetables
import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cCourse
import org.mosad.seil0.projectlaogai.controller.TCoRAPIController
import org.mosad.seil0.projectlaogai.hsoparser.DataTypes
import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar
import org.mosad.seil0.projectlaogai.hsoparser.TimetableWeek
@ -52,6 +55,9 @@ class TimeTableFragment : Fragment() {
val view : View = inflater . inflate ( R . layout . fragment _timetable , container , false )
// init actions
refreshAction ( )
if ( timetables [ 0 ] . days . isNotEmpty ( ) && timetables [ 1 ] . days . isNotEmpty ( ) ) {
addInitWeeks ( )
} else {
@ -71,8 +77,6 @@ class TimeTableFragment : Fragment() {
val dayIndex = NotRetardedCalendar ( ) . getDayOfWeekIndex ( )
val calendar = Calendar . getInstance ( )
println ( formatter . format ( calendar . time ) )
// add current week
addWeek ( dayIndex , 5 , timetables [ 0 ] , calendar ) . get ( )
@ -87,7 +91,6 @@ class TimeTableFragment : Fragment() {
var helpLesson = LessonLinearLayout ( context )
val dayCardView = DayCardView ( context !! )
dayCardView . setDayHeading ( formatter . format ( calendar . time ) )
println ( " 1: $day , ${formatter.format(calendar.time)} " )
// for each timeslot of the day
for ( ( tsIndex , timeslot ) in timetable . days [ day ] . timeslots . withIndex ( ) ) {
@ -108,8 +111,6 @@ class TimeTableFragment : Fragment() {
}
}
println ( " 2: $day , ${formatter.format(calendar.time)} " )
helpLesson . disableDivider ( )
calendar . add ( Calendar . DATE , 1 )
@ -123,4 +124,43 @@ class TimeTableFragment : Fragment() {
}
}
/ * *
* initialize the refresh action
* /
private fun refreshAction ( ) = doAsync {
uiThread {
// set the refresh listener
refreshLayout _Timetable . setOnRefreshListener {
updateTimetableScreen ( )
}
}
}
private fun updateTimetableScreen ( ) = doAsync {
// update the cache
TCoRAPIController . getTimetable ( cCourse . courseName , 0 , context !! ) . get ( ) // blocking since we want the new data
TCoRAPIController . getTimetable ( cCourse . courseName , 1 , context !! ) . get ( ) // blocking since we want the new data
CacheController . readTimetable ( cCourse . courseName , 0 , context !! )
CacheController . readTimetable ( cCourse . courseName , 1 , context !! )
uiThread {
// remove all menus from the layout
linLayout _Timetable . removeAllViews ( )
// add the refreshed timetables
val dayIndex = NotRetardedCalendar ( ) . getDayOfWeekIndex ( )
val calendar = Calendar . getInstance ( )
// add current week
addWeek ( dayIndex , 5 , timetables [ 0 ] , calendar ) . get ( )
// add next week
addWeek ( 0 , dayIndex - 1 , timetables [ 1 ] , calendar )
refreshLayout _Timetable . isRefreshing = false
}
}
}