package Ġhu . m rol csi . mu z ik . ui . album Details Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . v 4 . media . Media Browser Compat . Media Item Ċ import Ġandroid . support . v 4 . media . Media Description Compat Ċ import Ġandroid . support . v 4 . media . Media Metadata Compat Ċ import Ġandroidx . databinding . library . base Adapters . BR Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġhu . m rol csi . mu z ik . R Ċ import Ġhu . m rol csi . mu z ik . data . manager . media . Media Manager Ċ import Ġhu . m rol csi . mu z ik . data . model . media . album Ċ import Ġhu . m rol csi . mu z ik . data . model . media . album Art Uri Ċ import Ġhu . m rol csi . mu z ik . data . model . media . album Year Ċ import Ġhu . m rol csi . mu z ik . data . model . media . artist Ċ import Ġhu . m rol csi . mu z ik . data . model . media . disc Number Ċ import Ġhu . m rol csi . mu z ik . data . model . media . id Ċ import Ġhu . m rol csi . mu z ik . data . model . media . media Id Ċ import Ġhu . m rol csi . mu z ik . data . model . media . numberOf S ongs Ċ import Ġhu . m rol csi . mu z ik . data . model . media . title Key Ċ import Ġhu . m rol csi . mu z ik . data . model . media . track Number Ċ import Ġhu . m rol csi . mu z ik . data . model . theme . Theme Ċ import Ġhu . m rol csi . mu z ik . data . repository . media . Media Repository Ċ import Ġhu . m rol csi . mu z ik . ui . albums . Disc Number Item Ċ import Ġhu . m rol csi . mu z ik . ui . base . Data Binding ViewModel Ċ import Ġhu . m rol csi . mu z ik . ui . base . The med ViewModel Ċ import Ġhu . m rol csi . mu z ik . ui . base . The med ViewModel Impl Ċ import Ġhu . m rol csi . mu z ik . ui . common . Execute Once Nav Command Source Ċ import Ġhu . m rol csi . mu z ik . ui . common . Execute Once Ui Command Source Ċ import Ġhu . m rol csi . mu z ik . ui . common . Observable Impl Ċ import Ġhu . m rol csi . mu z ik . ui . common . glide . G lide App Ċ import Ġhu . m rol csi . mu z ik . ui . common . glide . on Resource Ready Ċ import Ġhu . m rol csi . mu z ik . ui . songs . as Song Items Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . rx kotlin . Observable s Ċ import Ġio . reactivex . rx kotlin . subscribe By Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġorg . k oin . core . K oin Component Ċ import Ġorg . k oin . core . inject Ċ Ċ class ĠAlbum Details ViewModel Impl Ġconstructor ( ĊĠ Ġobservable : ĠObservable Impl , ĊĠ Ġui Command Source : ĠExecute Once Ui Command Source , ĊĠ Ġnav Command Source : ĠExecute Once Nav Command Source , ĊĠ Ġthe med ViewModel : ĠThe med ViewModel Impl Ċ ) Ġ: ĠData Binding ViewModel ( observable , Ġui Command Source , Ġnav Command Source ), ĊĠ ĠThe med ViewModel Ġby Ġthe med ViewModel , ĊĠ ĠAlbum Details ViewModel , ĊĠ ĠK oin Component Ġ{ ĊĊĠ Ġprivate Ġval Ġcontext : ĠContext Ġby Ġinject () ĊĠ Ġprivate Ġval Ġmedia Manager : ĠMedia Manager Ġby Ġinject () ĊĠ Ġprivate Ġval Ġmedia Repo : ĠMedia Repository Ġby Ġinject () ĊĊĠ Ġoverride Ġval Ġprogress Visible : ĠBoolean Ġ= Ġfalse ĊĠ Ġoverride Ġval ĠlistView Visible : ĠBoolean Ġ= Ġtrue ĊĠ Ġoverride Ġval Ġempty View Visible : ĠBoolean Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġitems Ġ= ĠMutable LiveData < List < Album Detail Item >>() ĊĊĠ Ġoverride Ġvar Ġalbum Title Text : ĠString ? Ġby Ġbound String OrNull ( BR . album Title Text ) ĊĠ Ġoverride Ġvar Ġartist Text : ĠString ? Ġby Ġbound String OrNull ( BR . artist Text ) ĊĠ Ġoverride Ġvar Ġyear Text : ĠString ? Ġby Ġbound String OrNull ( BR . year Text ) ĊĠ Ġoverride Ġvar ĠnumberOf S ongs Text : ĠString ? Ġby Ġbound String OrNull ( BR . numberOf S ongs Text ) ĊĊĠ Ġoverride Ġfun Ġset Argument ( album Id : ĠLong ) Ġ{ ĊĠĠĠ Ġalbum Subject . onNext ( album Id ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġalbum Subject Ġ= ĠBehavior Subject . create < Long >() ĊĊĠ Ġoverride Ġvar Ġalbum Item Ġ= ĠMutable LiveData < Media Item >() ĊĊĠ Ġoverride Ġval Ġalbum Theme Ġ= ĠMutable LiveData < Theme >() ĊĊĠ Ġoverride Ġfun Ġon Song Click ( song Item : ĠMedia Item , Ġposition : ĠInt ) Ġ{ ĊĠĠĠ Ġalbum Item . value ?. description ?. artist ?. let Ġ{ Ġmedia Manager . set Queue Title ( it ) Ġ} ĊĠĠĠ Ġsong Descriptions ?. let Ġ{ Ġmedia Manager . play All ( it , Ġposition ) Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Shuffle All Click () Ġ{ ĊĠĠĠ Ġalbum Item . value ?. description ?. artist ?. let Ġ{ Ġmedia Manager . set Queue Title ( it ) Ġ} ĊĠĠĠ Ġsong Descriptions ?. let Ġ{ Ġmedia Manager . play All Sh uffled ( it ) Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġsong Descriptions : ĠList < Media Description Compat >? Ġ= Ġnull ĊĊĠ Ġinit Ġ{ ĊĠĠĠ ĠObservable s . combine Latest ( ĊĠĠĠĠĠ Ġalbum Subject ĊĠĠĠĠĠĠĠ Ġ. switch Map Ġ{ Ġmedia Repo . get Album ById ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġupdate Header Text ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. switch Map Ġ{ Ġmedia Repo . getS ongs From Album ( it . description . id ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġsongs Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġsongs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . description . title Key Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . description . disc Number Ġ* Ġ 1 0 0 0 Ġ+ Ġit . description . track Number Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ Ġmedia Manager . media Metadata ĊĠĠĠĠĠĠĠ Ġ. distinct Until Changed Ġ{ Ġt : ĠMedia Metadata Compat Ġ-> Ġt . media Id Ġ} ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . media Id Ġ!= Ġnull Ġ} ĊĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ. do On Next Ġ{ Ġ( songs , Ġ_) Ġ-> Ġsong Descriptions Ġ= Ġsongs . filter Ġ{ Ġit . is Play able Ġ}. map Ġ{ Ġit . description Ġ} Ġ} ĊĠĠĠĠĠ Ġ. map Ġ{ Ġ( songs , Ġmetadata ) Ġ-> ĊĠĠĠĠĠĠĠ Ġsongs ĊĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġit . description . disc Number Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġ( disc Number , Ġsongs ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsong Items Ġ= Ġsongs . as Song Items ( context , Ġmetadata . media Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( disc Number Ġ> Ġ 0 ) ĠlistOf ( Disc Number Item ( disc Number , Ġdisc Number . toString ())) Ġ+ Ġsong Items ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġsong Items ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠ Ġ. subscribe By ( ĊĠĠĠĠĠĠĠ Ġon Next Ġ= Ġ{ Ġitems . value Ġ= Ġit Ġ}, ĊĠĠĠĠĠĠĠ ĠonError Ġ= Ġ{ Ġshow Error ( this , Ġit ) Ġ} ĊĠĠĠĠĠ Ġ). dispose On Cle ared () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate Header Text ( album Item : ĠMedia Item ) Ġ{ ĊĠĠĠ Ġthis . album Item . value Ġ= Ġalbum Item ĊĊĠĠĠ Ġalbum Title Text Ġ= Ġalbum Item . description . album ĊĠĠĠ Ġartist Text Ġ= Ġalbum Item . description . artist ĊĠĠĠ Ġyear Text Ġ= Ġalbum Item . description . album Year ĊĊĠĠĠ Ġval ĠnumberOf Song Ġ= Ġalbum Item . description . numberOf S ongs ĊĠĠĠ ĠnumberOf S ongs Text Ġ= Ġcontext . resources . get Quantity String ( R . plurals . artists _ numberOf S ongs , ĠnumberOf Song , ĠnumberOf Song ) ĊĊĠĠĠ ĠG lide App . with ( context ) ĊĠĠĠĠĠ Ġ. as Bitmap () ĊĠĠĠĠĠ Ġ. load ( album Item . description . album Art Uri ) ĊĠĠĠĠĠ Ġ. on Resource Ready Ġ{ Ġalbum Art Ġ-> Ġtheme Service . create Theme ( album Art ). subscribe By Ġ{ Ġalbum Theme . value Ġ= Ġit Ġ} Ġ} ĊĠĠĠĠĠ Ġ. preload () ĊĠ Ġ} Ċ }