package Ġcom . ray . s rt _ smi _ converter . view Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . ray . s rt _ smi _ converter . view . adapter . Cust ome d Adapter Ċ import Ġcom . ray . s rt _ smi _ converter . view . interfaces . RecyclerView OnClickListener Ċ import Ġcom . ray . s rt _ smi _ converter . view model . Shared ViewModel Ċ import Ġjava . io . File Ċ import Ġcom . ray . s rt _ smi _ converter . view model . File Handler Ċ import Ġkotlinx . android . synt hetic . main . fragment _ list __ of __ files .* Ċ Ċ class ĠList of Files : ĠFragment (), ĠRecyclerView OnClickListener , View . OnClickListener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġlocal Base Dir : ĠString Ġ= ĠEnvironment . getRoot Directory (). parent File . path Ġ+ Ġ Ġ"/ mnt / sd card " ĊĠĠĠ Ġprivate Ġval Ġoption _ fragment Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġfun ĠonClick ( p 0 : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( p 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload _ folder Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Handler . common Folder Call () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate List ( File ( local Base Dir +"/ Download ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovie _ folder Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Handler . common Folder Call () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate List ( File ( local Base Dir +"/ Movies ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstarting _ folder -> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Handler . common Folder Call () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate List ( m Shared VM . getBase Dir ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar ĠTAG : String Ġ= Ġthis . java Class . simple Name . toString () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Shared VM : Shared ViewModel ĊĠĠĠ Ġprotected Ġvar Ġm Previous Selected Path : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ// RecyclerView ĠRelated Ġvariables ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm View : View ĊĠĠĠ Ġ// private Ġlateinit Ġvar Ġre cyclerView : RecyclerView ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmy Adapter : ĠC ust ome d Adapter ĊĠĠĠ Ġval Ġresource Ġ= Ġcom . ray . s rt _ smi _ converter . R . layout . each _ file ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlist : Mutable List < File > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" List of Files Ġclass Ġ- Ġ ĠonCreate View () Ġis Ġcalled ") ĊĠĠĠĠĠĠĠ Ġm View Ġ= Ġinflater . inflate ( com . ray . s rt _ smi _ converter . R . layout . fragment _ list __ of __ files , container , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠĠĠĠĠ Ġreturn Ġm View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit (){ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Init Ġshared VM ") ĊĠĠĠĠĠĠĠ Ġm Shared VM Ġ= ĠViewModel Providers . of ( this . activity !! ). get ( Shared ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġif ( m Shared VM . getFile List (). value Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Shared VM . set Starting List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// m Shared VM . set File ( File ( local Base Dir )) ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġif ( list Ġ== Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= Ġget ListOf Directory () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ// re cyclerView Ġ= Ġm View . findViewById ( com . ray . s rt _ smi _ converter . R . id . re cyclerView ) ĊĠĠĠĠĠĠĠ Ġmy Adapter Ġ= ĠC ust ome d Adapter ( context , Ġresource , Ġm Shared VM . getFile List (). value Ġas ĠMutable List < File >) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// re cyclerView . add On Item Touch Listener ( object : ĠRecyclerView Touch Listener ( context , Ġre cyclerView , Ġthis ){ }) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġmy Adapter ĊĠĠĠĠĠĠĠ Ġmy Adapter . setOn ItemClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĊĠĠĠĠĠĠĠ Ġ// common _ folder Ġset Ġon Ġclick Ġlistener ĊĠĠĠĠĠĠĠ Ġdownload _ folder . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġmovie _ folder . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġstarting _ folder . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġ// movie _ folder . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġget ListOf Directory (): ĠMutable List < File >{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Shared VM . get ListOf Starting Directory () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// from Ġinterface ĊĠĠĠ Ġoverride Ġfun Ġon ItemClickListener ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" List of Files Ġclass Ġ- Ġ Ġon ItemClickListener () Ġis Ġcalled ") ĊĊĠĠĠĠĠĠĠ Ġval Ġselected File Ġ= Ġm Shared VM . getFile List (). value !!. get ( position )// ( list [ position ]) ĊĊĠĠĠĠĠĠĠ Ġif ( selected File . isDirectory Ġ&& Ġselected File . can Read ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate List ( selected File ) ĊĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Selected File Ġextension Ġis Ġ${ selected File . extension }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( selected File . extension Ġ= =" smi "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity ," Desired ĠFile Ġis Ġclicked Ġ${ selected File . name }" Ġ, ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Shared VM . setSelected File ( selected File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" selected Ġfile Ġis Ġ${ m Shared VM . getSelected File (). value ?. name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Shared VM . change Fragment ( option _ fragment Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// var ĠList Of All Texts : ĠMutable List < Based Subtitle Data > Ġ= Ġcontext ?. let Ġ{ ĠSub title Handler . create S RT ( selected File , Ġit ) Ġ} !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Other Ġthan Ġsm i , Ġit Ġis Ġnot Ġsupported ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate List ( file : File ){ ĊĠĠĠĠĠĠĠ Ġm Shared VM . set File ( file ) ĊĠĠĠĠĠĠĠ Ġmy Adapter . update List ( m Shared VM . getFile List (). value Ġas ĠMutable List < File >) ĊĠĠĠĠĠĠĠ Ġmy Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġlist Ġ= Ġm Shared VM . updated List ( file ) ĊĠĠĠĠĠĠĠ Ġmy Adapter . update List ( m Shared VM . updated List ( file )) ĊĠĠĠĠĠĠĠ Ġmy Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ} Ċ } Ċ