package Ġv ip . qs os . file picker Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġkotlinx . android . synt hetic . main . main _ activity .* Ċ import Ġv ip . qs os . file picker . lib . File Picker Ċ import Ġv ip . qs os . file picker . lib . On T Listener Ċ import Ġv ip . qs os . file picker . lib . Sources Ċ Ċ /** Ċ Ġ* Ġ@ author Ġ: Ġ åįİ æ¸ħ æĿ ¾ Ċ Ġ*/ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Model : ĠMain ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . main _ activity ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Model . m Data . value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Model . m Data . value Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfile _ list . layout Manager Ġ= ĠGrid LayoutManager ( this , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġfile _ list . adapter Ġ= ĠFile Adapter ( this , Ġm Model . m Data . value !! , Ġobject Ġ: ĠOn T Listener < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġback ( t : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Model . m Data . value !!. remove At ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile _ list . adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfile _ camera . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Picker . with ( this . support FragmentManager ). take Image ( Sources . DEVICE , Ġlistener Ġ= Ġobject Ġ: ĠOn T Listener < Uri > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġback ( t : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Model . m Data . value !!. add ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile _ list . adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfile _ album . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Picker . with ( this . support FragmentManager ). take Image ( Sources . ONE , Ġlistener Ġ= Ġobject Ġ: ĠOn T Listener < Uri > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġback ( t : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Model . m Data . value !!. add ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile _ list . adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfile _ video . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Picker . with ( this . support FragmentManager ). take Video ( Sources . DEVICE , Ġlistener Ġ= Ġobject Ġ: ĠOn T Listener < Uri > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġback ( t : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Model . m Data . value !!. add ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile _ list . adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfile _ video 2 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Picker . with ( this . support FragmentManager ). take Video ( Sources . ONE , Ġlistener Ġ= Ġobject Ġ: ĠOn T Listener < Uri > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġback ( t : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Model . m Data . value !!. add ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile _ list . adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfile _ audio . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Picker . with ( this . support FragmentManager ). take Audio ( Sources . DEVICE , Ġlistener Ġ= Ġobject Ġ: ĠOn T Listener < Uri > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġback ( t : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Model . m Data . value !!. add ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile _ list . adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfile _ audio 2 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Picker . with ( this . support FragmentManager ). take Audio ( Sources . ONE , Ġlistener Ġ= Ġobject Ġ: ĠOn T Listener < Uri > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġback ( t : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Model . m Data . value !!. add ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile _ list . adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfile _ file . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Picker . with ( this . support FragmentManager ). take File ( listener Ġ= Ġobject Ġ: ĠOn T Listener < Uri > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġback ( t : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Model . m Data . value !!. add ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile _ list . adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfile _ file 2 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Picker . with ( this . support FragmentManager ). take Files ( listener Ġ= Ġobject Ġ: ĠOn T Listener < List < Uri >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġback ( t : ĠList < Uri >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Model . m Data . value !!. addAll ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile _ list . adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Model . m Data . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile _ list . adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ }