package Ġsoftware . or ping ton . ro z klad mp k . route Details Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġcom . eth anh ua . skeleton . Skeleton Ċ import Ġcom . eth anh ua . skeleton . Skeleton Screen Ċ import Ġsoftware . or ping ton . ro z klad mp k . R Ċ import Ġsoftware . or ping ton . ro z klad mp k . utils . Header Item Decoration Ċ import Ġsoftware . or ping ton . ro z klad mp k . utils . force R ipple Animation Ċ import Ġsoftware . or ping ton . ro z klad mp k . utils . smooth Scroll With Offset Ċ import Ġsoftware . or ping ton . ro z klad mp k . utils . when Scroll State Idle Ċ import Ġkotlinx . android . synt hetic . main . activity _ route _ details .* Ċ import Ġkotlinx . android . synt hetic . main . error _ view . view .* Ċ import Ġkotlinx . android . synt hetic . main . route _ timetable .* Ċ import Ġkotlinx . android . synt hetic . main . route _ timetable _ list _ header . view .* Ċ import Ġsoftware . or ping ton . ro z klad mp k . route Map . Route Map Activity ĊĊ Ċ class ĠRoute Time table Fragment Ġ: ĠFragment (), ĠRoute Details Contract . Time table View Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠRoute Time table Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlayout Manager : ĠLinearLayoutManager ĊĠĠĠ Ġprivate Ġvar Ġpresenter : ĠRoute Details Contract . Presenter ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġhighlight Color : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġnormal Color : ĠInt Ġ= Ġ- 1 ĊĊĠĠĠ Ġoverride Ġfun Ġattach Presenter ( new Presenter : ĠRoute Details Contract . Presenter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter Ġ= Ġnew Presenter ĊĠĠĠĠĠĠĠ Ġpresenter !!. attach Time table View ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . route _ timetable , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter ?. detach Time table View () ĊĠĠĠĠĠĠĠ ĠprogressBar Handler . remove Callbacks And Messages ( null ) ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġhighlight Color Ġ= ĠContext Compat . getColor ( context !! , ĠR . color . primary _ dark ) ĊĠĠĠĠĠĠĠ Ġnormal Color Ġ= ĠContext Compat . getColor ( context !! , ĠR . color . primary _ text ) ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠRoute Time table Adapter ( context !! , Ġpresenter !! ) ĊĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsticky Header Ġ= Ġobject Ġ: ĠHeader Item Decoration . Sticky Header Interface Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Header ( item Position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter . item Count Ġ<= Ġitem Position ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġadapter . getItem ( item Position ). type Ġ== ĠTime table View Helper . ViewType . HEADER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Header Position For Item ( item Position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġheader Position Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġitem Pos Ġ= Ġitem Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . is Header ( item Pos )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Position Ġ= Ġitem Pos ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Pos Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( item Pos Ġ>= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheader Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Header Layout ( header Position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR . layout . route _ timetable _ list _ header ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind Header Data ( header : ĠView ?, Ġheader Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter . item Count Ġ<= Ġheader Position ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġadapter . getItem ( header Position ) Ġas ĠTime table View Helper . Header Item ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader ?. main Text ?. text Ġ= Ġwhen Ġ( item . day Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime table View Helper . Day Type . Week day Ġ-> ĠgetString ( R . string . week days ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime table View Helper . Day Type . Saturday Ġ-> ĠgetString ( R . string . s aturday ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime table View Helper . Day Type . S unday Ġ-> ĠgetString ( R . string . s unday ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader ?. additional Text ?. visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . today ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtime table _ recyclerview . addItem Decoration ( Header Item Decoration ( sticky Header )) ĊĊĠĠĠĠĠĠĠ Ġtime table _ recyclerview ?. adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġtime table _ recyclerview ?. layout Manager Ġ= Ġlayout Manager ĊĊĠĠĠĠĠĠĠ Ġerror Layout . try Again Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter ?. load Time Table () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmap Fab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter ?. map Clicked () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġpresenter ?. load Time Table () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Time Table ( ĊĠĠĠĠĠĠĠ Ġitems : ĠList < Time table View Helper . View Item >, ĊĠĠĠĠĠĠĠ Ġtime To Highlight : ĠString , ĊĠĠĠĠĠĠĠ Ġhour To Scroll To : ĠHour Coordinates ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġselect Direction _ text view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġerror Layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġtime table _ recyclerview . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġactivity ?. app Bar Layout ?. set Expanded ( false , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġadapter . set Items ( items ) ĊĠĠĠĠĠĠĠ Ġif Ġ( hour To Scroll To Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġas ĠRoute Details Activity ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Bar Height Ġ= Ġactivity ?. app Bar Layout ?. height Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 ) Ġsmooth Ġscroll Ġto Ġan Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 ) Ġwhen Ġre cycler view Ġstops Ġscrolling , Ġshow Ġri pple Ġanimation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime table _ recyclerview . when Scroll State Idle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( time To Highlight . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhighlight Time ( time To Highlight ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġtime table _ recyclerview . find View With Tag < LinearLayout >( hour To Scroll To . row Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ?. force R ipple Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager . smooth Scroll With Offset ( timetable _ recyclerview , Ġhour To Scroll To . hour Idx , Ġapp Bar Height ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġvar Ġskeleton Screen : ĠS keleton Screen ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval ĠprogressBar Handler Ġ= ĠHandler () ĊĠĠĠ Ġoverride Ġfun Ġshow ProgressBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġselect Direction _ text view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġerror Layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġtime table _ recyclerview . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġval Ġrunnable Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskeleton Screen Ġ= ĠS keleton ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind ( timetable _ recyclerview ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. adapter ( adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( R . layout . route _ timetable _ skeleton _ list _ item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠprogressBar Handler . post Delayed ( run nable , Ġ 5 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhide ProgressBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġselect Direction _ text view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġerror Layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġtime table _ recyclerview . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ ĠprogressBar Handler . remove Callbacks And Messages ( null ) ĊĠĠĠĠĠĠĠ Ġskeleton Screen ?. hide () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreport That Something W ent Wrong () Ġ{ ĊĠĠĠĠĠĠĠ Ġselect Direction _ text view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġerror Layout . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġtime table _ recyclerview . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhighlight Time ( tag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime table _ recyclerview ?. find View With Tag < TextView >( tag ) ĊĠĠĠĠĠĠĠ ĠtextView ?. setTextColor ( highlight Color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġun highlight Time ( tag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime table _ recyclerview ?. find View With Tag < TextView >( tag ) ĊĠĠĠĠĠĠĠ ĠtextView ?. setTextColor ( normal Color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnavigate ToMap ( route ID : ĠString , Ġdirection : ĠString , Ġstop Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠRoute Map Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" route ID ", Ġroute ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" direction ", Ġdirection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" stop Name ", Ġstop Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠRoute Time table Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRoute Time table Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }