package Ġcom . upload care . android . widget . adapter Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . upload care . android . widget . R Ċ import Ġcom . upload care . android . widget . controller . FileType Ċ import Ġcom . upload care . android . widget . data . Action Ċ import Ġcom . upload care . android . widget . data . Thing Ċ Ċ @ SuppressWarnings (" We aker Access ") Ċ abstract Ġclass ĠFiles Adapter < VH Ġ: ĠBase ViewHolder < Thing >>( private Ġval ĠfileType : ĠFile Type ) ĊĠĠĠ Ġ: ĠRecyclerView . Adapter < VH >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdata List Ġ= Ġmutable ListOf < Thing >() ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠV H , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġdata List [ position ] ĊĠĠĠĠĠĠĠ Ġholder . bind ( data ) ĊĠĠĠĠĠĠĠ Ġholder . get Binding (). execute Pending Bindings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetData (): ĠMutable List < Thing > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata List . clear () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdate Ġexisting ĠDataset . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Items ( data : ĠList < Thing > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠ Ġadd Items ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Items ( data : ĠList < Thing > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( fileType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Type . any Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . addAll ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Type . video , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Type . image Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( thing Ġin Ġdata ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thing . object Type . equals ( Thing . TYPE _ AL BU M , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġthing . object Type . equals ( Thing . TYPE _ FOLDER , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( thing ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Inserted ( data List . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( thing . mime type ?. startsWith ( fileType . name , Ġtrue ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( thing ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Inserted ( data List . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ abstract Ġclass ĠBase ViewHolder < in ĠM >( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġbind ( data : ĠM ) ĊĊĠĠĠ Ġabstract Ġfun Ġget Binding (): ĠView Data Binding ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġget Place Holder Resource ( thing : ĠThing ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġplace Holder Resource Ġ= ĠR . drawable . uc w _ ic _ file _ grey _ 4 8 dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thing . object Type . equals ( Thing . TYPE _ AL BU M , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġthing . object Type . equals ( Thing . TYPE _ FOLDER , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace Holder Resource Ġ= ĠR . drawable . uc w _ ic _ folder _ grey _ 4 8 dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( thing . object Type . equals ( Thing . TYPE _ PH OTO , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( thing . thumbnail Ġ!= Ġnull Ġ&& Ġ( thing . thumbnail . contains (" http ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġthing . thumbnail . contains (" https ", Ġtrue ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ( thing . action ?. action Ġ== ĠAction . ACTION _ SELECT _ FILE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġthing . action . url ?. matches ( Regex . from Literal (" .* (( \\. jpg )| ( \\. png )) .* ")) Ġ== Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace Holder Resource Ġ= ĠR . drawable . uc w _ ic _ photo _ grey _ 4 8 dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġplace Holder Resource ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Linear Place Holder Resource ( thing : ĠThing ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġplace Holder Resource Ġ= ĠR . drawable . uc w _ ic _ file _ grey _ 2 4 dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thing . object Type . equals ( Thing . TYPE _ AL BU M , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġthing . object Type . equals ( Thing . TYPE _ FOLDER , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace Holder Resource Ġ= ĠR . drawable . uc w _ ic _ folder _ grey _ 2 4 dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( thing . object Type . equals ( Thing . TYPE _ PH OTO , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( thing . thumbnail Ġ!= Ġnull Ġ&& Ġ( thing . thumbnail . contains (" http ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġthing . thumbnail . contains (" https ", Ġtrue ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ( thing . action ?. action Ġ== ĠAction . ACTION _ SELECT _ FILE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġthing . action . url ?. matches ( Regex . from Literal (" .* (( \\. jpg )| ( \\. png )) .* ")) Ġ== Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace Holder Resource Ġ= ĠR . drawable . uc w _ ic _ photo _ grey _ 2 4 dp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġplace Holder Resource ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }