package Ġcom . aar on . yes pdf . main Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager . Span Size Lookup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . aar on . yes pdf . R Ċ import Ġcom . aar on . yes pdf . common .* Ċ import Ġcom . aar on . yes pdf . common . bean . PDF Ċ import Ġcom . aar on . yes pdf . common . event . Max Recent Event Ċ import Ġcom . aar on . yes pdf . common . event . Recent PDF Event Ċ import Ġcom . aar on . yes pdf . main . Abstract Adapter . IP ick Callback Ċ import Ġcom . blank j . util code . util . Log Utils Ċ import Ġcom . blank j . util code . util . Thread Utils Ċ import Ġcom . blank j . util code . util . Thread Utils . Simple Task Ċ import Ġkotlinx . android . synt hetic . main . app _ fragment _ recent .* Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġorg . green robot . event bus . Thread Mode Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ@ author ĠA aron Ġa aron zz x up @ gmail . com Ċ Ġ*/ Ċ class ĠRecent Fragment Ġ: ĠCommon Fragment (), ĠI Operation , ĠIP ick Callback < PDF > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġadapter : ĠAbstract Adapter < PDF >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġrecent PDF List : ĠMutable List < PDF > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġval Ġselect PDF List : ĠMutable List < PDF > Ġ= ĠArrayList () ĊĊĠĠĠ Ġprivate Ġvar Ġis Horizontal Layout Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġx Item Decoration : ĠRecyclerView . Item Decoration ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġy Item Decoration : ĠRecyclerView . Item Decoration ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). register ( this ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . app _ fragment _ recent , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġis Horizontal Layout Ġ= ĠSettings . linear Layout ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Horizontal Layout Ġ!= ĠSettings . linear Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Horizontal Layout Ġ= ĠSettings . linear Layout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). inject Operation ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). unregister ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon Pdf Delete Event ( event : ĠPdf Delete Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( recent PDF List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . execute By Io < Any >( object Ġ: ĠSimple Task < Any ?> () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background (): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelete : ĠMutable List < PDF > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( name Ġin Ġevent . deleted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( pdf Ġin Ġrecent PDF List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pdf . name Ġ== Ġname ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete . add ( pdf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecent PDF List . removeAll ( delete ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB Helper . delete Recent ( delete ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon All Delete Event ( event : ĠAll Delete Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( recent PDF List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . execute By Io < Any >( object Ġ: ĠSimple Task < Any ?> () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background (): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelete : ĠMutable List < PDF > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( dir Ġin Ġevent . dir List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( pdf Ġin Ġrecent PDF List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pdf . dir Ġ== Ġdir ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete . add ( pdf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecent PDF List . removeAll ( delete ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB Helper . delete Recent ( delete ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon Recent PDF Event ( event : ĠRecent PDF Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrecent PDF List . clear () ĊĠĠĠĠĠĠĠ Ġrecent PDF List . addAll ( DB Helper . query Recent PDF ()) ĊĠĠĠĠĠĠĠ Ġ// Ġ å®ŀ æĹ¶ æĽ´æĸ° æľĢæĸ° éĺħè¯» åĪĹè¡¨ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . is From Preview Activity ) Ġ{ Ġ// Ġ çĶ± ĠPreview Activity Ġåıĳ åĩº èĢĮ æİ¥æĶ¶ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// Ġ çĶ±äºİ è¿ĺ åľ¨ ĠMainActivity Ġ çķĮéĿ¢ ï¼Į æīĢä»¥ ä¸į ç«ĭ åį³ æĽ´æĸ° çķĮéĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp _ rv _ recent . post Delayed ({ Ġadapter ?. notify DataSet Changed () Ġ}, Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon Max Recent Event ( event : ĠMax Recent Event ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter ?. notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Pick ing () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). start Operation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Selected ( list : ĠList < PDF >, Ġselect All : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Utils . e ( list ) ĊĠĠĠĠĠĠĠ Ġselect PDF List . clear () ĊĠĠĠĠĠĠĠ Ġselect PDF List . addAll ( list ) ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). select Result ( list . size , Ġselect All ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Export (): ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Shortcut () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( delete Local : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( select PDF List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . execute By Io < List < String >>( object Ġ: ĠSimple Task < List < String >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecent PDF List . removeAll ( select PDF List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDB Helper . delete Recent ( select PDF List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠList < String > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUi Manager . show Short ( R . string . app _ delete _ completed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). finish Operation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġselect All ( selectAll : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter ?. selectAll ( selectAll ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcancel Select () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter ?. cancel Select () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Description (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetString ( R . string . app _ w hether _ delete _ recent , Ġselect PDF List . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlocal Delete Visibility (): ĠInt Ġ= ĠView . GONE ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( x Item Decoration Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp _ rv _ recent . removeItem Decoration ( x Item Decoration !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( y Item Decoration Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp _ rv _ recent . removeItem Decoration ( y Item Decoration !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġx Item Decoration Ġ= ĠX Grid Decoration () ĊĠĠĠĠĠĠĠ Ġy Item Decoration Ġ= ĠY Grid Decoration () ĊĠĠĠĠĠĠĠ Ġapp _ rv _ recent . addItem Decoration ( x Item Decoration !! ) ĊĠĠĠĠĠĠĠ Ġapp _ rv _ recent . addItem Decoration ( y Item Decoration !! ) ĊĠĠĠĠĠĠĠ Ġval Ġlm Ġ= ĠGrid LayoutManager ( activity , Ġ 3 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Lookup Ġ= Ġobject Ġ: ĠSpan Size Lookup () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Span Size ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( recent PDF List . isEmpty () Ġ|| Ġis Horizontal Layout ) Ġ 3 Ġelse Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġapp _ rv _ recent . layout Manager Ġ= Ġlm ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠRecent Adapter ( this , Ġrecent PDF List ) ĊĠĠĠĠĠĠĠ Ġapp _ rv _ recent . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġrecent PDF List . addAll ( DB Helper . query Recent PDF ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRecent Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }