package Ġp 2 pd ops . d ops ender . selectors . ui . media Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġjava . io . File Ċ Ċ class ĠMedia Selector ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġall Selection Change : ĠMutable LiveData < Int > Ġ= ĠMutable LiveData ( 1 ) ĊĊĠĠĠ Ġval Ġselected Files : ĠMutable LiveData < ArrayList < File >> Ġ= ĠMutable LiveData ( ArrayList ()) ĊĊĠĠĠ Ġfun Ġselect File ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Files . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . contains ( file )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ let Ġit ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ Ġselected Files . post Value ( this ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġselect Files ( files : ĠList < File >) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Files . value !!. removeAll ( files ) ĊĠĠĠĠĠĠĠ Ġselected Files . value !!. addAll ( files ) ĊĠĠĠĠĠĠĠ Ġselected Files . post Value ( selected Files . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġde Select File ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Files . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . contains ( file )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ let Ġit ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Files . post Value ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġde Select Files ( files : ĠList < File >) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Files . value !!. removeAll ( files ) ĊĠĠĠĠĠĠĠ Ġselected Files . post Value ( selected Files . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġall Selected Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġall Selection Change . post Value ( all Selection Change . value ?. plus ( 1 )) ĊĠĠĠ Ġ} Ċ Ċ }