package Ġcom . g odd oro . youtube player Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . g odd oro . youtube player . databinding . Activity Main Binding Ċ import Ġcom . g odd oro . youtube player . presentation . Player Fragment Ċ import Ġcom . g odd oro . youtube player . presentation . Profile Fragment Ċ import Ġcom . g odd oro . youtube player . utils . debug E Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View Ċ import Ġkotlinx . android . synt hetic . main . fragment _ player .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠMainActivity :: class . java . simple Name ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Binding Ġ: ĠActivity Main Binding ĊĊĠĠĠ Ġprivate Ġval Ġfragment 1 Ġ: ĠMain Fragment Ġ= ĠMain Fragment . newInstance () ĊĠĠĠ Ġprivate Ġval Ġfragment 2 : ĠPlayer Fragment Ġ= ĠPlayer Fragment . newInstance () ĊĠĠĠ Ġprivate Ġval Ġfragment 3 Ġ: ĠProfile Fragment Ġ= ĠProfile Fragment . newInstance () ĊĠĠĠ Ġprivate Ġvar Ġwill Show Ġ: ĠFragment Ġ= Ġfragment 1 ĊĠĠĠ Ġvar Ġcur MainMenu Ġ= ĠR . id . g nb _ home ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġm Binding Ġ= ĠActivity Main Binding . inflate ( LayoutInflater . from ( this )) ĊĊĠĠĠĠĠĠĠ Ġm Binding . lifecycle Owner Ġ= Ġthis ĊĊĊĠĠĠĠĠĠĠ ĠsetContentView ( m Binding . root ) ĊĊĠĠĠĠĠĠĠ Ġsetup Bottom Navigation View () ĊĠĠĠĠĠĠĠ Ġinit Fragment () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġload Player Fragment () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ġsupport FragmentManager . find Fragment ById ( R . id . player Container ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" New ĠLoad ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . player Container , Ġfragment 2 , Ġ" 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( fragment 2 ). commit () ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug E ( TAG , Ġ" FU CK ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( support FragmentManager . find Fragment ById ( R . id . player Container )). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġas ĠPlayer Fragment ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . player Motion Layout . currentState Ġ== ĠR . id . collapsed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . player Motion Layout . set Transition ( R . id . to _ expanded ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . player Motion Layout . transition ToEnd () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Bottom Navigation View () Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġval Ġon Navigation ItemSelected Listener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Navigation View . On Navigation ItemSelected Listener Ġ{ Ġmenu Item Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġmenu Item . itemId Ġ!= ĠR . id . g nb _ video ) Ġchange Fragment ( menuItem . itemId ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( menuItem . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . g nb _ home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠíĻ Ī ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Navigation ItemSelected Listener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . g nb _ video Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ìĺ ¨ ìĹĲ ìĸ´ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Player Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Navigation ItemSelected Listener Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . g nb _ profile Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġëĭ¤ ìĭľ ë³´ ê¸° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Navigation ItemSelected Listener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Navigation ItemSelected Listener Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Binding . bottom Navigation View . setOn Navigation ItemSelected Listener ( on Navigation ItemSelected Listener ) ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Fragment ( Ġmenu Id Ġ: ĠInt Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcur MainMenu Ġ= Ġmenu Id ĊĊĠĠĠĠĠĠĠ Ġwill Show Ġ= Ġif Ġ( menu Id Ġ== ĠR . id . g nb _ profile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. hide ( fragment 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. hide ( fragment 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( will Show ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Fragment () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). add ( R . id . container , Ġfragment 1 ," 1 "). show ( fragment 1 ). commit () ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). add ( R . id . container , Ġfragment 3 ," 3 "). hide ( fragment 3 ). commit () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ( support FragmentManager . find Fragment ById ( R . id . player Container )). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠPlayer Fragment ê°Ģ ĠìĹĨ ëĭ¤ ë©´ ĠBottom Nav i ag tion ĠIndex Ġë³Ģê²½ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġcur MainMenu Ġ== ĠR . id . g nb _ home ) Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġm Binding . bottom Navigation View . selected ItemId Ġ= ĠR . id . g nb _ home ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġas ĠPlayer Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . player Motion Layout . currentState ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . expanded Ġ-> Ġit . player Motion Layout . transition To Start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . collapsed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . player Motion Layout . set Transition ( R . id . to _ removed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . player Motion Layout . transition ToEnd () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove Player Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove ( fragment 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĊĠĠĠ Ġ} ĊĊ Ċ }