package Ġcom . aar on . yes pdf . file picker Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . RecyclerView . Adapter Data Observer Ċ import Ġcom . aar on . base . impl . OnClickListener Impl Ċ import Ġcom . aar on . base . impl . Text Watcher Impl Ċ import Ġcom . aar on . yes pdf . R Ċ import Ġcom . aar on . yes pdf . common . Common Fragment Ċ import Ġcom . aar on . yes pdf . common . Dialog Manager Ċ import Ġcom . aar on . yes pdf . common . Grouping Adapter Ċ import Ġcom . aar on . yes pdf . common . Ui Manager Ċ import Ġcom . blank j . util code . util . Keyboard Utils Ċ import Ġcom . blank j . util code . util . Log Utils Ċ import Ġcom . blank j . util code . util . StringUtils Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Ċ import Ġkotlinx . android . synt hetic . main . app _ fragment _ view _ all .* Ċ import Ġkotlinx . android . synt hetic . main . app _ include _ tv _ path .* Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ*/ Ċ class ĠView All Fragment Ġ: ĠCommon Fragment (), ĠI View All View , ĠView All Adapter . Callback Ġ{ ĊĊĠĠĠ Ġvar Ġadapter : ĠView All Adapter ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġselect List : ĠMutable List < String > Ġ= ĠArrayList () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpresenter : ĠI View All Presenter ĊĠĠĠ Ġprivate Ġval Ġimport Dialog : ĠBottom Sheet Dialog Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDialog Manager . create Import Dialog ( activity ) Ġ{ Ġet Input , Ġbtn Left , Ġbtn Center , Ġbtn Right Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet Input . add TextChanged Listener ( object Ġ: ĠText Watcher Impl () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( char Sequence : ĠCharSequence , Ġi : ĠInt , Ġi 1 : ĠInt , Ġi 2 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew GroupName Ġ= Ġchar Sequence . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Left . setOnClickListener ( object Ġ: ĠOn ClickListener Impl () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Click ( v : ĠView , Ġinterval : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrouping Dialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Center . setOnClickListener ( object Ġ: ĠOn ClickListener Impl () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Click ( v : ĠView , Ġinterval : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result Back ( Select Activity . TYPE _ BASE _ FOLDER , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Right . setOnClickListener ( object Ġ: ĠOn ClickListener Impl () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Click ( v : ĠView , Ġinterval : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( StringUtils . isEmpty ( new GroupName )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUi Manager . show Short ( R . string . app _ type _ new _ group _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result Back ( Select Activity . TYPE _ CUSTOM , Ġnew GroupName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġgrouping Dialog : ĠBottom Sheet Dialog Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDialog Manager . create Grouping Dialog ( activity , Ġfalse , Ġobject Ġ: ĠGroup ing Adapter . Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon AddNew Group () Ġ{ Ġ// Ġempty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon AddTo Group ( dir : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result Back ( Select Activity . TYPE _ TO _ EXIST , Ġdir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġnew GroupName : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġfile List : ĠMutable List < File > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġval ĠonClick Listener Ġ= ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġit . tag Ġas ĠString ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġapp _ ll . indexOf Child ( it ) ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġapp _ ll . child Count ĊĠĠĠĠĠĠĠ Ġapp _ ll . remove Views ( index Ġ+ Ġ 1 , Ġcount Ġ- Ġindex Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġpresenter . list File ( path ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġdata Observer : ĠAdapter Data Observer Ġ= Ġobject Ġ: ĠAdapter Data Observer () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChanged () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠSelect Activity ). ib tn Select All . isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp _ btn _ import _ count . text Ġ= ĠgetString ( R . string . app _ import _ count , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenable Select All Ġ= Ġadapter ?. reset () Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠSelect Activity ). ib tn Select All . isEnabled Ġ= Ġenable Select All ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġpresenter Ġ= ĠView All Presenter ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . app _ fragment _ view _ all , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġpresenter . list Storage () ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Focus () Ġ{ ĊĠĠĠĠĠĠĠ Ġapp _ horizontal _ sv . request Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠSelect Activity ). ib tn Select All . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠSelect Activity ). ib tn Search . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠSelect Activity ). set Re veal Param () ĊĠĠĠĠĠĠĠ Ġapp _ horizontal _ sv . is Focus able In Touch Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġapp _ horizontal _ sv . request Focus () ĊĠĠĠĠĠĠĠ Ġapp _ horizontal _ sv . setOn Key Listener ( View . On Key Listener Ġ{ Ġ_, ĠkeyCode , Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . action Ġ== ĠKeyEvent . ACTION _ DOWN Ġ&& ĠkeyCode Ġ== ĠKeyEvent . KEYCODE _ BACK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! presenter . can Finish ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠSelect Activity ). ib tn Inverse . isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠSelect Activity ). et Search . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . go Back () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Key Listener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġapp _ horizontal _ sv . setOn Key Listener ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġadapter ?. unregister Adapter Data Observer ( data Observer ) ĊĠĠĠĠĠĠĠ Ġpresenter . detach () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Show Message ( string Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠUi Manager . show Short ( string Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Show FileList ( file List : ĠList < File > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . file List . clear () ĊĠĠĠĠĠĠĠ Ġthis . file List . addAll ( file List !! ) ĊĠĠĠĠĠĠĠ Ġadapter ?. notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Show Path ( path List : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġapp _ ll . remove Views ( 1 , Ġapp _ ll . child Count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= ĠStringBuilder ( I View All Presenter . ROOT _ PATH ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( dir Name Ġin Ġpath List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Path Ġ= Ġinflater . inflate ( R . layout . app _ include _ tv _ path , Ġnull ) Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Path . setOnClickListener ( on ClickListener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Path . text Ġ= Ġdir Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . append ("/ "). append ( dir Name ) Ġ// Ġå½ĵåīį èĬĤçĤ¹ çĶŁæĪĲ åĲİ åį³ åıĺ æĪĲ ä¸ĭ ä¸Ģ èĬĤçĤ¹ çļĦ çĪ¶ èĬĤçĤ¹ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Path . tag Ġ= Ġparent . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp _ ll . addView ( tv Path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Dir Tap ( dir Path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . list File ( dir Path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġoverride Ġfun ĠonSelect Result ( path List : ĠList < String >, Ġtotal : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( total Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠSelect Activity ). ib tn Select All . isSelected Ġ= Ġpath List . size Ġ== Ġtotal ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġapp _ btn _ import _ count . text Ġ= ĠgetString ( R . string . app _ import _ count , Ġpath List . size ) ĊĠĠĠĠĠĠĠ Ġselect List . clear () ĊĠĠĠĠĠĠĠ Ġselect List . addAll ( path List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġapp _ tv _ path . setOnClickListener ( on ClickListener ) ĊĠĠĠĠĠĠĠ Ġapp _ tv _ path . tag Ġ= ĠI View All Presenter . ROOT _ PATH Ġ// Ġ åİŁå§ĭ è·¯å¾Ħ ĊĠĠĠĠĠĠĠ Ġapp _ btn _ import _ count . setOnClickListener ( object Ġ: ĠOn ClickListener Impl () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Click ( v : ĠView , Ġinterval : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Keyboard Utils . is Soft Input Visible ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Utils . hide Soft Input ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( select List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUi Manager . show Short ( R . string . app _ have _ not _ select ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Dialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠSelect Activity ). ib tn Select All . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . isSelected Ġ= Ġ! it . isSelected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter !!. selectAll ( it . isSelected ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠSelect Activity ). ib tn Select All . isEnabled Ġ= Ġfalse Ġ// ĠXML Ġè®¾ç½® æĹł æķĪ ï¼Į åıªèĥ½ è¿ĻéĩĮ åĪĿå§ĭåĮĸ ĊĠĠĠĠĠĠĠ Ġval Ġlm : ĠRecyclerView . LayoutManager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġapp _ rv _ select . layout Manager Ġ= Ġlm ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠView All Adapter ( file List , Ġ( activity Ġas ĠSelect Activity ). imported s , Ġthis ) ĊĠĠĠĠĠĠĠ Ġadapter ?. register Adapter Data Observer ( data Observer ) ĊĠĠĠĠĠĠĠ Ġapp _ rv _ select . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Result Back ( type : ĠInt , ĠgroupName : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġdata . putString ArrayList Extra ( Select Activity . EXTRA _ SELECTED , Ġselect List Ġas ĠArrayList < String >) ĊĠĠĠĠĠĠĠ Ġdata . putExtra ( Select Activity . EXTRA _ TYPE , Ġtype ) ĊĠĠĠĠĠĠĠ Ġdata . putExtra ( Select Activity . EXTRA _ GROUP _ NAME , ĠgroupName ) ĊĠĠĠĠĠĠĠ Ġactivity . set Result ( Activity . RESULT _ OK , Ġdata ) ĊĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠView All Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }