package Ġbr . com . su am us ica . rx medi ap layer Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . constraint . Constraint Layout Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget .* Ċ import Ġbr . com . su am us ica . rx medi ap layer . android . MediaPlayer State Ċ import Ġbr . com . su am us ica . rx medi ap layer . domain . Media Bound State Ċ import Ġbr . com . su am us ica . rx medi ap layer . domain . Media Item Ċ import Ġio . reactivex . Observable Ċ Ċ class ĠMini Player View ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: ĠConstraint Layout ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠ Ġprivate Ġlateinit Ġvar Ġplay Pause Button : ĠImage Button ĊĠ Ġprivate Ġlateinit Ġvar Ġnext Button : ĠImage Button ĊĠ Ġprivate Ġlateinit Ġvar Ġprev Button : ĠImage Button ĊĊĠ Ġprivate Ġlateinit Ġvar Ġalbum Cover Image : ĠImageView ĊĠ Ġprivate Ġlateinit Ġvar Ġmusic Progress : ĠProgress Bar ĊĊĠ Ġprivate Ġlateinit Ġvar Ġname Song Text : ĠTextView ĊĠ Ġprivate Ġlateinit Ġvar Ġartist Song Name Text : ĠTextView ĊĊĠ Ġvar Ġis Playing Song : Ġ(() Ġ-> ĠObservable < Boolean >) ? Ġ= Ġnull ĊĊĠ Ġvar ĠonClick Play : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠ Ġvar ĠonClick Pause : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠ Ġvar ĠonClick Prev : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠ Ġvar ĠonClick Next : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠ Ġconstructor Ġ( context : ĠContext ) Ġ: Ġthis ( context , Ġnull , Ġ 0 ) ĊĊĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ): Ġthis ( context , Ġattrs , Ġ 0 ) ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġval Ġview Ġ= ĠView . inflate ( context , ĠR . layout . item _ player , Ġthis ) ĊĊĠĠĠ Ġbind Views ( view ) ĊĠĠĠ Ġset OnClick () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġset OnClick () Ġ{ ĊĠĠĠ Ġplay Pause Button . setOnClickListener Ġ{ Ġclick Play Pause () Ġ} ĊĠĠĠ Ġnext Button . setOnClickListener Ġ{ ĠonClick Next ?. invoke () Ġ} ĊĠĠĠ Ġprev Button . setOnClickListener Ġ{ ĠonClick Prev ?. invoke () Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġclick Play Pause () Ġ{ ĊĠĠĠ Ġis Playing Song ?. invoke ()?. subscribe ( ĊĠĠĠĠĠ Ġ{ Ġconfig Play Pause Button ( it ) Ġ}, ĊĠĠĠĠĠ Ġ{ Ġshow Error ( it ) Ġ} ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġconfig Play Pause Button ( it : ĠBoolean ?) Ġ{ ĊĠĠĠ Ġif Ġ( it Ġ!= Ġnull Ġ&& Ġit ) Ġ{ ĊĠĠĠĠĠ ĠonClick Pause ?. invoke () ĊĠĠĠĠĠ Ġconfig Pause Button () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ ĠonClick Play ?. invoke () ĊĠĠĠĠĠ Ġconfig Play Button () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow Error ( throwable : ĠThrowable ) Ġ{ ĊĠĠĠ ĠLog . e (" Demo App ĠMini Player ", Ġthrowable . message , Ġthrowable ) ĊĠĠĠ ĠToast . makeText ( context , Ġthrowable . message , ĠToast . LENGTH _ LONG ). show () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġconfig Play Button () Ġ{ ĊĠĠĠ Ġplay Pause Button . setImage Resource ( android . R . drawable . ic _ media _ play ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġconfig Pause Button () Ġ{ ĊĠĠĠ Ġplay Pause Button . setImage Resource ( android . R . drawable . ic _ media _ pause ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġbind Views ( view : ĠView ?) Ġ{ ĊĠĠĠ Ġview ?. let Ġ{ ĊĠĠĠĠĠ Ġplay Pause Button Ġ= Ġview . findViewById ( R . id . play _ pause _ player _ image button ) ĊĠĠĠĠĠ Ġnext Button Ġ= Ġview . findViewById ( R . id . next _ player _ image button ) ĊĠĠĠĠĠ Ġprev Button Ġ= Ġview . findViewById ( R . id . prev _ player _ image button ) ĊĊĠĠĠĠĠ Ġalbum Cover Image Ġ= Ġview . findViewById ( R . id . album _ image _ player _ image view ) ĊĠĠĠĠĠ Ġmusic Progress Ġ= Ġview . findViewById ( R . id . current _ progress _ player _ progressbar ) ĊĊĠĠĠĠĠ Ġname Song Text Ġ= Ġview . findViewById ( R . id . name _ song _ player _ text view ) ĊĠĠĠĠĠ Ġartist Song Name Text Ġ= Ġview . findViewById ( R . id . artist _ name _ player _ text view ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġbind ( state : ĠMedia Bound State ?) Ġ{ ĊĠĠĠ Ġstate ?. let Ġ{ ĊĠĠĠĠĠ Ġname Song Text . text Ġ= Ġit . item ?. name Ġ?: Ġ"" ĊĠĠĠĠĠ Ġartist Song Name Text . text Ġ= Ġit . item ?. author Ġ?: Ġ"" Ċ Ċ // ĠĠĠĠĠ ĠPic asso . with ( context ) Ċ // ĠĠĠĠĠĠĠĠĠ Ġ. load ( it . item . cover Url ) Ċ // ĠĠĠĠĠĠĠĠĠ Ġ. fit () Ċ // ĠĠĠĠĠĠĠĠĠ Ġ. into ( album Cover Image ) ĊĊĠĠĠĠĠ Ġmusic Progress . progress Ġ= Ġit . progress ?. current ?. toInt () Ġ?: Ġ 0 ĊĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠ Ġname Song Text . text Ġ= Ġ"" ĊĠĠĠĠĠ Ġartist Song Name Text . text Ġ= Ġ"" ĊĠĠĠĠĠ Ġmusic Progress . progress Ġ= Ġ 0 ĊĠĠĠĠĠ Ġalbum Cover Image . setImage Resource (- 1 ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }