package Ġcom . sample . music x . fragments Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . lifecycle . observe Ċ import Ġcom . sample . music x . adapters . Playlist Picker Adapter Ċ import Ġcom . sample . music x . databinding . Dialog Playlist Picker Binding Ċ import Ġcom . sample . music x . handlers . Playlist Picker Handler Ċ import Ġcom . sample . music x . model . Playlist Ċ import Ġcom . sample . music x . model . Playlist Builder Ċ import Ġcom . sample . music x . utilities . Injector Utils Ċ import Ġcom . sample . music x . view models . Playlist Picker ViewModel Ċ Ċ class ĠPlaylist Picker Dialog Fragment Ġ: ĠDialog Fragment (), ĠPlaylist Picker Handler Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠDialog Playlist Picker Binding ĊĊĠĠĠ Ġprivate Ġvar Ġtrack Id : ĠString ? Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠPlaylist Picker ViewModel Ġby Ġactivity ViewModels Ġ{ ĊĠĠĠĠĠĠĠ ĠInject or Utils . provide Playlist Picker ViewModel Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). application , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Id !! ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġtrack Id Ġ= Ġarguments ?. getString ( TRACK _ ID _ ARG ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġactivity ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġ= ĠDialog Playlist Picker Binding . inflate ( require Activity (). layout Inflater ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Pick Ġa Ġplaylist ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( binding . root ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠIllegalStateException (" Activity Ġcannot Ġbe Ġnull ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ ĠPlaylist Picker Adapter ( this ). also Ġ{ Ġadapter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . playlist Picker RecyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscribe Ui ( adapter , Ġbinding ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpick ( view : ĠView , Ġplaylist : ĠPlaylist ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrack Id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . addTo Playlist Builder ( Playlist Builder ( playlist . id , Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe Ui ( adapter : ĠPlaylist Picker Adapter , Ġbinding : ĠDialog Playlist Picker Binding ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . play lists . observe ( require Activity ()) Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( list ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTR ACK _ ID _ ARG Ġ= Ġ" TRACK _ ID " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( track Id : ĠString ): ĠPlaylist Picker Dialog Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPlaylist Picker Dialog Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= Ġbundle Of ( TRACK _ ID _ ARG Ġto Ġtrack Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }