/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠH az uki Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġjp . h az uki . y uz ub rowser . legacy . debug Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . activity . On Back Pressed Callback Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . widget . AppCompat EditText Ċ import Ġandroidx . document file . provider . Document File Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . commit Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġjp . h az uki . y uz ub rowser . core . utility . utils . get MimeType Ċ import Ġjp . h az uki . y uz ub rowser . legacy . R Ċ import Ġjp . h az uki . y uz ub rowser . legacy . debug . file . File Adapter Ċ import Ġjp . h az uki . y uz ub rowser . legacy . debug . file . File Browser ViewModel Ċ import Ġjp . h az uki . y uz ub rowser . legacy . debug . file . File Item Ċ import Ġjp . h az uki . y uz ub rowser . ui . dialog . EditText Dialog Fragment Ċ import Ġjp . h az uki . y uz ub rowser . ui . extensions . register For Start Activity For Result Ċ import Ġjp . h az uki . y uz ub rowser . ui . widget . toast Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ Ċ class ĠFile Browser Fragment Ġ: ĠFragment (), ĠFile Adapter . On File ClickListener , ĊĠĠĠ ĠEditText Dialog Fragment . On Text Change Callback Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < File Browser ViewModel > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġarguments ?. get Serializable ( ARG _ FILE ) Ġas ĠFile ? ĊĠĠĠĠĠĠĠ ĠFile Browser ViewModel . Factory ( file Ġ?: ĠFile ( require Context (). application Info . data Dir )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ debug _ file _ browser , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġview . findViewById < RecyclerView >( R . id . re cyclerView ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠFile Adapter ( view Lifecycle Owner , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġre cyclerView . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . layout Manager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . contents . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . files Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . current Root . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġback Callback . isEnabled Ġ= Ġit Ġ!= ĠviewModel . root ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrequire Activity (). on Back Pressed Dispatcher . add Callback ( view Lifecycle Owner , Ġback Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . add (" Paste "). setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcopy Ġ= ĠviewModel . copy Ġ?: Ġreturn @ setOn MenuItem ClickListener Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy . copy To ( File ( viewModel . current Root . value , Ġcopy . name ), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . reload () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmenu . add (" Create Ġdirectory "). setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEditText Dialog Fragment ( ID _ CREATE _ DIR , Ġ" Create Ġdirectory ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( child FragmentManager , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmenu . add (" Create Ġa Ġnew Ġfile "). setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEditText Dialog Fragment ( ID _ CREATE _ FILE , Ġ" Create Ġan Ġempty Ġfile ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( child FragmentManager , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmenu . add (" Import Ġfile "). setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon File Click ( item : ĠFile Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . path . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Dir ( item . path ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent FragmentManager . commit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( R . id . container , ĠFile Edit Fragment ( item . path )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon File Long Press ( item : ĠFile Item ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠLong Press Fragment ( item . path ). show ( child FragmentManager , Ġ"") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfile . delete Re cursively () ĊĠĠĠĠĠĠĠ ĠviewModel . reload () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrename ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRename Fragment ( file ). show ( child FragmentManager , Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrename ( file : ĠFile , Ġnew File : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfile . rename To ( new File ) ĊĠĠĠĠĠĠĠ ĠviewModel . reload () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Directory ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ( viewModel . current Root . value , Ġname ). mkdir () ĊĠĠĠĠĠĠĠ ĠviewModel . reload () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate File ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( viewModel . current Root . value , Ġname ). createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . reload () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġback Callback Ġ= Ġobject Ġ: ĠOn Back Pressed Callback ( false ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle On Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Dir ( viewModel . current Root . value . parent File !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexport ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . export File Ġ= Ġfile ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ CREATE _ DOCUMENT ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . type Ġ= Ġget MimeType ( file . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . putExtra ( Intent . EXTRA _ TITLE , Ġfile . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġexport Launcher . launch ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġexport Launcher Ġ= Ġregister For Start Activity For Result Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . result Code Ġ!= ĠActivity . RESULT _ OK ) Ġreturn @ register For Start Activity For Result ĊĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġit . data ?. data Ġ?: Ġreturn @ register For Start Activity For Result ĊĊĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġrequire Context () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠviewModel . export File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġif Ġ( file Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . open OutputStream ( uri )?. use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . inputStream (). use Ġ{ Ġins Ġ-> Ġins . copy To ( os ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . toast (" Exported .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . toast ( R . string . failed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġimport File () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ GET _ CONTENT ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . type Ġ= Ġ"* /* " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġimport Launcher . launch ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġimport Launcher Ġ= Ġregister For Start Activity For Result Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . result Code Ġ!= ĠActivity . RESULT _ OK ) Ġreturn @ register For Start Activity For Result ĊĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġit . data ?. data Ġ?: Ġreturn @ register For Start Activity For Result ĊĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġrequire Context () ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠDocument File . from Single Uri ( context , Ġuri ) !!. name ĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . toast ( R . string . failed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ register For Start Activity For Result ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( viewModel . current Root . value , Ġname ) ĊĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . output Stream (). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . open InputStream ( uri )?. use Ġ{ Ġstream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstream . copy To ( os ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . toast (" Imported .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . toast ( R . string . failed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . reload () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠLong Press Fragment Ġ: ĠDialog Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġrequire Arguments (). get Serializable ( ARG _ FILE ) Ġas ĠFile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġif Ġ( file . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" Copy ", Ġ" Delete ", Ġ" Rename ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" Copy ", Ġ" Delete ", Ġ" Rename ", Ġ" Export ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAlertDialog . Builder ( require Activity ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( file . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Items ( items ) Ġ{ Ġ_, Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġparent Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent Ġ! is ĠFile Browser Fragment ) Ġreturn @ set Items ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( which ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġparent . viewModel . copy Ġ= Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġparent . delete ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġparent . rename ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġparent . export ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( file : ĠFile ): ĠLong Press Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLong Press Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Serializable ( ARG _ FILE , Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠRename Fragment Ġ: ĠDialog Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġrequire Arguments (). get Serializable ( ARG _ FILE ) Ġas ĠFile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġedit Text Ġ= ĠAppCompat EditText ( require Activity ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . setText ( file . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAlertDialog . Builder ( require Activity ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Rename ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( edit Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġparent Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent Ġ! is ĠFile Browser Fragment ) Ġreturn @ set Positive Button ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . rename ( file , ĠFile ( file . parent File , Ġedit Text . text . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( file : ĠFile ): ĠRename Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRename Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Serializable ( ARG _ FILE , Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Text Apply ( id : ĠInt , Ġtext : ĠString , Ġdata : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠID _ CREATE _ DIR Ġ-> Ġcreate Directory ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠID _ CREATE _ FILE Ġ-> Ġcreate File ( text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ FILE Ġ= Ġ" file " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠID _ CREATE _ DIR Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠID _ CREATE _ FILE Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( path : ĠFile ?): ĠFile Browser Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFile Browser Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Serializable ( ARG _ FILE , Ġpath ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ