package Ġeu . kan ade . t ach iy omi . ui . reader . loader Ċ Ċ import Ġeu . kan ade . t ach iy omi . source . model . Page Ċ import Ġeu . kan ade . t ach iy omi . ui . reader . model . Reader Page Ċ import Ġeu . kan ade . t ach iy omi . util . storage . E pub File Ċ import Ġrx . Observable Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠLoader Ġused Ġto Ġload Ġa Ġchapter Ġfrom Ġa Ġ. ep ub Ġfile . Ċ Ġ*/ Ċ class ĠE pub Page Loader ( file : ĠFile ) Ġ: ĠPage Loader () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġe pub Ġfile . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġe pub Ġ= ĠE pub File ( file ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe cycles Ġthis Ġloader Ġand Ġthe Ġopen Ġzip . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġre cycle () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . recycle () ĊĠĠĠĠĠĠĠ Ġe pub . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġobservable Ġcontaining Ġthe Ġpages Ġfound Ġon Ġthis Ġzip Ġarchive Ġordered Ġwith Ġa Ġnatural ĊĠĠĠĠ Ġ* Ġcomparator . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Pages (): ĠObservable < List < Reader Page >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġe pub . get Images From Pages () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Indexed Ġ{ Ġi , Ġpath Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstream Fn Ġ= Ġ{ Ġe pub . getInputStream ( ep ub . getEntry ( path ) !! ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReader Page ( i ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstream Ġ= Ġstream Fn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠPage . READY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠObservable . just ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġobservable Ġthat Ġemits Ġa Ġready Ġstate Ġunless Ġthe Ġloader Ġwas Ġre cyc led . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Page ( page : ĠReader Page ): ĠObservable < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable . just ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Re cyc led ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPage . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPage . READY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ