package Ġbe . hog ent . fa ith . fa ith . details . video . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġbe . hog ent . fa ith . R Ċ import Ġbe . hog ent . fa ith . databinding . Fragment View Y outube Video Binding Ċ import Ġbe . hog ent . fa ith . fa ith . models . detail . Film Detail Ċ import Ġbe . hog ent . fa ith . fa ith . models . detail . Video Detail Ċ import Ġbe . hog ent . fa ith . fa ith . vide op layer . Fa ith Video Player Ċ import Ġbe . hog ent . fa ith . fa ith . vide op layer . Fa ith Video Player Fragment Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ Ċ private Ġconst Ġval ĠV IDE O _ DETAIL Ġ= Ġ" The Ġvideo Ġto Ġbe Ġshown " Ċ Ċ class ĠView Video Fragment Ġ: ĠFa ith Video Player Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment View Y outube Video Binding ĊĠĠĠ Ġprivate Ġvar Ġnavigation : ĠView External Video Navigation ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠView Video ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠView External Video Navigation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . fragment _ view _ youtube _ video , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . current File . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfa ith Y outube Player Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFa ith Video Player ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Parent View Ġ= Ġbinding . card Y outube Player , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Button Ġ= Ġbinding . btn Play Yt Video , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpause Button Ġ= Ġbinding . btn Pause Yt Video , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentTime Field Ġ= Ġbinding . text Current ime Yt Video , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Field Ġ= Ġbinding . text Duration Yt Video , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Button Ġ= Ġbinding . btn Stop Yt Video , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseek Bar Ġ= Ġbinding . seek bar Yt Video , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfullscreen Button Ġ= Ġbinding . btn Fullscreen Yt Video ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Fa ith Player ( fa ith Y outube Player ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay New Video ( Video Detail ( file )) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Back Yt Video . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation ?. back To Event () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġload Existing Video () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Existing Video () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġdetail Ġ= Ġrequire Arguments (). get Serializable ( VIDEO _ DETAIL )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVideo Detail Ġ-> ĠviewModel . load Existing Detail ( detail ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFil m Detail Ġ-> ĠviewModel . load Existing Detail ( detail ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Invalid Ġtype Ġof Ġdetail Ġto Ġplay Ġvideo ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( film Detail : ĠFil m Detail ): ĠView Video Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠView Video Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Serializable ( VIDEO _ DETAIL , Ġfilm Detail ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( video Detail : ĠVideo Detail ): ĠView Video Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠView Video Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Serializable ( VIDEO _ DETAIL , Ġvideo Detail ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠView External Video Navigation Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġback To Event () ĊĠĠĠ Ġ} Ċ } Ċ