package Ġeu . kan ade . t ach iy omi . ui . manga . chapter Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 4 . app . Dialog Fragment Ċ import Ġandroid . support . v 7 . view . Action Mode Ċ import Ġandroid . support . v 7 . widget . Divider Item Decoration Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view .* Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġeu . dav idea . flex ible adapter 4 . Flex ible Adapter Ċ import Ġeu . kan ade . t ach iy omi . R Ċ import Ġeu . kan ade . t ach iy omi . data . database . models . Chapter Ċ import Ġeu . kan ade . t ach iy omi . data . database . models . M anga Ċ import Ġeu . kan ade . t ach iy omi . data . download . model . Download Ċ import Ġeu . kan ade . t ach iy omi . ui . base . adapter . Flex ible ViewHolder Ċ import Ġeu . kan ade . t ach iy omi . ui . base . fragment . Base Rx Fragment Ċ import Ġeu . kan ade . t ach iy omi . ui . manga . M anga Activity Ċ import Ġeu . kan ade . t ach iy omi . ui . reader . Reader Activity Ċ import Ġeu . kan ade . t ach iy omi . util . get Coordinates Ċ import Ġeu . kan ade . t ach iy omi . util . sn ack Ċ import Ġeu . kan ade . t ach iy omi . util . toast Ċ import Ġeu . kan ade . t ach iy omi . widget . Deleting Chapter s Dialog Ċ import Ġkotlinx . android . synt hetic . main . fragment _ manga _ chapter s .* Ċ import Ġn ucleus . factory . Requires Presenter Ċ import Ġtim ber . log . Tim ber Ċ Ċ @ Requires Presenter ( Chapter s Presenter :: class ) Ċ class ĠChapter s Fragment Ġ: ĠBase Rx Fragment < Chapter s Presenter >(), ĠAction Mode . Callback , ĠFlex ible ViewHolder . On ListItem ClickListener Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġinstance Ġof Ġthis Ġfragment . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew Ġinstance Ġof Ġ[ Chapter s Fragment ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠChapter s Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠChapter s Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdapter Ġcontaining Ġa Ġlist Ġof Ġchapter s . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠChapter s Adapter ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAction Ġmode Ġfor Ġmultiple Ġselection . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġaction Mode : ĠAction Mode ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( saved State : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( saved State ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, Ġsaved State : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ manga _ chapter s , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , Ġsaved State : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInit ĠRecyclerView Ġand Ġadapter ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠChapter s Adapter ( this ) ĊĊĠĠĠĠĠĠĠ Ġre cycler . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġre cycler . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġre cycler . addItem Decoration ( Divider Item Decoration ( context , ĠDiv ider Item Decoration . VERTICAL )) ĊĠĠĠĠĠĠĠ Ġre cycler . set Has Fixed Size ( true ) ĊĊĠĠĠĠĠĠĠ Ġswipe _ refresh . setOn Refresh Listener Ġ{ Ġfetch Chapter s () Ġ} ĊĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchapter Ġ= Ġpresenter . getNext Un read Chapter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( chapter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġanimation Ġlistener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreveal Animation Listener : ĠAn imator . Animator Listener Ġ= Ġobject Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Chapter ( chapter , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġcoordinates Ġand Ġstart Ġanimation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoordinates Ġ= Ġfab . get Coordinates () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! reveal _ view . show Re veal Effect ( coordinates . x , Ġcoordinates . y , Ġreveal Animation Listener )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Chapter ( chapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . toast ( R . string . no _ next _ chapter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠStop Ġre cycler 's Ġscrolling Ġwhen Ġon Pause Ġis Ġcalled . ĠIf Ġthe Ġactivity Ġis Ġfinish ing ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġpresenter Ġwill Ġbe Ġdestroyed , Ġand Ġit Ġcould Ġcause ĠN PE ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// github . com / in or ichi / t ach iy omi / issues / 1 5 9 ĊĠĠĠĠĠĠĠ Ġre cycler . stop Scroll () ĊĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġanimation Ġview Ġis Ġvisible ĊĠĠĠĠĠĠĠ Ġif Ġ( reveal _ view . visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġthe Ġun Re veal Ġeffect ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoordinates Ġ= Ġfab . get Coordinates () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreveal _ view . hide Re veal Effect ( coordinates . x , Ġcoordinates . y , Ġ 1 9 2 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . chapter s , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepare Options Menu ( menu : ĠMenu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġmenu Ġitems . ĊĠĠĠĠĠĠĠ Ġval Ġmenu Filter Read Ġ= Ġmenu . find Item ( R . id . action _ filter _ read ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġmenu Filter Un read Ġ= Ġmenu . find Item ( R . id . action _ filter _ unread ) ĊĠĠĠĠĠĠĠ Ġval Ġmenu Filter Downloaded Ġ= Ġmenu . find Item ( R . id . action _ filter _ downloaded ) ĊĠĠĠĠĠĠĠ Ġval Ġmenu Filter Book marked Ġ= Ġmenu . find Item ( R . id . action _ filter _ book marked ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġcorrect Ġcheckbox Ġvalues . ĊĠĠĠĠĠĠĠ Ġmenu Filter Read . isChecked Ġ= Ġpresenter . only Read () ĊĠĠĠĠĠĠĠ Ġmenu Filter Un read . isChecked Ġ= Ġpresenter . only Un read () ĊĠĠĠĠĠĠĠ Ġmenu Filter Downloaded . isChecked Ġ= Ġpresenter . only Downloaded () ĊĠĠĠĠĠĠĠ Ġmenu Filter Book marked . isChecked Ġ= Ġpresenter . only Book marked () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( presenter . only Read ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Disable Ġunread Ġfilter Ġoption Ġif Ġread Ġfilter Ġis Ġenabled . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Filter Un read . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( presenter . only Un read ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Disable Ġread Ġfilter Ġoption Ġif Ġunread Ġfilter Ġis Ġenabled . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Filter Read . isEnabled Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ display _ mode Ġ-> Ġshow DisplayMode Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . manga _ download Ġ-> Ġshow Download Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ sorting _ mode Ġ-> Ġshow Sorting Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ filter _ unread Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġ! item . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set Un read Filter ( item . isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . support Invalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ filter _ read Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġ! item . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set Read Filter ( item . isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . support Invalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ filter _ downloaded Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġ! item . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set Downloaded Filter ( item . isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ filter _ book marked Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġ! item . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set Book marked Filter ( item . isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ filter _ empty Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . remove Filters () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . support Invalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ sort Ġ-> Ġpresenter . revert SortOrder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Next M anga ( manga : ĠM anga ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġinitial Ġvalues ĊĠĠĠĠĠĠĠ Ġactivity . support Invalidate Options Menu () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Next Chapter s ( chapter s : ĠList < Chapter Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġlist Ġis Ġempty , Ġfetch Ġchapter s Ġfrom Ġsource Ġif Ġthe Ġconditions Ġare Ġmet ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġuse Ġpresenter Ġchapter s Ġinstead Ġbecause Ġthey Ġare Ġalways Ġun filtered ĊĠĠĠĠĠĠĠ Ġif Ġ( presenter . chapter s . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Fetch Chapter s () ĊĊĠĠĠĠĠĠĠ Ġdestroy Action Mode IfNeeded () ĊĠĠĠĠĠĠĠ Ġadapter . items Ġ= Ġchapter s ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitial Fetch Chapter s () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠOnly Ġfetch Ġif Ġthis Ġview Ġis Ġfrom Ġthe Ġcatalog Ġand Ġit Ġhasn 't Ġrequested Ġpreviously ĊĠĠĠĠĠĠĠ Ġif Ġ( is Catalog ue M anga Ġ&& Ġ! presenter . has Requested ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Chapter s () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Chapter s () Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe _ refresh . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġpresenter . fetch Chapter s From Source () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Fetch Chapter s Done () Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe _ refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Fetch Chapter s Error ( error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe _ refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġcontext . toast ( error . message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Catalog ue M anga : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ( activity Ġas ĠM anga Activity ). from Catalog ue ĊĊĠĠĠ Ġfun Ġopen Chapter ( chapter : ĠChapter , Ġhas Animation : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠReader Activity . new Intent ( activity , Ġpresenter . manga , Ġchapter ) ĊĠĠĠĠĠĠĠ Ġif Ġ( has Animation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ NO _ ANIM ATION ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow DisplayMode Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġavailable Ġmodes , Ġids Ġand Ġthe Ġselected Ġmode ĊĠĠĠĠĠĠĠ Ġval Ġmodes Ġ= Ġint ArrayOf ( R . string . show _ title , ĠR . string . show _ chapter _ number ) ĊĠĠĠĠĠĠĠ Ġval Ġids Ġ= Ġint ArrayOf ( M anga . DISPLAY _ NAME , ĠM anga . DISPLAY _ NUMBER ) ĊĠĠĠĠĠĠĠ Ġval Ġselected Index Ġ= Ġif Ġ( presenter . manga . displayMode Ġ== ĠM anga . DISPLAY _ NAME ) Ġ 0 Ġelse Ġ 1 ĊĊĠĠĠĠĠĠĠ ĠMaterial Dialog . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( R . string . action _ display _ mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. items ( modes . map Ġ{ ĠgetString ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. items Ids ( ids ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. items Callback Single Choice ( selectedIndex ) Ġ{ Ġdialog , ĠitemView , Ġwhich , Ġtext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSave Ġthe Ġnew Ġdisplay Ġmode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set DisplayMode ( item View . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRefresh Ġui ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify Item Range Changed ( 0 , Ġadapter . item Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Sorting Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġavailable Ġmodes , Ġids Ġand Ġthe Ġselected Ġmode ĊĠĠĠĠĠĠĠ Ġval Ġmodes Ġ= Ġint ArrayOf ( R . string . sort _ by _ source , ĠR . string . sort _ by _ number ) ĊĠĠĠĠĠĠĠ Ġval Ġids Ġ= Ġint ArrayOf ( M anga . SORT ING _ SOURCE , ĠM anga . SORT ING _ NUMBER ) ĊĠĠĠĠĠĠĠ Ġval Ġselected Index Ġ= Ġif Ġ( presenter . manga . sorting Ġ== ĠM anga . SORT ING _ SOURCE ) Ġ 0 Ġelse Ġ 1 ĊĊĠĠĠĠĠĠĠ ĠMaterial Dialog . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( R . string . sorting _ mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. items ( modes . map Ġ{ ĠgetString ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. items Ids ( ids ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. items Callback Single Choice ( selectedIndex ) Ġ{ Ġdialog , ĠitemView , Ġwhich , Ġtext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSave Ġthe Ġnew Ġsorting Ġmode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set Sorting ( item View . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Download Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġavailable Ġmodes ĊĠĠĠĠĠĠĠ Ġval Ġmodes Ġ= Ġint ArrayOf ( R . string . download _ 1 , ĠR . string . download _ 5 , ĠR . string . download _ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . download _ unread , ĠR . string . download _ all ) ĊĊĠĠĠĠĠĠĠ ĠMaterial Dialog . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( R . string . manga _ download ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. negative Text ( android . R . string . cancel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. items ( modes . map Ġ{ ĠgetString ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. items Callback Ġ{ Ġdialog , Ġview , Ġi , Ġchar Sequence Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget Un read Chapter s Sorted () Ġ= Ġpresenter . chapter s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! it . read Ġ&& Ġit . status Ġ== ĠDownload . NOT _ DOWN LOADED Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct By Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Descending Ġ{ Ġit . source _ order Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġi Ġ= Ġ 0 : ĠDownload Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġi Ġ= Ġ 1 : ĠDownload Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġi Ġ= Ġ 2 : ĠDownload Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġi Ġ= Ġ 3 : ĠDownload Ġunread ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġi Ġ= Ġ 4 : ĠDownload Ġall ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchapter sTo Download Ġ= Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġget Un read Chapter s Sorted (). take ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġget Un read Chapter s Sorted (). take ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġget Un read Chapter s Sorted (). take ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġpresenter . chapter s . filter Ġ{ Ġ! it . read Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġpresenter . chapter s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( chapter sTo Download . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Chapter s ( chapter sTo Download ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Chapter Status Change ( download : ĠDownload ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Holder ( download . chapter )?. notify Status ( download . status ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Holder ( chapter : ĠChapter ): ĠChapter s Holder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġre cycler . find ViewHolder For ItemId ( chapter . id !! ) Ġas ? ĠChapter s Holder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Action Mode ( mode : ĠAction Mode , Ġmenu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmode . menu Inflater . inflate ( R . menu . chapter _ selection , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġadapter . mode Ġ= ĠFlex ible Adapter . MODE _ MULTI ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepare Action Mode ( mode : ĠAction Mode , Ġmenu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Action Item Clicked ( mode : ĠAction Mode , Ġitem : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ select _ all Ġ-> Ġselect All () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ mark _ as _ read Ġ-> Ġmark As Read ( getSelected Chapter s ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ mark _ as _ unread Ġ-> Ġmark As Un read ( getSelected Chapter s ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ download Ġ-> Ġdownload Chapter s ( getSelected Chapter s ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ delete Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Dialog . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( R . string . confirm _ delete _ chapter s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. positive Text ( android . R . string . yes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. negative Text ( android . R . string . no ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Positive Ġ{ Ġdialog , Ġaction Ġ-> Ġdelete Chapter s ( getSelected Chapter s ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy Action Mode ( mode : ĠAction Mode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . mode Ġ= ĠFlex ible Adapter . MODE _ SINGLE ĊĠĠĠĠĠĠĠ Ġadapter . clear Selection () ĊĠĠĠĠĠĠĠ Ġaction Mode Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Selected Chapter s (): ĠList < Chapter Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġadapter . selected Items . map Ġ{ Ġadapter . getItem ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdestroy Action Mode IfNeeded () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Mode ?. finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġselect All () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . selectAll () ĊĠĠĠĠĠĠĠ Ġset Context Title ( adapter . selected ItemCount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmark As Read ( chapter s : ĠList < Chapter Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . mark Chapter s Read ( chapter s , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġif Ġ( presenter . preferences . remove After Marked As Read ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Chapter s ( chapter s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmark As Un read ( chapter s : ĠList < Chapter Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . mark Chapter s Read ( chapter s , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmark Previous As Read ( chapter : ĠChapter Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchapter s Ġ= Ġif Ġ( presenter . sort Descending ()) Ġadapter . items . reversed () Ġelse Ġadapter . items ĊĠĠĠĠĠĠĠ Ġval Ġchapter Pos Ġ= Ġchapter s . indexOf ( chapter ) ĊĠĠĠĠĠĠĠ Ġif Ġ( chapter Pos Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . mark Chapter s Read ( chapter s . take ( chapter Pos ), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdownload Chapter s ( chapter s : ĠList < Chapter Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġdestroy Action Mode IfNeeded () ĊĠĠĠĠĠĠĠ Ġpresenter . download Chapter s ( chapter s ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! presenter . manga . favorite ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler . sn ack ( getString ( R . string . sn ack _ add _ to _ library ), ĠSn ackbar . LENGTH _ IN DEFIN ITE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action ( R . string . action _ add ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . addTo Library () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbookmark Chapter s ( chapter s : ĠList < Chapter Model >, Ġbook marked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdestroy Action Mode IfNeeded () ĊĠĠĠĠĠĠĠ Ġpresenter . bookmark Chapter s ( chapter s , Ġbook marked ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Chapter s ( chapter s : ĠList < Chapter Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġdestroy Action Mode IfNeeded () ĊĠĠĠĠĠĠĠ ĠDe leting Chapter s Dialog (). show ( child FragmentManager , ĠDe leting Chapter s Dialog . TAG ) ĊĠĠĠĠĠĠĠ Ġpresenter . delete Chapter s ( chapter s ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Chapter s Deleted () Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss Deleting Dialog () ĊĠĠĠĠĠĠĠ Ġadapter . notify Item Range Changed ( 0 , Ġadapter . item Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Chapter s Deleted Error ( error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss Deleting Dialog () ĊĠĠĠĠĠĠĠ ĠTim ber . e ( error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdismiss Deleting Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( child FragmentManager . find Fragment By Tag ( Deleting Chapter s Dialog . TAG ) Ġas ? ĠDialog Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . dismiss Allow ing State Loss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ListItem Click ( position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġadapter . getItem ( position ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( action Mode Ġ!= Ġnull Ġ&& Ġadapter . mode Ġ== ĠFlex ible Adapter . MODE _ MULTI ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Selection ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Chapter ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ListItem Long Click ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( action Mode Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Mode Ġ= Ġactivity . start Support Action Mode ( this ) ĊĊĠĠĠĠĠĠĠ Ġtoggle Selection ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle Selection ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . toggle Selection ( position , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġadapter . selected ItemCount ĊĠĠĠĠĠĠĠ Ġif Ġ( count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Mode ?. finish () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Context Title ( count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Mode ?. invalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Context Title ( count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Mode ?. title Ġ= ĠgetString ( R . string . label _ selected , Ġcount ) ĊĠĠĠ Ġ} Ċ } Ċ