/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . Ġ- ĠLe bo gang ĠB ants ij ang Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . le bo gang . gens ys music . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . RequestBuilder Ċ 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 . request . RequestListener Ċ import Ġcom . bump tech . glide . request . target . Target Ċ import Ġcom . le bo gang . gens ys music . R Ċ import Ġjp . was ab eef . blur ry . Blur ry Ċ import Ġjava . io . FileNotFoundException Ċ Ċ class ĠG lide Manager Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrequest Builder : ĠRequest Builder < Drawable > ĊĠĠĠ Ġprivate Ġval Ġaudio Error Resource Ġ= ĠR . drawable . ic _ custom _ song ĊĠĠĠ Ġprivate Ġval Ġaudio Error Circular Resource Ġ= ĠR . drawable . ic _ custom _ circular _ song ĊĠĠĠ Ġprivate Ġval Ġartist Error Resource Ġ= ĠR . drawable . ic _ custom _ artist ĊĠĠĠ Ġprivate Ġval Ġalbum Error Resource Ġ= ĠR . drawable . ic _ custom _ album ĊĊĠĠĠ Ġconstructor ( root : ĠView ){ ĊĠĠĠĠĠĠĠ Ġrequest Builder = Ġinit RequestBuilder ( G lide . with ( root ). as Drawable ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġconstructor ( root : ĠAppCompatActivity ){ ĊĠĠĠĠĠĠĠ Ġrequest Builder = Ġinit RequestBuilder ( G lide . with ( root ). as Drawable ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġconstructor ( root : ĠFragment ){ ĊĠĠĠĠĠĠĠ Ġrequest Builder = Ġinit RequestBuilder ( G lide . with ( root ). as Drawable ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit RequestBuilder ( builder : ĠRequest Builder < Drawable >): ĠRequest Builder < Drawable > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġskip Cache Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . M ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskip Cache Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . apply { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskip Memory Cache ( skip Cache ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisk Cache Strategy ( Disk Cache Strategy . AUT OM AT IC ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Audio Art ( uri : ĠUri ?, Ġview : ĠImageView ): ĠG lide Manager Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Builder . load ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( audio Error Resource ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. override ( view . width , Ġview . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. waitFor Layout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clear On Detach () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Audio Art Circular Crop ( uri : ĠUri ?, Ġview : ĠImageView ): ĠG lide Manager Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Builder . load ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. circle Crop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( audio Error Circular Resource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. override ( view . width , Ġview . height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. waitFor Layout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. clear On Detach () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Online ( path : String ?, Ġview : ĠImageView ): ĠG lide Manager Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Builder . load ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( audio Error Resource ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. override ( view . width , Ġview . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. waitFor Layout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clear On Detach () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Artist Art ( uri : ĠUri ?, Ġview : ĠImageView ): ĠG lide Manager Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Builder . load ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( artist Error Resource ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. override ( view . width , Ġview . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. waitFor Layout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clear On Detach () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Album Art ( uri : ĠUri ?, Ġview : ĠImageView ): ĠG lide Manager Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Builder . load ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( album Error Resource ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. override ( view . width , Ġview . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. waitFor Layout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clear On Detach () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Bl urred ( root : ĠContext , Ġuri : ĠUri ?, Ġview : ĠImageView ): ĠG lide Manager Ġ{ ĊĠĠĠĠĠĠĠ ĠG lide . with ( root ). as Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addListener ( get Callbacks ( root , Ġview )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. submit ( view . width , Ġview . height ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Gif ( activity : ĠAppCompatActivity , Ġview : ĠImageView ){ ĊĠĠĠĠĠĠĠ Ġvar Ġskip Cache Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . M ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskip Cache Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠG lide . with ( activity ). as Gif () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. skip Memory Cache ( skip Cache ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. disk Cache Strategy ( Disk Cache Strategy . AUT OM AT IC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( R . raw . gif _ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. waitFor Layout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. clear On Detach () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Callbacks ( root : ĠContext , Ġview : ĠImageView ): ĠRequest Listener < Bitmap > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠRequest Listener < Bitmap > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( e : ĠG lide Exception ?, Ġmodel : ĠAny ?, Ġtarget : ĠTarget < Bitmap >? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setImage Drawable ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠBitmap ?, Ġmodel : ĠAny ?, Ġtarget : ĠTarget < Bitmap >? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, ĠdataSource : ĠDataSource ?, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBl ur ry . with ( root ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. radius ( 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sampling ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. async () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġfun Ġget Bitmap ( uri : ĠUri , Ġcontext : Context ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġcontext . content Resolver . open InputStream ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode Stream ( inputStream ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠFileNotFoundException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode Resource ( context . resources , ĠR . raw . default _ bg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ