package Ġeu . kan ade . t ach iy omi . ui . library Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġeu . kan ade . t ach iy omi . R Ċ import Ġeu . kan ade . t ach iy omi . data . preference . Preferences Helper Ċ import Ġeu . kan ade . t ach iy omi . data . preference . get OrDefault Ċ import Ġeu . kan ade . t ach iy omi . widget . Extended Navigation View Ċ import Ġeu . kan ade . t ach iy omi . widget . Extended Navigation View . Item . Multi Sort . Companion . SORT _ ASC Ċ import Ġeu . kan ade . t ach iy omi . widget . Extended Navigation View . Item . Multi Sort . Companion . SORT _ DESC Ċ import Ġeu . kan ade . t ach iy omi . widget . Extended Navigation View . Item . Multi Sort . Companion . SORT _ NONE Ċ import Ġu y . ko hes ive . in jekt . inject Lazy Ċ Ċ /** Ċ Ġ* ĠThe Ġnavigation Ġview Ġshown Ġin Ġa Ġdrawer Ġwith Ġthe Ġdifferent Ġoptions Ġto Ġshow Ġthe Ġlibrary . Ċ Ġ*/ Ċ class ĠLibrary Navigation View Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull ) Ġ: ĊĠĠĠ ĠExtended Navigation View ( context , Ġattrs ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPreferences Ġhelper . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġpreferences : ĠPreferences Helper Ġby Ġinject Lazy () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġgroups Ġshown Ġin Ġthe Ġview . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġgroups Ġ= ĠlistOf ( Filter Group (), ĠSort Group ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdapter Ġinstance . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġadapter Ġ= ĠAdapter ( groups . map Ġ{ Ġit . create Items () Ġ}. flatten ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClick Ġlistener Ġto Ġnotify Ġthe Ġparent Ġfragment Ġwhen Ġan Ġitem Ġfrom Ġa Ġgroup Ġis Ġclicked . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġon Group Clicked : Ġ( Group ) Ġ-> ĠUnit Ġ= Ġ{} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġre cycler . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġadd View ( recycler ) ĊĊĠĠĠĠĠĠĠ Ġgroups . forEach Ġ{ Ġit . init Models () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġtrue Ġif Ġthere 's Ġat Ġleast Ġone Ġfilter Ġfrom Ġ[ Filter Group ] Ġactive . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhas Active Filters (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( groups [ 0 ] Ġas ĠFilter Group ). items . any Ġ{ Ġit . checked Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdapter Ġof Ġthe Ġre cycler Ġview . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠAdapter ( items : ĠList < Item >) Ġ: ĠExtended Navigation View . Adapter ( items ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( item : ĠItem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠGroup ed Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . group . on Item Clicked ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Group Clicked ( item . group ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFilters Ġgroup Ġ( unread , Ġdownloaded , Ġ... ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠFilter Group Ġ: ĠGroup Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdownloaded Ġ= ĠItem . Checkbox Group ( R . string . action _ filter _ downloaded , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġunread Ġ= ĠItem . Checkbox Group ( R . string . action _ filter _ unread , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcompleted Ġ= ĠItem . Checkbox Group ( R . string . completed , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġitems Ġ= ĠlistOf ( downloaded , Ġunread , Ġcompleted ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġheader Ġ= ĠItem . Header ( R . string . action _ filter ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġfooter Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinit Models () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownloaded . checked Ġ= Ġpreferences . filter Downloaded (). get OrDefault () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunread . checked Ġ= Ġpreferences . filter Un read (). get OrDefault () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompleted . checked Ġ= Ġpreferences . filter Completed (). get OrDefault () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( item : ĠItem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġas ĠItem . Checkbox Group ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . checked Ġ= Ġ! item . checked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownloaded Ġ-> Ġpreferences . filter Downloaded (). set ( item . checked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunread Ġ-> Ġpreferences . filter Un read (). set ( item . checked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompleted Ġ-> Ġpreferences . filter Completed (). set ( item . checked ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify Item Changed ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSort ing Ġgroup Ġ( alphabet ically , Ġby Ġlast Ġread , Ġ...) Ġand Ġascending Ġor Ġdescending . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠSort Group Ġ: ĠGroup Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġalphabet ically Ġ= ĠItem . Multi Sort ( R . string . action _ sort _ alpha , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtotal Ġ= ĠItem . Multi Sort ( R . string . action _ sort _ total , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlast Read Ġ= ĠItem . Multi Sort ( R . string . action _ sort _ last _ read , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlast Updated Ġ= ĠItem . Multi Sort ( R . string . action _ sort _ last _ updated , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġunread Ġ= ĠItem . Multi Sort ( R . string . action _ filter _ unread , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlatest Chapter Ġ= ĠItem . Multi Sort ( R . string . action _ sort _ latest _ chapter , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġitems Ġ= ĠlistOf ( alphabet ically , Ġlast Read , Ġlast Updated , Ġunread , Ġtotal , Ġlatest Chapter ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġheader Ġ= ĠItem . Header ( R . string . action _ sort ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġfooter Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinit Models () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsorting Ġ= Ġpreferences . library Sorting Mode (). get OrDefault () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorder Ġ= Ġif Ġ( preferences . library Sorting Ascending (). get OrDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSORT _ ASC Ġelse ĠSORT _ DESC ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġalphabet ically . state Ġ= Ġif Ġ( sorting Ġ== ĠLibrary Sort . ALPHA ) Ġorder Ġelse ĠSORT _ NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Read . state Ġ= Ġif Ġ( sorting Ġ== ĠLibrary Sort . LAST _ READ ) Ġorder Ġelse ĠSORT _ NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Updated . state Ġ= Ġif Ġ( sorting Ġ== ĠLibrary Sort . LAST _ UPDATED ) Ġorder Ġelse ĠSORT _ NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunread . state Ġ= Ġif Ġ( sorting Ġ== ĠLibrary Sort . UN READ ) Ġorder Ġelse ĠSORT _ NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal . state Ġ= Ġif Ġ( sorting Ġ== ĠLibrary Sort . TOTAL ) Ġorder Ġelse ĠSORT _ NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Chapter . state Ġ= Ġif Ġ( sorting Ġ== ĠLibrary Sort . LATE ST _ CH AP TER ) Ġorder Ġelse ĠSORT _ NONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( item : ĠItem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġas ĠItem . Multi State Group ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprev State Ġ= Ġitem . state ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . group . items . forEach Ġ{ Ġ( it Ġas ĠItem . Multi State Group ). state Ġ= ĠSORT _ NONE Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . state Ġ= Ġwhen Ġ( prev State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSORT _ NONE Ġ-> ĠSORT _ ASC ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSORT _ ASC Ġ-> ĠSORT _ DESC ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSORT _ DESC Ġ-> ĠSORT _ ASC ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠException (" Unknown Ġstate ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . library Sorting Mode (). set ( when Ġ( item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalphabet ically Ġ-> ĠLibrary Sort . ALPHA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Read Ġ-> ĠLibrary Sort . LAST _ READ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Updated Ġ-> ĠLibrary Sort . LAST _ UPDATED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunread Ġ-> ĠLibrary Sort . UN READ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ-> ĠLibrary Sort . TOTAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Chapter Ġ-> ĠLibrary Sort . LATE ST _ CH AP TER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠException (" Unknown Ġsorting ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . library Sorting Ascending (). set ( item . state Ġ== ĠSORT _ ASC ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . group . items . forEach Ġ{ Ġadapter . notify Item Changed ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ