/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠAd vent ech Ġ< info @ ad vent ech . io > Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġcom . cry art . s abb ath school . lessons . ui . lessons Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . core . view . Window Compat Ċ import Ġandroidx . core . widget . Nested ScrollView Ċ import Ġapp . ss . lessons . data . model . SSL ess on Ċ import Ġapp . ss . pdf . Pdf Reader Ċ import Ġcom . cry art . s abb ath school . core . extensions . context . share Content Ċ import Ġcom . cry art . s abb ath school . core . extensions . context . to Web Uri Ċ import Ġcom . cry art . s abb ath school . core . extensions . coroutines . flow . collect In Ċ import Ġcom . cry art . s abb ath school . core . extensions . view . tint Ċ import Ġcom . cry art . s abb ath school . core . extensions . view . view Binding Ċ import Ġcom . cry art . s abb ath school . core . misc . SS Constants Ċ import Ġcom . cry art . s abb ath school . core . model . Status Ċ import Ġcom . cry art . s abb ath school . core . ui . Share able Screen Ċ import Ġcom . cry art . s abb ath school . core . ui . Sl iding Activity Ċ import Ġcom . cry art . s abb ath school . lessons . R Ċ import Ġcom . cry art . s abb ath school . lessons . databinding . Ss Less ons Activity Binding Ċ import Ġcom . cry art . s abb ath school . lessons . ui . base . Status Component Ċ import Ġcom . cry art . s abb ath school . lessons . ui . lessons . components . Footer Component Ċ import Ġcom . cry art . s abb ath school . lessons . ui . lessons . components . Less ons Callback Ċ import Ġcom . cry art . s abb ath school . lessons . ui . lessons . components . Less ons Footer Ċ import Ġcom . cry art . s abb ath school . lessons . ui . lessons . components . Less ons List Component Ċ import Ġcom . cry art . s abb ath school . lessons . ui . lessons . components . Qu arter ly Info Component Ċ import Ġcom . cry art . s abb ath school . lessons . ui . lessons . components . Toolbar Component Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġhot che mi . android . rate . App Rate Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġjavax . inject . Inject Ċ Ċ @ Android EntryPoint Ċ class ĠSSL ess ons Activity Ġ: ĠSl iding Activity (), ĠShare able Screen , ĠLess ons Callback Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpdf Reader : ĠPdf Reader ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Less ons ViewModel >() ĊĊĠĠĠ Ġprivate Ġval Ġbinding Ġby Ġview Binding ( Ss Less ons Activity Binding :: inflate ) ĊĊĠĠĠ Ġprivate Ġval Ġloading Component : ĠStatus Component Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠStatus Component ( this , Ġbinding . ss Less ons Progress ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġerror Component : ĠStatus Component Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠStatus Component ( this , Ġbinding . ss Less ons Error ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġtoolbar Component : ĠToolbar Component Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠToolbar Component ( this , Ġbinding . ss Less ons Toolbar ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġquarter ly Info Component : ĠQu arter ly Info Component Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠQu arter ly Info Component ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Owner Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager Ġ= Ġsupport FragmentManager , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġ= Ġbinding . app Bar Content , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġless ons Callback Ġ= Ġthis , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġless ons List Component : ĠLess ons List Component Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠLess ons List Component ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Owner Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġ= Ġbinding . ss Lesson InfoList , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġless ons Callback Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġshare MenuItem : ĠMenuItem ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ ĠApp Rate . with ( this ). set Install Days ( SS Constants . SS _ APP _ RATE _ INSTALL _ DAYS ). monitor () ĊĠĠĠĠĠĠĠ ĠApp Rate . show Rate Dialog If Me ets Conditions ( this ) ĊĊĠĠĠĠĠĠĠ Ġinit UI () ĊĠĠĠĠĠĠĠ Ġcollect Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit UI () Ġ{ ĊĠĠĠĠĠĠĠ ĠWindow Compat . set Decor Fits System Windows ( window , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( binding . ss Less ons Toolbar . ss Less ons Toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġbinding . scroll View . setOn Scroll ChangeListener Ġ{ Ġ_: ĠNested ScrollView ?, Ġ_: ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscroll Y : ĠInt , Ġ_: ĠInt , Ġ_: ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Height Ġ= Ġbinding . app Bar Content . root . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar Component . on Content Scroll ( scroll Y , Ġcontent Height , Ġthis ) Ġ{ Ġcolor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshare MenuItem ?. icon ?. tint ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquarter ly Info Component . on Content Scroll ( scroll Y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcollect Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquarter ly Info Flow Ġ= ĠviewModel . quarter ly Info Flow ĊĠĠĠĠĠĠĠ Ġval Ġdata Flow Ġ= Ġquarter ly Info Flow . map Ġ{ Ġit . data Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstatus Flow Ġ= Ġquarter ly Info Flow . map Ġ{ Ġit . status Ġ} ĊĊĠĠĠĠĠĠĠ Ġloading Component . collect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Flow . map Ġ{ Ġit Ġ== ĠStatus . LOADING Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġerror Component . collect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Flow . map Ġ{ Ġit Ġ== ĠStatus . ERROR Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtoolbar Component . collect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Flow . map Ġ{ Ġit ?. quarter ly ?. title Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġquarter ly Info Component . collect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Flow . map Ġ{ Ġit Ġ== ĠStatus . SUCCESS Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Flow ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġless ons List Component . collect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Flow . map Ġ{ Ġit ?. lessons Ġ?: Ġempty List () Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠFooter Component ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . compose View , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Flow . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcredits Ġ= Ġit ?. quarter ly ?. credits Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfeatures Ġ= Ġit ?. quarter ly ?. features Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLess ons Footer ( credits , Ġfeatures ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . selected P dfs Flow . collect In ( this ) Ġ{ Ġpair Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( index , Ġp dfs ) Ġ= Ġpair ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pdf s . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( pdf Reader . launch Intent ( pdf s , Ġindex )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . ss _ lessons _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġshare MenuItem Ġ= Ġmenu . find Item ( R . id . ss _ lessons _ menu _ share ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish After Transition () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . ss _ lessons _ menu _ share Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠviewModel . quarter ly Title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshare Content ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ message \ n ${ get Share Web Uri () }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . ss _ menu _ share _ app ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Share Web Uri (): ĠUri Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ getString ( R . string . ss _ app _ host ) }/${ viewModel . quarter ly Share Index }". to Web Uri () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen Pdf ( lesson : ĠSSL ess on ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . pdf Lesson Selected ( lesson ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġlaunch Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquarter ly Index : ĠString ĊĠĠĠĠĠĠĠ Ġ): ĠIntent Ġ= ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSSL ess ons Activity :: class . java ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( SS Constants . SS _ QU AR TER LY _ INDEX _ EXTRA , Ġquarter ly Index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ