package Ġcom . parse us . codec info . ui . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . content . res . AppCompat Resources Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . google . android . material . tabs . Tab Layout Ċ import Ġcom . google . android . material . tabs . Tab Layout Mediator Ċ import Ġcom . parse us . codec info . R Ċ import Ġcom . parse us . codec info . data . Info Type Ċ import Ġcom . parse us . codec info . databinding . Fragment Main Binding Ċ import Ġcom . parse us . codec info . ui . MainActivity Ċ import Ġcom . parse us . codec info . ui . adapters . Pager Adapter Ċ import Ġcom . parse us . codec info . utils . initialize S amsung Gesture Ċ Ċ @ Suppress (" unused ") Ċ class ĠMain Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Main Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Main Binding . inflate ( in flater ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġbinding . tab Layout ?. let Ġ{ Ġtabs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtabs . add On Tab Selected Listener ( object Ġ: ĠTab Layout . On Tab Selected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Selected ( tab : ĠTab Layout . Tab ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInfo Type . current Info Type Ġ= ĠInfo Type . from Int ( tab . position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Un selected ( tab : ĠTab Layout . Tab ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Re selected ( tab : ĠTab Layout . Tab ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Pager Ġ= Ġbinding . pager !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpager Adapter Ġ= ĠP ager Adapter ( child FragmentManager , Ġview Lifecycle Owner . lifecycle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠMainActivity )?. search Listeners Ġ?: Ġmutable ListOf ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . adapter Ġ= Ġpager Adapter ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTab Layout Mediator ( tabs , Ġview Pager ) Ġ{ Ġtab , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Type Ġ= ĠInfo Type . from Int ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab . content Description Ġ= ĠgetString ( info Type . tab Text Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab . icon Ġ= ĠAppCompat Resources . get Drawable ( require Context (), Ġinfo Type . tab Icon Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab . text Ġ= ĠgetString ( info Type . tab Text Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. attach () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize S amsung Gesture ( require Context (), Ġview Pager , Ġtabs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . navigation R ail ?. let Ġ{ Ġnavigation R ail Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Fragment To View Hierarchy () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation R ail . setOn ItemSelected Listener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . audio Ġ-> ĠInfo Type . current Info Type Ġ= ĠInfo Type . Audio ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . video Ġ-> ĠInfo Type . current Info Type Ġ= ĠInfo Type . Video ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . dr m Ġ-> ĠInfo Type . current Info Type Ġ= ĠInfo Type . DRM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Fragment To View Hierarchy () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Fragment To View Hierarchy () Ġ{ ĊĠĠĠĠĠĠĠ Ġparent FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . item Fragment , Ġcreate Info Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Info Fragment (): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠItem Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . put Int (" info Type ", ĠInfo Type . current Info Type . tab Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= Ġbundle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this @ Main Fragment . activity Ġas ? ĠMainActivity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Listener List Ġ= Ġ( this @ Main Fragment . activity Ġas ? ĠMainActivity ) !!. search Listeners ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexisting Fragment Ġ= Ġsearch Listener List . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġis ĠItem Fragment Ġ&& Ġ( it . require Arguments (). getInt (" info Type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ== ĠInfo Type . current Info Type . tab Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( existing Fragment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Listener List . remove ( existing Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Listener List . add ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ Ċ }