package Ġcom . ice . kt u ice . ui . main . fragments čĊč Ċ import Ġandroid . os . Bundle č Ċ import Ġandroid . view . LayoutInflater č Ċ import Ġandroid . view . View č Ċ import Ġandroid . view . ViewGroup č Ċ import Ġandroidx . fragment . app . Fragment č Ċ import Ġcom . alam kan ak . week view . Week View Event č Ċ import Ġcom . ice . kt u ice . R č Ċ import Ġcom . ice . kt u ice . al . lecture Calendar . Calendar Manager č Ċ import Ġcom . ice . kt u ice . al . logger . Ice Log č Ċ import Ġcom . ice . kt u ice . al . logger . info č Ċ import Ġcom . ice . kt u ice . models . lecture Calendar Models . Calendar Model č Ċ import Ġkotlinx . android . synt hetic . main . fragment _ timetable .* č Ċ import Ġorg . k oin . standalone . K oin Component čĊč Ċ /** čĊ Ġ* ĠCreated Ġby ĠAnd ri us Ġon Ġ 2 / 2 4 / 2 0 1 8 . čĊ Ġ* ĠDisplays Ġa Ġcalendar Ġof Ġthe Ġupcoming Ġevents čĊ Ġ*/ č Ċ class ĠFragment Time Table : ĠFragment (), ĠK oin Component , ĠI ce Log Ġ{ čĊčĊĠĠĠ Ġprivate Ġval Ġcalendar Manager Ġ= ĠCalendar Manager () čĊčĊĠĠĠ Ġprivate Ġval Ġevents Ġ= Ġmutable ListOf < Week View Event >() čĊčĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ timetable , Ġcontainer , Ġfalse ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġan Ġaction Ġwhen Ġany Ġevent Ġis Ġclicked . čĊĠĠĠĠĠĠĠ Ġweek _ view . setOn Event ClickListener { Ġ_, Ġ_ Ġ-> Ġ Ġinfo (" Click Ġon Ġevent !") } čĊčĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġweek Ġview Ġhas Ġinfinite Ġscrolling Ġh orizontally . ĠWe Ġhave Ġto Ġprovide Ġthe Ġevents Ġof Ġa čĊĠĠĠĠĠĠĠ Ġ// Ġmonth Ġevery Ġtime Ġthe Ġmonth Ġchanges Ġon Ġthe Ġweek Ġview . čĊĠĠĠĠĠĠĠ Ġweek _ view . set Month ChangeListener Ġ{ Ġnew Year , Ġnew Month Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun { čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" set Ġdate Ġset :$ new Year Ġ$ new Month ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevents čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġlong Ġpress Ġlistener Ġfor Ġevents . čĊĠĠĠĠĠĠĠ Ġweek _ view . set Event Long Press Listener { Ġ_, Ġ_ Ġ-> Ġ Ġinfo (" Long Ġclick Ġon Ġevent !") } čĊčĊĠĠĠĠĠĠĠ Ġ// this Ġis Ġwhat Ġthe Ġdevelopers Ġof Ġthe Ġlib Ġuse , Ġbut Ġi Ġthink Ġits Ġa Ġlittle Ġnon Ġresponsive Ġif Ġscrolling Ġslow ly čĊĠĠĠĠĠĠĠ Ġweek _ view . x Scrolling Speed Ġ= Ġ- 1 Ġ* Ġ( Math . log ( 2 . 5 ) Ġ/ ĠMath . log ( 1 . 0 Ġ/ Ġ( 1 Ġ+ Ġweek _ view . numberOf Visible Days ))). toFloat () čĊčĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* ĠDisplay Ġall Ġthe Ġupcoming Ġevents čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġval Ġcalendar Subject Ġ= Ġcalendar Manager . get Calendar Model () čĊĠĠĠĠĠĠĠ Ġcalendar Subject . subscribe { čĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Week View To Calendar ( it ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġgoto _ today _ btn . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġweek _ view . goTo Today () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊčĊĠĠĠ Ġprivate Ġfun Ġupdate Week View To Calendar ( calendar : ĠCalendar Model ){ čĊĠĠĠĠĠĠĠ Ġinfo (" Updating Ġthe Ġcalendar Ġview !") čĊĠĠĠĠĠĠĠ Ġif ( this . activity Ġ!= Ġnull ){ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent List Ġ= Ġweek View Events From Calendar ( calendar ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevents . clear () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevents . addAll ( event List ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġweek _ view . notify Dataset Changed () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġweek View Events From Calendar ( calendar : ĠCalendar Model ): ĠList < Week View Event >{ čĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Week View Event >() čĊĠĠĠĠĠĠĠ Ġcalendar . event List . forEach Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Ġ= ĠWeek View Event () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . startTime Ġ= ĠCalendar Manager . convert Date To Calendar ( it . date Start ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . endTime Ġ= ĠCalendar Manager . convert Date To Calendar ( it . date End ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . color Ġ= Ġit . get Category Color ( this . activity !! ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . name Ġ= Ġit . summary čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . location Ġ= Ġit . getLocation String () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( event ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġlist čĊĠĠĠ Ġ} č Ċ }