package Ġcom . aar on . yes pdf . main Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . CheckBox Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ 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 . Cover Ċ import Ġcom . aar on . yes pdf . common . bean . Shortcut Ċ import Ġcom . aar on . yes pdf . common . event . All Event Ċ import Ġcom . aar on . yes pdf . common . utils . Shortcut Utils Ċ import Ġcom . blank j . util code . util . Toast Utils Ċ import Ġcom . ch ad . library . adapter . base . callback . Item Drag And Swipe Callback Ċ import Ġcom . ch ad . library . adapter . base . listener . On Item Drag Listener Ċ import Ġkotlinx . android . synt hetic . main . app _ fragment _ all .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġorg . green robot . event bus . Thread Mode Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ@ author ĠA aron Ġa aron zz x up @ gmail . com Ċ Ġ*/ Ċ class ĠAll Fragment 2 Ġ: ĠCommon Fragment (), ĠI Operation Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠAll Adapter 2 ĊĠĠĠ Ġprivate Ġval Ġcover List Ġ= ĠData Manager . get Cover List () ĊĠĠĠ Ġprivate Ġval Ġselect List : ĠMutable List < Cover > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġvar Ġis Need Update DB Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Horizontal Layout Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġdialog Fragment : ĠDialog Fragment ? Ġ= Ġnull ĊĠĠĠ Ġ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 _ all , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġis Horizontal Layout Ġ= ĠSettings . linear Layout ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ ĠLive Data Bus . with < Any >( Collection Fragment 2 . EVENT _ UPDATE _ ALL _ FRAGMENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( this :: get Lifecycle ) Ġ{ Ġadapter . notify DataSet Changed () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 () ĊĠĠĠĠĠĠĠ Ġis Need Update DB Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). inject Operation ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ ĠDB Helper . update Collection () ĊĠĠĠĠĠĠĠ ĠData Manager . update Collection () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). unregister ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Collection ( name : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Ġ= Ġname ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( length Ġ> ĠSH ORT CUT _ PREFIX . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubstring ( SHORT CUT _ PREFIX . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadapter . data . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( original Ġ== Ġit . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos Ġ= Ġadapter . data . indexOf ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġadapter . getView By Position ( pos , ĠR . id . app _ root ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. perform Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon Pdf Delete Event ( event : ĠPdf Delete Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDB Helper . delete Collection ( event . dir ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon All Event ( event : ĠAll Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDB Helper . delete Collection ( event . dir ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( delete Local : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( select List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdir List Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( delete Local ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpdf List Ġ= ĠData Manager . get Pdf List ( select List [ 0 ]. name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpdf List . forEach Ġ{ ĠFile ( it . path ). delete () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠDB Helper . delete Collection ( select List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData Manager . update All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUi Manager . show Short ( R . string . app _ delete _ completed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). finish Operation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( All Delete Event ( dir List )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlocal Delete Visibility (): ĠInt Ġ= ĠView . VISIBLE ĊĊĠĠĠ Ġoverride Ġfun Ġselect All ( selectAll : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . selectAll ( selectAll ) ĊĠĠĠĠĠĠĠ Ġselect List . clear () ĊĠĠĠĠĠĠĠ Ġif Ġ( selectAll ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect List . addAll ( cover List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġselect List . size ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). select Result ( size , Ġsize Ġ== Ġcover List . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcancel Select () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . exit Select Mode () ĊĠĠĠĠĠĠĠ Ġselect List . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Description (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetString ( R . string . app _ w hether _ delete _ collection , Ġselect List . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ ĠData Manager . update Collection () ĊĠĠĠĠĠĠĠ Ġadapter . exit Select Mode () ĊĠĠĠĠĠĠĠ Ġselect List . clear () ĊĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( x Item Decoration Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp _ rv _ all . removeItem Decoration ( x Item Decoration !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( y Item Decoration Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp _ rv _ all . removeItem Decoration ( y Item Decoration !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġx Item Decoration Ġ= ĠX Grid Decoration () ĊĠĠĠĠĠĠĠ Ġy Item Decoration Ġ= ĠY Grid Decoration () ĊĠĠĠĠĠĠĠ Ġapp _ rv _ all . addItem Decoration ( x Item Decoration !! ) ĊĠĠĠĠĠĠĠ Ġapp _ rv _ all . addItem Decoration ( y Item Decoration !! ) ĊĠĠĠĠĠĠĠ Ġval Ġlm Ġ= Ġif Ġ( is Horizontal Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGrid LayoutManager ( activity , Ġ 3 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Lookup Ġ= Ġobject Ġ: ĠGrid LayoutManager . Span Size Lookup () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Span Size ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( cover List . isEmpty ()) Ġ 3 Ġelse Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġapp _ rv _ all . layout Manager Ġ= Ġlm ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠAll Adapter 2 ( cover List ) ĊĠĠĠĠĠĠĠ Ġadapter . setOn ItemClickListener Ġ{ Ġ_, Ġview , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter . is Select Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcover Ġ= Ġcover List [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcheckBox : ĠCheckBox ? Ġ= Ġview . findViewById ( adapter . checkBox Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checkBox ?. isChecked Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect List . remove ( cover ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect List . add ( cover ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġselect List . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). select Result ( size , Ġsize Ġ== Ġcover List . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dialog Fragment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Fragment ?. dismiss Allow ing State Loss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Fragment Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcover List [ position ]. name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Fragment Ġ= ĠCollection Fragment 2 . newInstance ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Fragment ?. show ( fragment Manager !! , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadapter . setOn Item Drag Listener ( object Ġ: ĠOn Item Drag Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar ĠcheckBox : ĠCheckBox ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Drag Moving ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Pos : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Pos : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Drag Start ( view Holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckBox Ġ= ĠviewHolder . item View . findViewById ( R . id . app _ cb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckBox . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Drag End ( view Holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! adapter . is Select Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). start Operation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect List . add ( cover List [ position ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġselect List . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). select Result ( size , Ġsize Ġ== Ġcover List . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . enter Select Mode ( view Holder . item View , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckBox . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠData Manager . get Collection List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Ġ= Ġlist . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( cover Ġin Ġcover List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcover . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġc . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . position Ġ= Ġmax -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Need Update DB Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġdrag Helper Ġ= ĠItem Touch Helper ( Item Drag And Swipe Callback ( adapter )) ĊĠĠĠĠĠĠĠ Ġdrag Helper . attach To RecyclerView ( app _ rv _ all ) ĊĠĠĠĠĠĠĠ Ġadapter . enable Drag Item ( drag Helper ) ĊĠĠĠĠĠĠĠ Ġadapter . bind To RecyclerView ( app _ rv _ all ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Shortcut () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils . show Short ( R . string . app _ not _ support _ launcher _ shortcut ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġselected s Ġ= Ġselect List ĊĠĠĠĠĠĠĠ Ġif Ġ( selected s . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils . show Short ( App . getContext (). resources . getString ( R . string . app _ shortcut _ max ), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġselected s [ 0 ]. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut Utils . create Pin ned Shortcut ( App . getContext (), ĠShort cut ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . app _ ic _ shortcut _ folder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . EXTRA _ DIR _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ SHORT CUT _ PREFIX ${ it . name }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Settings . first Create Shortcut ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils . show Long ( R . string . app _ first _ create _ shortcut _ tips ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . first Create Shortcut Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). finish Operation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Export (): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSH ORT CUT _ PREFIX Ġ= Ġ" collection -" ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAll Fragment 2 () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }