package Ġio . case y . mus ik cube . remote . ui . activity Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġcom . plus cub ed . recycler fast scroll . Recycler Fast Scroller Ċ import Ġio . case y . mus ik cube . remote . R Ċ import Ġio . case y . mus ik cube . remote . playback . Metadata Ċ import Ġio . case y . mus ik cube . remote . ui . extension .* Ċ import Ġio . case y . mus ik cube . remote . ui . fragment . Transport Fragment Ċ import Ġio . case y . mus ik cube . remote . ui . view . Empty ListView Ċ import Ġio . case y . mus ik cube . remote . util . De bounc er Ċ import Ġio . case y . mus ik cube . remote . util . Navigation Ċ import Ġio . case y . mus ik cube . remote . util . Strings Ċ import Ġio . case y . mus ik cube . remote . websocket . Messages Ċ import Ġio . case y . mus ik cube . remote . websocket . Socket Message Ċ import Ġio . case y . mus ik cube . remote . websocket . WebSocket Service Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġio . case y . mus ik cube . remote . websocket . WebSocket Service . State Ġas ĠSocket State Ċ Ċ class ĠCategory Browse Activity Ġ: ĠWebSocket Activity Base (), ĠFilter able Ġ{ ĊĠĠĠ Ġinterface ĠDeep Link Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠTR ACK S Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠAL BU MS Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġadapter : ĠAdapter Ġ= ĠAdapter () ĊĠĠĠ Ġprivate Ġvar Ġdeep Link Type : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġlast Filter : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcategory : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtransport : ĠTransport Fragment ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġempty View : ĠEmpty ListView ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġcategory Ġ= Ġintent . getString Extra ( EXTRA _ CATEGORY ) ĊĠĠĠĠĠĠĠ Ġdeep Link Type Ġ= Ġintent . getInt Extra ( EXTRA _ DE EP _ LINK _ TYPE , ĠDeep Link . AL BU MS ) ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠAdapter () ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . recycler _ view _ activity ) ĊĠĠĠĠĠĠĠ ĠsetTitle ( category Title String Id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfast Scroller Ġ= ĠfindViewById < Recycler Fast Scroller >( R . id . fast _ sc roller ) ĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= ĠfindViewById < RecyclerView >( R . id . recycler _ view ) ĊĠĠĠĠĠĠĠ Ġsetup Default RecyclerView ( re cyclerView , Ġfast Scroller , Ġadapter ) ĊĊĠĠĠĠĠĠĠ Ġempty View Ġ= ĠfindViewById < Empty ListView >( R . id . empty _ list _ view ) ĊĠĠĠĠĠĠĠ Ġempty View . capability Ġ= ĠEmpty ListView . Capability . Online Only ĊĠĠĠĠĠĠĠ Ġempty View . empty Message Ġ= ĠgetString ( R . string . empty _ no _ items _ format , ĠgetString ( category TypeString Id )) ĊĠĠĠĠĠĠĠ Ġempty View . alternate View Ġ= Ġre cyclerView ĊĊĠĠĠĠĠĠĠ Ġenable Up Navigation () ĊĊĠĠĠĠĠĠĠ Ġtransport Ġ= Ġadd Transport Fragment ( object : ĠTransport Fragment . On Model Changed Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChanged ( fragment : ĠTransport Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Messages . Category . PLAY LIST S Ġ!= Ġcategory ) Ġ{ Ġ/* Ġble h Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Search Menu ( menu , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠNavigation . Response Code . PLAY BACK _ STARTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Navigation . Response Code . PLAY BACK _ STARTED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Filter ( filter : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . last Filter Ġ= Ġfilter ĊĠĠĠĠĠĠĠ Ġthis . filter De bounc er . call () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġweb Socket ServiceClient : ĠWebSocket Service . Client ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsocket Client ĊĊĠĠĠ Ġoverride Ġval Ġplayback Service EventListener : Ġ(() Ġ-> ĠUnit )? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġcategory TypeString Id : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠC ATEG ORY _ NAME _ TO _ EMPTY _ TYPE [ category ] Ġ?: ĠR . string . unknown _ value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcategory Title String Id : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠC ATEG ORY _ NAME _ TO _ TITLE [ category ] Ġ?: ĠR . string . unknown _ value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġre query () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠSocket Message . Builder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request ( Messages . Request . Query Category ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( Messages . Key . CATEGORY , Ġcategory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( Messages . Key . FILTER , Ġlast Filter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġget WebSocket Service (). send ( request , Ġthis . socket Client ) Ġ{ Ġresponse : ĠSocket Message Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġresponse . get JsonArray Option ( Messages . Key . DATA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull Ġ&& Ġdata . length () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . setModel ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty View . update ( get WebSocket Service (). state , Ġadapter . item Count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfilter De bounc er Ġ= Ġobject Ġ: ĠDe bounc er < String >( 3 5 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon De bounc ed ( last : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Paused ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre query () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsocket Client Ġ= Ġobject Ġ: ĠWebSocket Service . Client Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon StateChanged ( newState : ĠWebSocket Service . State , Ġold State : ĠWebSocket Service . State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( newState Ġ=== ĠWebSocket Service . State . Connected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter De bounc er . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre query () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( newState Ġ=== ĠWebSocket Service . State . Disconnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty View . update ( newState , Ġadapter . item Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message Received ( message : ĠSocket Message ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Invalid Password () Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġon ItemClickListener Ġ= Ġ{ Ġview : ĠView Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġview . tag Ġas ĠJSONObject ĊĠĠĠĠĠĠĠ Ġif Ġ( deep Link Type Ġ== ĠDeep Link . AL BU MS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Album s ( entry ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Tracks ( entry ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġon Item Long ClickListener Ġ= Ġ{ Ġview : ĠView Ġ-> ĊĠĠĠĠĠĠĠ Ġ/* Ġif Ġwe Ġdeep Ġlink Ġto Ġalbum s Ġby Ġdefault , Ġlong Ġpress Ġwill Ġget Ġto ĊĠĠĠĠĠĠĠ Ġtracks . Ġif Ġwe Ġdeep Ġlink Ġto Ġtracks , Ġjust Ġignore Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( deep Link Type Ġ== ĠDeep Link . AL BU MS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Tracks ( view . tag Ġas ĠJSONObject ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To Album s ( entry : ĠJSONObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠAlbum Browse Activity . getStart Intent ( this , Ġcategory , Ġentry ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠNavigation . Request Code . AL BU M _ BROW SE _ ACTIVITY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To Tracks ( entry : ĠJSONObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcategory Id Ġ= Ġentry . opt Long ( Messages . Key . ID ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġentry . opt String ( Messages . Key . VALUE ) ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠTrack List Activity . getStart Intent ( this , Ġcategory , Ġcategory Id , Ġvalue ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠNavigation . Request Code . CATEGORY _ TRACK S _ ACTIVITY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠViewHolder Ġinternal Ġconstructor ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtitle : ĠTextView Ġ= ĠitemView . findViewById < TextView >( R . id . title ) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . findViewById < View >( R . id . subtitle ). visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġbind ( entry : ĠJSONObject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Id Ġ= Ġentry . opt Long ( Messages . Key . ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġplaying Id : ĠLong Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Key Ġ= ĠC ATEG ORY _ NAME _ TO _ ID [ category ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Key Ġ!= Ġnull Ġ&& Ġid Key . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaying Id Ġ= Ġtransport . playback Service ?. get Track Long ( id Key , Ġ- 1 ) Ġ?: Ġ- 1 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtitle Color Ġ= ĠR . color . theme _ foreground ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( playing Id Ġ!= Ġ- 1 L Ġ&& Ġentry Id Ġ== Ġplaying Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Color Ġ= ĠR . color . theme _ green ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġnote Ġopt String Ġonly Ġdoes Ġa Ġnull Ġcheck ! Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġentry . opt String ( Messages . Key . VALUE , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġif Ġ( Strings . empty ( value )) ĠgetString ( R . string . unknown _ value ) Ġelse Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . setTextColor ( getColor Compat ( title Color )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . tag Ġ= Ġentry ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠAdapter Ġ: ĠRecyclerView . Adapter < ViewHolder >() Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmodel : ĠJSONArray Ġ= ĠJSONArray () ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġset Model ( model : ĠJSONArray ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . model Ġ= Ġmodel Ġ?: ĠJSONArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . simple _ list _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener ( on ItemClickListener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOn Long ClickListener ( on Item Long ClickListener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( model . opt JSONObject ( position )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmodel . length () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEX TRA _ CATEGORY Ġ= Ġ" extra _ category " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEX TRA _ DE EP _ LINK _ TYPE Ġ= Ġ" extra _ deep _ link _ type " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠC ATEG ORY _ NAME _ TO _ ID : ĠMap < String , ĠString > Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . AL BU M _ AR TI ST Ġto ĠMetadata . Track . AL BU M _ AR TI ST _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . GEN RE Ġto ĠMetadata . Track . GEN RE _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . AR TI ST Ġto ĠMetadata . Track . AR TI ST _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . AL BU M Ġto ĠMetadata . Track . AL BU M _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . PLAY LIST S Ġto ĠMetadata . Track . AL BU M _ ID ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠC ATEG ORY _ NAME _ TO _ TITLE : ĠMap < String , ĠInt > Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . AL BU M _ AR TI ST Ġto ĠR . string . artists _ title , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . GEN RE Ġto ĠR . string . genres _ title , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . AR TI ST Ġto ĠR . string . artists _ title , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . AL BU M Ġto ĠR . string . albums _ title , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . PLAY LIST S Ġto ĠR . string . play lists _ title ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠC ATEG ORY _ NAME _ TO _ EMPTY _ TYPE : ĠMap < String , ĠInt > Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . AL BU M _ AR TI ST Ġto ĠR . string . browse _ type _ artists , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . GEN RE Ġto ĠR . string . browse _ type _ genres , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . AR TI ST Ġto ĠR . string . browse _ type _ artists , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . AL BU M Ġto ĠR . string . browse _ type _ albums , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . Category . PLAY LIST S Ġto ĠR . string . browse _ type _ play lists ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Start Intent ( context : ĠContext , Ġcategory : ĠString ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIntent ( context , ĠCategory Browse Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putExtra ( EXTRA _ CATEGORY , Ġcategory ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Start Intent ( context : ĠContext , Ġcategory : ĠString , Ġdeep Link Type : ĠInt ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIntent ( context , ĠCategory Browse Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putExtra ( EXTRA _ CATEGORY , Ġcategory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putExtra ( EXTRA _ DE EP _ LINK _ TYPE , Ġdeep Link Type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ