package Ġn erd . t ux mob il . fa hr plan . con gress . details Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . annotation . Call Super Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . annotation . MainThread Ċ import Ġandroidx . annotation . NonNull Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġio . not ies . mark won . Mark won Ċ import Ġio . not ies . mark won . link ify . Link ify Plugin Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . Build Config Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . My App Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . R Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . al arms . Alarm Services Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . al arms . Alarm Time Picker Fragment Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . calendar . Calendar Sharing Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . contract . Bundle Keys Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . extensions . replace Fragment Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . extensions . require ViewById Compat Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . extensions . startActivity Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . extensions . to Sp anned Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . extensions . with Arguments Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . models . Session Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . repositories . App Repository Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . sharing . Session Sh arer Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . side pane . On Side Pane Close Listener Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . utils . Link Movement Method Compat Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . utils . Server Backend Type Ċ import Ġn erd . t ux mob il . fa hr plan . con gress . utils . Type face Factory Ċ Ċ class ĠSession Details Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOG _ TAG Ġ= Ġ" Session Details Fragment " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFR AG MENT _ TAG Ġ= Ġ" detail " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSESSION _ DETAILS _ FRAGMENT _ REQUEST _ CODE Ġ= Ġ 5 4 6 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠS CH ED ULE _ FEED BACK _ URL Ġ= ĠBuild Config . SCHED ULE _ FEED BACK _ URL ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSHOW _ FEED BACK _ MENU _ ITEM Ġ= Ġ! TextUtils . isEmpty ( SCHED ULE _ FEED BACK _ URL ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġreplace At Back Stack ( fragment Manager : ĠFragment Manager , Ġ@ Id Res Ġcontainer View Id : ĠInt , Ġside Pane : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠSession Details Fragment (). with Arguments ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBundle Keys . SID EP ANE Ġto Ġside Pane ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager . pop Back Stack ( FRAGMENT _ TAG , ĠFragment Manager . POP _ BACK _ STACK _ INCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager . replace Fragment ( container View Id , Ġfragment , ĠFR AG MENT _ TAG , ĠFR AG MENT _ TAG ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġreplace ( fragment Manager : ĠFragment Manager , Ġ@ Id Res Ġcontainer View Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠSession Details Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager . replace Fragment ( container View Id , Ġfragment , ĠFR AG MENT _ TAG ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Repository : ĠApp Repository ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġalarm Services : ĠAlarm Services ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠSession Details ViewModel Ġby Ġview Models Ġ{ ĠSession Details ViewModel Factory ( app Repository , Ġalarm Services ) Ġ} ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmodel : ĠSelected Session Parameter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmark won : ĠMark won ĊĠĠĠ Ġprivate Ġvar Ġside Pane Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġhas Arguments Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Function By MenuItem Id Ġ= Ġmap Of < Int , ĠSession Details ViewModel . () Ġ-> ĠUnit >( ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ feedback Ġto Ġ{ Ġopen Feedback () Ġ}, ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ share _ session Ġto Ġ{ Ġshare () Ġ}, ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ share _ session _ text Ġto Ġ{ Ġshare () Ġ}, ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ share _ session _ json Ġto Ġ{ Ġshare To Ch aos flix () Ġ}, ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ add _ to _ calendar Ġto Ġ{ ĠaddTo Calendar () Ġ}, ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ flag _ as _ favorite Ġto Ġ{ Ġfavor Session () Ġ}, ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ un flag _ as _ favorite Ġto Ġ{ Ġun f avor Session () Ġ}, ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ set _ alarm Ġto Ġ{ Ġset Alarm () Ġ}, ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ delete _ alarm Ġto Ġ{ Ġdelete Alarm () Ġ}, ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ close _ session _ details Ġto Ġ{ Ġclose Details () Ġ}, ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ navigate Ġto Ġ{ Ġnavigate To Room () Ġ}, ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Attach (@ NonNull Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġapp Repository Ġ= ĠApp Repository ĊĠĠĠĠĠĠĠ Ġalarm Services Ġ= ĠAlarm Services . newInstance ( context , Ġapp Repository ) ĊĠĠĠĠĠĠĠ Ġmark won Ġ= ĠMark won . builder ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Plugin ( Link ify Plugin . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Layout Res Ġval Ġlayout Ġ= Ġif Ġ( side Pane ) ĠR . layout . detail _ narrow Ġelse ĠR . layout . detail ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( layout , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Arguments ( args : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set Arguments ( args ) ĊĠĠĠĠĠĠĠ Ġif Ġ( args Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġside Pane Ġ= Ġargs . getBoolean ( Bundle Keys . SID EP ANE , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Arguments Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġobserve ViewModel () ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġrequire Activity () ĊĠĠĠĠĠĠĠ Ġif Ġ( has Arguments ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . invalidate Options Menu () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġactivity . set Result ( Activity . RESULT _ C ANCE LED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . selected Session Parameter . observe ( view Lifecycle Owner ) Ġ{ Ġmodel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . model Ġ= Ġmodel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Options Menu () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . open Feed Back . observe ( view Lifecycle Owner ) Ġ{ Ġuri Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (). startActivity ( Intent ( Intent . ACTION _ VIEW , Ġuri )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . share _ error _ activity _ not _ found , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . share Simple . observe ( view Lifecycle Owner ) Ġ{ Ġformatted Session Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSession Sh arer . share Simple ( require Context (), Ġformatted Session ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . share Json . observe ( view Lifecycle Owner ) Ġ{ Ġformatted Session Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġrequire Context () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Session Sh arer . share Json ( context , Ġformatted Session )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . share _ error _ activity _ not _ found , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . addTo Calendar . observe ( view Lifecycle Owner ) Ġ{ Ġsession Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCalendar Sharing ( require Context ()). addTo Calendar ( session ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . set Alarm . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlarm Time Picker Fragment . show ( this , ĠSESSION _ DETAILS _ FRAGMENT _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . navigate To Room . observe ( view Lifecycle Owner ) Ġ{ Ġuri Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Intent . ACTION _ VIEW , Ġuri )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . close Details . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġrequire Activity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠOn Side Pane Close Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠOn Side Pane Close Listener ). on Side Pane Close ( FRAGMENT _ TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate View () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġrequire View () ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġrequire Activity () ĊĠĠĠĠĠĠĠ Ġval Ġtype face Factory Ġ= ĠType face Factory . getNew Instance ( activity ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDetail bar ĊĠĠĠĠĠĠĠ Ġvar ĠtextView : ĠTextView Ġ= Ġview . require ViewById Compat ( R . id . session _ detail bar _ date _ time _ view ) ĊĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġif Ġ( model . has Date Utc ) Ġmodel . formatted Z onedDateTime Short Ġelse Ġ"" ĊĠĠĠĠĠĠĠ Ġif Ġ( model . has Date Utc ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . content Description Ġ= ĠSession . get StartTime Content Description ( textView . context , Ġmodel . formatted Z onedDateTime Long ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠtextView Ġ= Ġview . require ViewById Compat ( R . id . session _ detail bar _ location _ view ) ĊĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġmodel . room Name ĊĠĠĠĠĠĠĠ ĠtextView . content Description Ġ= ĠSession . get Room Name Content Description ( textView . context , Ġmodel . room Name ) ĊĠĠĠĠĠĠĠ ĠtextView Ġ= Ġview . require ViewById Compat ( R . id . session _ detail bar _ session _ id _ view ) ĊĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġif Ġ( model . sessionId . isEmpty ()) Ġ"" Ġelse ĠtextView . context . getString ( R . string . session _ details _ session _ id , Ġmodel . sessionId ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTitle ĊĠĠĠĠĠĠĠ ĠtextView Ġ= Ġview . require ViewById Compat ( R . id . session _ details _ content _ title _ view ) ĊĠĠĠĠĠĠĠ Ġvar Ġtype face Ġ= Ġtype face Factory . getType face ( viewModel . title Font ) ĊĠĠĠĠĠĠĠ ĠtextView . apply Text ( type face , Ġmodel . title ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSub title ĊĠĠĠĠĠĠĠ ĠtextView Ġ= Ġview . require ViewById Compat ( R . id . session _ details _ content _ subtitle _ view ) ĊĠĠĠĠĠĠĠ Ġif Ġ( model . subtitle . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype face Ġ= Ġtype face Factory . getType face ( viewModel . subtitle Font ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . apply Text ( type face , Ġmodel . subtitle , ĠSession . get Subtitle Content Description ( textView . context , Ġmodel . subtitle )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠS peak ers ĊĠĠĠĠĠĠĠ ĠtextView Ġ= Ġview . require ViewById Compat ( R . id . session _ details _ content _ speak ers _ view ) ĊĠĠĠĠĠĠĠ Ġif Ġ( model . speaker Names . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype face Ġ= Ġtype face Factory . getType face ( viewModel . speak ers Font ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspeaker Names Content Description Ġ= ĠSession . getS peak ers Content Description ( textView . context , Ġmodel . speak ers Count , Ġmodel . speaker Names ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . apply Text ( type face , Ġmodel . speaker Names , Ġspeaker Names Content Description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAbstract ĊĠĠĠĠĠĠĠ ĠtextView Ġ= Ġview . require ViewById Compat ( R . id . session _ details _ content _ abstract _ view ) ĊĠĠĠĠĠĠĠ Ġif Ġ( model . abstract . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype face Ġ= Ġtype face Factory . getType face ( viewModel . abstract Font ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Server Backend Type . P ENT AB AR F . name Ġ== ĠBuild Config . SERVER _ BACKEND _ TYPE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . apply Html ( type face , Ġmodel . formatted Abstract ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . apply Markdown ( type face , Ġmodel . abstract ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDescription ĊĠĠĠĠĠĠĠ ĠtextView Ġ= Ġview . require ViewById Compat ( R . id . session _ details _ content _ description _ view ) ĊĠĠĠĠĠĠĠ Ġif Ġ( model . description . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype face Ġ= Ġtype face Factory . getType face ( viewModel . description Font ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Server Backend Type . P ENT AB AR F . name Ġ== ĠBuild Config . SERVER _ BACKEND _ TYPE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . apply Html ( type face , Ġmodel . formatted Description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . apply Markdown ( type face , Ġmodel . description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠLinks ĊĠĠĠĠĠĠĠ Ġval Ġlinks View Ġ= Ġview . require ViewById Compat < TextView >( R . id . session _ details _ content _ links _ section _ view ) ĊĠĠĠĠĠĠĠ ĠtextView Ġ= Ġview . require ViewById Compat ( R . id . session _ details _ content _ links _ view ) ĊĠĠĠĠĠĠĠ Ġif Ġ( model . has Links ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype face Ġ= Ġtype face Factory . getType face ( viewModel . links Section Font ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinks View . type face Ġ= Ġtype face ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy App . Log Debug ( LOG _ TAG , Ġ" show Ġlinks ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinks View . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype face Ġ= Ġtype face Factory . getType face ( viewModel . links Font ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . apply Html ( type face , Ġmodel . formatted Links ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinks View . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSession Ġonline ĊĠĠĠĠĠĠĠ Ġval Ġsession Online Section View Ġ= Ġview . require ViewById Compat < TextView >( R . id . session _ details _ content _ session _ online _ section _ view ) ĊĠĠĠĠĠĠĠ Ġtype face Ġ= Ġtype face Factory . getType face ( viewModel . session Online Section Font ) ĊĠĠĠĠĠĠĠ Ġsession Online Section View . type face Ġ= Ġtype face ĊĠĠĠĠĠĠĠ Ġval Ġsession Online Link View Ġ= Ġview . require ViewById Compat < TextView >( R . id . session _ details _ content _ session _ online _ view ) ĊĠĠĠĠĠĠĠ Ġval Ġsession Link Ġ= Ġmodel . session Link ĊĠĠĠĠĠĠĠ Ġif Ġ( model . has Wiki Links Ġ|| Ġsession Link . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Online Section View . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Online Link View . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Online Section View . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Online Link View . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype face Ġ= Ġtype face Factory . getType face ( viewModel . session Online Font ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Online Link View . apply Html ( type face , Ġsession Link ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTextView . apply Text ( type face : ĠType face , Ġtext : ĠString , Ġcontent Description : ĠString ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . type face Ġ= Ġtype face ĊĠĠĠĠĠĠĠ Ġthis . text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġif Ġ( content Description Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . content Description Ġ= Ġcontent Description ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . isVisible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTextView . apply Html ( type face : ĠType face , Ġtext : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . type face Ġ= Ġtype face ĊĠĠĠĠĠĠĠ Ġthis . setText ( text . to Sp anned (), ĠTextView . Buffer Type . SPAN N ABLE ) ĊĠĠĠĠĠĠĠ Ġthis . set Link TextColor ( Context Compat . getColor ( context , ĠR . color . text _ link _ on _ light )) ĊĠĠĠĠĠĠĠ Ġthis . movement Method Ġ= ĠLink Movement Method Compat . getInstance () ĊĠĠĠĠĠĠĠ Ġthis . isVisible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTextView . apply Markdown ( type face : ĠType face , Ġmarkdown : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmark won . set Markdown ( this , Ġmarkdown ) ĊĠĠĠĠĠĠĠ Ġthis . type face Ġ= Ġtype face ĊĠĠĠĠĠĠĠ Ġthis . set Link TextColor ( Context Compat . getColor ( context , ĠR . color . text _ link _ on _ light )) ĊĠĠĠĠĠĠĠ Ġthis . movement Method Ġ= ĠLink Movement Method Compat . getInstance () ĊĠĠĠĠĠĠĠ Ġthis . isVisible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Options Menu () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Activity (). invalidate Options Menu () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! :: model . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSkip Ġif Ġlifecycle Ġis Ġfaster Ġthan ĠViewModel . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . detail menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġif Ġ( model . is Flag ged As Favorite ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . set MenuItem Visibility ( R . id . menu _ item _ flag _ as _ favorite , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . set MenuItem Visibility ( R . id . menu _ item _ un flag _ as _ favorite , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( model . has Alarm ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . set MenuItem Visibility ( R . id . menu _ item _ set _ alarm , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . set MenuItem Visibility ( R . id . menu _ item _ delete _ alarm , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmenu . set MenuItem Visibility ( R . id . menu _ item _ feedback , ĠSHOW _ FEED BACK _ MENU _ ITEM Ġ&& Ġ! model . is Feedback Url Empty ) ĊĠĠĠĠĠĠĠ Ġif Ġ( side Pane ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . set MenuItem Visibility ( R . id . menu _ item _ close _ session _ details , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmenu . set MenuItem Visibility ( R . id . menu _ item _ navigate , ĠBuild Config . C 3 NAV _ URL . isNotEmpty () Ġ&& Ġ! model . is C 3 Nav Room Name Empty ) ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" Constant Condition If ") ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġif Ġ( Build Config . ENABLE _ CHA OS FLI X _ EXPORT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . menu _ item _ share _ session _ menu ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . menu _ item _ share _ session ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġitem ?. let Ġ{ Ġit . isVisible Ġ= Ġtrue Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠSESSION _ DETAILS _ FRAGMENT _ REQUEST _ CODE Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠresultCode Ġ== ĠAlarm Time Picker Fragment . ALERT _ TIME _ P ICK ED _ RESULT _ CODE Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalarm Times Index Ġ= Ġdata . getInt Extra ( Alarm Time Picker Fragment . ALARM _ P ICK ED _ INT ENT _ KEY , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . add Alarm ( alarm Times Index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemId Ġ= Ġitem . itemId ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġfunction Ġ= ĠviewModel Function By MenuItem Id [ itemId ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction . invoke ( viewModel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMenu . set MenuItem Visibility ( itemId : ĠInt , Ġis Visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Item ( itemId )?. let Ġ{ Ġit . isVisible Ġ= Ġis Visible Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ