package Ġcom . example . music player . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġandroidx . palette . graphics . Palette Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . load . DataSource Ċ import Ġcom . bump tech . glide . load . engine . Disk Cache Strategy Ċ import Ġcom . bump tech . glide . load . engine . G lide Exception Ċ import Ġcom . bump tech . glide . load . resource . drawable . Drawable Transition Options Ċ import Ġcom . bump tech . glide . request . RequestListener Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . bump tech . glide . request . target . Custom Target Ċ import Ġcom . bump tech . glide . request . target . Target Ċ import Ġcom . example . music player . R Ċ import Ġcom . example . music player . music . Album Ċ import Ġcom . example . music player . music . BaseModel Ċ import Ġcom . example . music player . music . Track ĊĊ Ċ @ Binding Adapter (" album Art ") Ċ fun ĠImageView . bind Album Art ( track : ĠTrack ?) Ġ{ ĊĠĠĠ Ġload ( track ?. album , ĠR . drawable . track _ placeholder ) Ċ } Ċ Ċ @ Binding Adapter (" album Art ") Ċ fun ĠImageView . bind Album Art ( album : ĠAlbum ?) Ġ{ ĊĠĠĠ Ġload ( album , ĠR . drawable . album _ placeholder ) Ċ } Ċ Ċ @ Binding Adapter (" album Art And Color ") Ċ fun ĠImageView . bind Album Art AndGet Color ( track : ĠTrack ?) Ġ{ ĊĠĠĠ Ġload AndGet V ibr ant Color ( track ?. album , ĠR . drawable . track _ placeholder ) Ċ } Ċ Ċ @ Binding Adapter (" album Art And Color ") Ċ fun ĠImageView . bind Album Art AndGet Color ( album : ĠAlbum ?) Ġ{ ĊĠĠĠ Ġload AndGet V ibr ant Color ( album , ĠR . drawable . album _ placeholder ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠBase Model > ĠImageView . load ( ĊĠĠĠ Ġdata : ĠT ?, ĊĠĠĠ Ġ@ Drawable Res Ġplaceholder Drawable : ĠInt , Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġreq Opt Ġ= ĠRequest Options . fit Center Transform (). disk Cache Strategy ( Disk Cache Strategy . NONE ). override ( this . width , Ġthis . height ) ĊĊĠĠĠ Ġif ( data Ġis ĠAlbum ){ ĊĠĠĠĠĠĠĠ ĠG lide . with ( context ). load ( data . cover Uri ). transition ( Drawable Transition Options (). cross Fade ()). apply ( req Opt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( placeholder Drawable ). into ( this ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠBase Model > ĠImageView . load AndGet V ibr ant Color ( ĊĠĠĠ Ġdata : ĠT ?, ĊĠĠĠ Ġ@ Drawable Res Ġplaceholder Drawable : ĠInt , Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġreq Opt Ġ= ĠRequest Options . fit Center Transform (). fit Center (). disk Cache Strategy ( Disk Cache Strategy . NONE ). override ( 2 0 1 5 , Ġ 2 0 1 5 ) ĊĠĠĠ Ġval Ġpreferences Manager Ġ= ĠPreferences Manager . getInstance () ĊĊĠĠĠ Ġif ( data Ġis ĠAlbum ){ ĊĠĠĠĠĠĠĠ ĠG lide . with ( context ). as Bitmap (). load ( data . cover Uri ). apply ( req Opt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( placeholder Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. listener ( object Ġ: ĠRequest Listener < Bitmap >{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( e : ĠG lide Exception ?, Ġmodel : ĠAny ?, Ġtarget : ĠTarget < Bitmap > ?, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences Manager . gradient Accent Color Ġ= ĠResources Compat . getColor ( context . resources , ĠR . color . accent , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠBitmap ?, Ġmodel : ĠAny ?, Ġtarget : ĠTarget < Bitmap > ?, ĠdataSource : ĠDataSource ?, Ġis First Resource : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resource Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= ĠPalette . from ( resource ). generate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( p . vi br ant Sw atch Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences Manager . gradient Accent Color Ġ= Ġp . get V ibr ant Color ( Resources Compat . getColor ( context . resources , ĠR . color . accent , Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences Manager . gradient Accent Color Ġ= Ġp . get Mut ed Color ( Resources Compat . getColor ( context . resources , ĠR . color . accent , Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). into ( this ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ fun Ġload Bitmap ( context : ĠContext , Ġtrack : ĠTrack , Ġon Finished : Ġ( Bitmap ?) Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠ ĠG lide . with ( context ). as Bitmap (). load ( track . album . cover Uri ) ĊĠĠĠĠĠĠĠ Ġ. error ( on Finished ( Bitmap Factory . decode Resource ( context . resources , ĠR . drawable . track _ placeholder ))) ĊĠĠĠĠĠĠĠ Ġ. disk Cache Strategy ( Disk Cache Strategy . RESOURCE ). placeholder ( android . R . color . transparent ). into ( object Ġ: ĠCustom Target < Bitmap > (){ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠBitmap , Ġtransition : Ġcom . bump tech . glide . request . transition . Transition < in ĠBitmap > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished ( resource ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Cle ared ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ }