package Ġeu . car aus . apps fl ast fm . ui . main Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . support . annotation . Id Res Ċ Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġandroid . support . v 4 . view . View Compat Ċ import Ġandroid . widget . ImageView Ċ import Ġeu . car aus . apps fl ast fm . services . youtube . Y outube Player Service Ċ import Ġeu . car aus . apps fl ast fm . ui . base . Base Activity Ċ import Ġeu . car aus . apps fl ast fm . ui . base . Base Fragment Ċ import Ġeu . car aus . apps fl ast fm . ui . main . album details . Album Details Fragment Ċ import Ġeu . car aus . apps fl ast fm . ui . main . albums . Album s Fragment Ċ import Ġeu . car aus . apps fl ast fm . ui . main . albums . Album s Transition Ċ import Ġeu . car aus . apps fl ast fm . ui . search . Search Activity Ċ import Ġeu . car aus . apps fl ast fm . ui . search . Search Activity . Companion . SEARCH _ TERM ĊĊ Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ /** Ċ Ġ* Ġ ĠThis Ġclass Ġis Ġused Ġto Ġperform Ġthe Ġactual Ġnavigation , Ċ Ġ* Ġ Ġeither Ġby Ġstarting Ġactivities Ġor Ġloading Ġspecific Ġfragment , Ċ Ġ* Ġ Ġit Ġlives Ġas Ġlong Ġas Ġthe ĠMainActivity Ġlives Ċ Ġ* Ċ Ġ*/ Ċ Ċ class ĠMainActivity Screen Loader ( activity : ĠBase Activity , Ġ@ param : Id Res Ġ@ field : Id Res Ġprivate Ġval Ġcontainer Id : ĠInt ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġref Context : ĠWeak Reference < Context > Ġ= ĠWeak Reference ( Ġactivity Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġfragment Manager : ĠFragment Manager ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ( context () Ġas ĠBase Activity ). support FragmentManager ĊĊĠĠĠ Ġprivate Ġfun Ġcontext (): ĠContext ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġref Context . get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgo Back () Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( Ġfragment Manager . back Stack Entry Count Ġ<= Ġ 1 Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager . pop Back Stack Immediate () ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To SearchResult ( Ġsearch Term Ġ: ĠString Ġ){ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Ġcontext (), ĠSearch Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( ĠSEARCH _ TERM , Ġsearch Term Ġ) ĊĠĠĠĠĠĠĠ Ġcontext ()?. startActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To Saved Album s (){ ĊĠĠĠĠĠĠĠ Ġload Fragment ( ĠAlbum s Fragment . newInstance ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To Album Details ( Ġmb id Ġ: ĠString Ġ){ ĊĠĠĠĠĠĠĠ Ġload Fragment ( ĠAlbum Details Fragment . newInstance ( Ġmb id Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To Album Details ( Ġmb id Ġ: ĠString , ĠimageUrl : ĠString , Ġ Ġview Ġ: ĠImageView Ġ){ ĊĠĠĠĠĠĠĠ Ġload Fragment With Shared Element ( ĠAlbum Details Fragment . newInstance ( Ġmb id Ġ, ĠimageUrl , ĠView Compat . get Transition Name ( view )), Ġview Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Fragment ( Ġfragment : ĠBase Fragment Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Fragment Ġ= Ġfragment Manager . find Fragment ById ( Ġcontainer Id Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġfragment Manager . beginTransaction () ĊĊĠĠĠĠĠĠĠ Ġcurrent Fragment ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . hide ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtransaction . set Re ordering Allowed ( Ġtrue Ġ) ĊĠĠĠĠĠĠĠ Ġtransaction . add ( Ġcontainer Id , Ġfragment ) ĊĠĠĠĠĠĠĠ Ġtransaction . addTo Back Stack ( Ġnull Ġ) ĊĠĠĠĠĠĠĠ Ġtransaction . commit () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Fragment With Shared Element ( Ġfragment : ĠBase Fragment , Ġshared Element Ġ: ĠImageView Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Fragment Ġ= Ġfragment Manager . find Fragment ById ( Ġcontainer Id Ġ) ĊĊĠĠĠĠĠĠĠ Ġfragment . shared Element Enter Transition Ġ Ġ= ĠAlbum s Transition () ĊĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġfragment Manager . beginTransaction () ĊĊĠĠĠĠĠĠĠ Ġcurrent Fragment ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . hide ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtransaction . set Re ordering Allowed ( Ġtrue Ġ) ĊĠĠĠĠĠĠĠ Ġtransaction . add Shared Element ( Ġshared Element Ġ, ĠView Compat . get Transition Name ( Ġshared Element Ġ)) ĊĠĠĠĠĠĠĠ Ġtransaction . add ( Ġcontainer Id , Ġfragment ) ĊĠĠĠĠĠĠĠ Ġtransaction . addTo Back Stack ( Ġnull Ġ) ĊĠĠĠĠĠĠĠ Ġtransaction . commit () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Music Service (){ ĊĠĠĠĠĠĠĠ Ġcontext ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . start Service ( ĠIntent ( it , Y outube Player Service :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop Music Service (){ ĊĠĠĠĠĠĠĠ Ġcontext ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . stop Service ( ĠIntent ( it , Y outube Player Service :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }