package Ġcom . ars yl k . mam mon sm ite . views Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Base Adapter Ċ import Ġandroid . widget . ListView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . ars yl k . mam mon sm ite . utils . Utils Ċ import Ġorg . w 3 c . dom . Text Ċ import Ġjava . io . File Ċ Ċ class ĠPick FileDialog ( context : ĠContext , Ġvar Ġdirectory : ĠFile ) Ġ: ĠAlertDialog . Builder ( context ) Ġ{ ĊĠĠĠ Ġvar Ġdialog : ĠAlertDialog ĊĠĠĠ Ġvar ĠlistView Ġ= ĠListView ( context ) ĊĠĠĠ Ġvar Ġview Adapter Ġ= ĠFiles Adapter ( context , Ġdirectory ) ĊĠĠĠ Ġvar Ġcallback : ĠUtils . On Post Execute < File >? Ġ= Ġnull ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġview Adapter . callback Ġ= Ġfield ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheader View Ġ= ĠLayoutInflater . from ( context ). inflate ( android . R . layout . simple _ list _ item _ 1 , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġheader View . findViewById < TextView >( android . R . id . text 1 )?. let Ġ{ Ġit . text Ġ= Ġ".. " Ġ} ĊĠĠĠĠĠĠĠ Ġheader View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( view Adapter . directory . parent File . list Files () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Adapter . directory Ġ= Ġview Adapter . directory . parent File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Adapter . set Directory () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠlistView . add Header View ( header View ) ĊĠĠĠĠĠĠĠ ĠlistView . adapter Ġ= Ġview Adapter ĊĠĠĠĠĠĠĠ Ġview Adapter . callback Ġ= Ġcallback ĊĊĠĠĠĠĠĠĠ Ġset View ( list View ) ĊĠĠĠĠĠĠĠ Ġset Negative Button (" Close ") Ġ{ Ġdialog , Ġ_ Ġ-> Ġdialog . dismiss () Ġ} ĊĠĠĠĠĠĠĠ Ġset Cancel able ( false ) ĊĊĠĠĠĠĠĠĠ Ġdialog Ġ= Ġcreate () ĊĠĠĠĠĠĠĠ Ġview Adapter . set Dialog ( dialog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow (): ĠAlertDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠFiles Adapter ( var Ġcontext : ĠContext , Ġvar Ġdirectory : ĠFile ) Ġ: ĠBase Adapter () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġalert Dialog : ĠAlertDialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdirectory Content : ĠArrayList < File > Ġ= ĠArrayList () ĊĠĠĠ Ġvar Ġcallback : ĠUtils . On Post Execute < File >? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Directory () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Directory () Ġ{ ĊĠĠĠĠĠĠĠ Ġdirectory Content Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġdirectory Content . addAll ( directory . list Files (). filter Ġ{ Ġit . isDirectory Ġ}. sorted By Ġ{ Ġit . name . toLowerCase () Ġ}) ĊĠĠĠĠĠĠĠ Ġdirectory Content . addAll ( directory . list Files (). filter Ġ{ Ġit . isFile Ġ}. sorted By Ġ{ Ġit . name . toLowerCase () Ġ}) ĊĠĠĠĠĠĠĠ Ġalert Dialog ?. run Ġ{ ĠsetTitle ( directory . absolute Path ) Ġ} ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Dialog ( dialog : ĠAlertDialog ) Ġ{ ĊĠĠĠĠĠĠĠ Ġalert Dialog Ġ= Ġdialog ĊĠĠĠĠĠĠĠ Ġalert Dialog ?. run Ġ{ ĠsetTitle ( directory . absolute Path ) Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdirectory Content . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠFile ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdirectory Content . get OrNull ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget View ( position : ĠInt , ĠconvertView : ĠView ?, Ġparent : ĠViewGroup ?): ĠView Ġ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview : ĠView ? ĊĠĠĠĠĠĠĠ Ġif ( convert View Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= ĠLayoutInflater . from ( context ). inflate ( android . R . layout . simple _ list _ item _ 1 , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= ĠconvertView ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= Ġview ?. findViewById < TextView >( android . R . id . text 1 ) ĊĠĠĠĠĠĠĠ ĠtextView ?. tag Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ ĠtextView ?. text Ġ= ĠgetItem ( position )?. name ĊĠĠĠĠĠĠĠ ĠtextView ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġit . tag Ġas ĠFile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( file . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory Ġ= Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Directory () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( file . isFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. on Post Execute ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalert Dialog ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview Ġas ĠView ĊĠĠĠ Ġ} Ċ Ċ } Ċ