package Ġde . s me urer . file mo ver . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . View Ċ import Ġcom . ab developer . library . Multi Select Dialog Ċ import Ġcom . ab developer . library . Multi Select Model Ċ import Ġcom . github . ang ads 2 5 . file picker . model . Dialog Configs Ċ import Ġcom . github . ang ads 2 5 . file picker . model . Dialog Properties Ċ import Ġcom . github . ang ads 2 5 . file picker . view . File Picker Dialog Ċ import Ġde . s me urer . file mo ver . R Ċ import Ġde . s me urer . file mo ver . data . Mode Ċ import Ġde . s me urer . file mo ver . data . Move Config Ċ import Ġkotlinx . android . synt hetic . main . activity _ config _ detail .* Ċ import Ġorg . jetbrains . ank o . design . sn ackbar Ċ import Ġjava . io . File ĊĊ Ċ class ĠMove Config Detail Activity Ġ: ĠAbstract Base Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfrom FilePath : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġto FilePath : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġextensions : ĠList < String > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġvar Ġmode Ġ= ĠMode . copy ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ config _ detail ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmove Config Ġ= Ġintent . get Parcelable Extra < Move Config >(" move _ config ") ĊĠĠĠĠĠĠĠ Ġif Ġ( move Config Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom FilePath Ġ= Ġmove Config . from Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto FilePath Ġ= Ġmove Config . to Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextensions Ġ= Ġmove Config . extensions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmode Ġ= Ġmove Config . mode ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate UI () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Extensions Edit Clicked ( v : ĠView ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Multi Select Model >() ĊĠĠĠĠĠĠĠ Ġval Ġall Extensions Ġ= Ġresources . getString Array ( R . array . extensions ) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġextension ) Ġin Ġall Extensions . with Index ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Multi Select Model ( index , Ġextension )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠlistOf Selected Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠ Ġif Ġ( extensions . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( multi Select Model Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( extensions . contains ( multi Select Model . name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Selected . add ( multi Select Model . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMulti Select Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title (" Extensions ") Ġ// setting Ġtitle Ġfor Ġdialog ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. positive Text ( resources . getString ( android . R . string . ok )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. negative Text ( resources . getString ( android . R . string . cancel )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. pre Select IDs List ( listOf Selected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. multi Select List ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Submit ( object Ġ: ĠMulti Select Dialog . Submit Callback Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Selected ( selected Ids : ĠArrayList < Int >, Ġselected Names : ĠArrayList < String >, Ġdata String : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextensions Ġ= Ġselected Names ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancel () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). show ( support FragmentManager , Ġ" multi Select Dialog ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon To Edit Clicked ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠDialog Properties () ĊĠĠĠĠĠĠĠ Ġproperties . selection _ type Ġ= ĠDialog Configs . DIR _ SELECT ĊĠĠĠĠĠĠĠ Ġproperties . selection _ mode Ġ= ĠDialog Configs . SINGLE _ MODE ĊĠĠĠĠĠĠĠ Ġif Ġ( to FilePath Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . root Ġ= ĠFile ( to FilePath ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠFile Picker Dialog ( this , Ġproperties ) ĊĠĠĠĠĠĠĠ Ġdialog . setTitle (" Select Ġto Ġfolder ") ĊĠĠĠĠĠĠĠ Ġdialog . set Dialog Selection Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto FilePath Ġ= Ġit [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig _ detail _ value _ from . text Ġ= Ġfrom FilePath Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġconfig _ detail _ value _ to . text Ġ= Ġto FilePath Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġconfig _ detail _ value _ extensions . text Ġ= ĠText Utils . join (", Ġ", Ġextensions ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMode . copy Ġ-> Ġconfig _ detail _ value _ copy . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMode . move Ġ-> Ġconfig _ detail _ value _ move . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon From Edit Clicked ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠDialog Properties () ĊĠĠĠĠĠĠĠ Ġproperties . selection _ type Ġ= ĠDialog Configs . DIR _ SELECT ĊĠĠĠĠĠĠĠ Ġif Ġ( from FilePath Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . root Ġ= ĠFile ( from FilePath ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠFile Picker Dialog ( this , Ġproperties ) ĊĠĠĠĠĠĠĠ Ġdialog . setTitle (" Select Ġfrom Ġfolder ") ĊĠĠĠĠĠĠĠ Ġdialog . set Dialog Selection Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom FilePath Ġ= Ġit [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Save Clicked ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( from FilePath Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar ( config _ detail _ layout , Ġ" From Ġis Ġmissing ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( to FilePath Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar ( config _ detail _ layout , Ġ" To Ġis Ġmissing ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( extensions . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar ( config _ detail _ layout , Ġ" Extensions Ġare Ġmissing ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġmove Config Ġ= Ġintent . get Parcelable Extra < Move Config >(" move _ config ") ĊĠĠĠĠĠĠĠ Ġif Ġ( move Config Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove Config Ġ= ĠMove Config () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmove Config . from Path Ġ= Ġfrom FilePath ĊĠĠĠĠĠĠĠ Ġmove Config . to Path Ġ= Ġto FilePath ĊĠĠĠĠĠĠĠ Ġmove Config . extensions Ġ= Ġextensions ĊĠĠĠĠĠĠĠ Ġmove Config . mode Ġ= Ġif Ġ( config _ detail _ value _ move . isChecked ) ĠMode . move Ġelse ĠMode . copy ĊĊĠĠĠĠĠĠĠ Ġsave Move Config ( move Config ) ĊĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ } Ċ