package Ġcom . kn ight . kotlin . module _ main Ċ Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . alibaba . android . ar outer . facade . annotation . Route Ċ import Ġcom . alibaba . android . ar outer . launcher . AR outer Ċ import Ġcom . kn ight . kotlin . library _ base . activity . Base Activity Ċ import Ġcom . kn ight . kotlin . library _ base . annotation . EventBus Register Ċ import Ġcom . kn ight . kotlin . library _ base . event . Message Event Ċ import Ġcom . kn ight . kotlin . library _ base . route . Route Activity Ċ import Ġcom . kn ight . kotlin . library _ base . route . Route Fragment Ċ import Ġcom . kn ight . kotlin . library _ base . util . Activity Manager Utils Ċ import Ġcom . kn ight . kotlin . library _ base . util . Cache Utils Ċ import Ġcom . kn ight . kotlin . library _ base . util . Color Utils Ċ import Ġcom . kn ight . kotlin . library _ util . View Init Utils Ċ import Ġcom . kn ight . kotlin . library _ util . toast Ċ import Ġcom . kn ight . kotlin . module _ main . databinding . MainActivity Binding Ċ import Ġcom . kn ight . kotlin . module _ main . vm . Main ViewModel Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġorg . green robot . event bus . Thread Mode Ċ Ċ @ EventBus Register Ċ @ Android EntryPoint Ċ @ Route ( path Ġ= ĠRoute Activity . Main . MainActivity ) Ċ class ĠMainActivity Ġ: ĠBase Activity < MainActivity Binding , Main ViewModel >() Ġ{ ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMainActivity çļĦ ViewModel ĠéĢļè¿ĩ H ilt èĩªåĬ¨ æ³¨ åħ¥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġm ViewModel : Main ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġvar Ġm Exit App Time : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġval Ġfragments : Mutable List < Fragment > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġoverride Ġfun ĠMainActivity Binding . init View () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Fragments () ĊĠĠĠĠĠĠĠ ĠView Init Utils . set ViewPager 2 Init ( this @ MainActivity , main View pager , fragments , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Off screen Page Limit Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis User Input Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbtn Nav . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem TextColor Ġ= ĠColor Utils . create Color State List ( Cache Utils . get Theme Color (), Color Utils . convertTo Color Int (" a 6 a 6 a 6 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Icon Tint List Ġ= ĠColor Utils . create Color State List ( Cache Utils . get Theme Color (), Color Utils . convertTo Color Int (" a 6 a 6 a 6 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Navigation ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . home Fragment Ġ-> Ġmain View pager . setCurrent Item ( 0 , false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . square Fragment Ġ-> Ġmain View pager . setCurrent Item ( 1 , false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . project Fragment Ġ-> Ġmain View pager . setCurrent Item ( 2 , false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigate Fragment Ġ-> Ġmain View pager . setCurrent Item ( 3 , false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . mine Fragment Ġ-> Ġmain View pager . setCurrent Item ( 4 , false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Observer () Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Request Data () Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġre Load Data () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Theme Color ( is Dark Mode : ĠBoolean ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Fragments () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragments . add ( AR outer . getInstance (). build ( Route Fragment . Home . Home Fragment ). navigation () Ġ Ġas ĠFragment ) ĊĠĠĠĠĠĠĠ Ġfragments . add ( AR outer . getInstance (). build ( Route Fragment . Square . Square Fragment ). navigation () Ġ Ġas ĠFragment ) ĊĠĠĠĠĠĠĠ Ġfragments . add ( AR outer . getInstance (). build ( Route Fragment . Project . Project Fragment ). navigation () Ġ Ġas ĠFragment ) ĊĠĠĠĠĠĠĠ Ġfragments . add ( AR outer . getInstance (). build ( Route Fragment . Navigate . Navigate Home Fragment ). navigation () Ġ Ġas ĠFragment ) ĊĠĠĠĠĠĠĠ Ġfragments . add ( AR outer . getInstance (). build ( Route Fragment . Mine . Mine Fragment ). navigation () Ġ Ġas ĠFragment ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon KeyDown ( keyCode : Int , event : ĠKeyEvent ): Boolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( keyCode Ġ== ĠKeyEvent . KEYCODE _ BACK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( System . currentTimeMillis () Ġ- Ġm Exit App Time Ġ<= Ġ 2 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Manager Utils . getInstance ()?. finish All Activity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . exit ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Exit App Time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . main _ exit _ tip ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on KeyDown ( keyCode , Ġevent ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon Message Event ( event : ĠMessage Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Event . MessageType . Re create Main Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Transaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragments . get ( 0 ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Transaction . remove ( fragments . get ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragments . get ( 1 ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Transaction . remove ( fragments . get ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragments . get ( 2 ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Transaction . remove ( fragments . get ( 2 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragments . get ( 3 ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Transaction . remove ( fragments . get ( 3 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Transaction . commit Allow ing State Loss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecreate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠ ĠMessage Event . MessageType . Eye Mode Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Or Close Eye ( event . getBoolean ()) ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġfragments . clear () ĊĊĠĠĠ Ġ} Ċ }