package Ġcom . app b usters . ro bin pc . const itution of ind ia . ui . home . fragments . home _ fragment Ċ Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . St agger ed Grid LayoutManager Ċ Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . R Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . data . model . Category Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . data . model . Tag Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . di . component . fragment . D agger Home Fragment Component Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . di . module . fragment . Home Fragment Module Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . ui . base . Base Fragment Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . ui . home . fragments . home _ fragment . adapter . Categories ListAdapter Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . ui . home . fragments . home _ fragment . adapter . Tag ListAdapter Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . ui . intermediate . Middle Activity Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . ui . listing . category _ listing . Category Listing Activity Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . ui . listing . tag _ children . Tag Children Activity Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . utils . Constants . Companion . AM END MENTS _ END _ INDEX Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . utils . Constants . Companion . AM END MENTS _ START _ INDEX Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . utils . Constants . Companion . CATEGORY _ AM END MENTS Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . utils . Constants . Companion . CATEGORY _ PART S Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . utils . Constants . Companion . CATEGORY _ PRE AM BLE Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . utils . Constants . Companion . CATEGORY _ SCHED ULES Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . utils . Constants . Companion . NUMBER _ OF _ ELEMENT S Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . utils . Constants . Companion . NUMBER _ OF _ PART S Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . utils . Constants . Companion . NUMBER _ OF _ TAGS Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . utils . Constants . Companion . PRE AM BLE _ INDEX Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . utils . Constants . Companion . SCHED ULES _ END _ INDEX Ċ import Ġcom . app b usters . ro bin pc . const itution of ind ia . utils . Constants . Companion . SCHED ULES _ START _ INDEX Ċ import Ġkotlinx . android . synt hetic . main . fragment _ home .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠHome Fragment Ġ: ĠBase Fragment (), ĊĠĠĠĠĠĠĠ ĠCategories ListAdapter . Category ClickListener , ĊĠĠĠĠĠĠĠ ĠTag ListAdapter . On Tag ClickListener Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġgrid LayoutManager : ĠGrid LayoutManager ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġst agger ed Grid LayoutManager : ĠSt agger ed Grid LayoutManager ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġcategories Adapter : ĠCategories ListAdapter ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġtags Adapter : ĠTag ListAdapter ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠHome Fragment ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġon Sync Complete Listener : ĠOn Sync Complete Listener ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠonLoad Complete Listener : ĠOn Load Complete Listener ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG _ SPAN _ COUNT Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠC ATEG ORY _ SPAN _ COUNT Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠHome Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Component () ĊĠĠĠĠĠĠĠ Ġset Observer s () ĊĠĠĠĠĠĠĠ Ġset Categories Recycler () ĊĠĠĠĠĠĠĠ Ġset Tags Adapter () ĊĠĠĠĠĠĠĠ Ġfetch Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Observer s () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Categories List Observer () ĊĠĠĠĠĠĠĠ Ġset Tags Observer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Categories List Observer () Ġ{ ĊĠĠĠĠĠĠĠ Ġif (:: viewModel . isInitialized ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . categories List LiveData . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategories Adapter . submit List ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Tags Observer () Ġ{ ĊĠĠĠĠĠĠĠ Ġif (:: viewModel . isInitialized ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getAll Tags (). observe ( this , ĠObserver Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! it . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it . size Ġ== ĠNUMBER _ OF _ TAGS ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags Adapter . submit List ( viewModel . get Submit Tag List ( it )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (:: on Load Complete Listener . isInitialized ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad Complete Listener . on Load Complete () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Parts Observer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load Tags FromJson () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Parts Observer () Ġ{ ĊĠĠĠĠĠĠĠ Ġif (:: viewModel . isInitialized ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getAll Parts (). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load Parts FromJson () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it . size Ġ!= ĠNUMBER _ OF _ PART S ) ĠviewModel . load Parts FromJson () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġset Elements Observer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Elements Observer () Ġ{ ĊĠĠĠĠĠĠĠ Ġif (:: viewModel . isInitialized ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getAll Elements (). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load Elements FromJson () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it . size Ġ!= ĠNUMBER _ OF _ ELEMENT S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load Elements FromJson () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Sync Complete Listener . on Sync Completed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġif (:: viewModel . isInitialized ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . inflate Categories List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Categories Recycler () Ġ{ ĊĠĠĠĠĠĠĠ Ġcategories Recycler . adapter Ġ= Ġcategories Adapter ĊĠĠĠĠĠĠĠ Ġcategories Recycler . layout Manager Ġ= Ġgrid LayoutManager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Tags Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġtags Recycler . adapter Ġ= Ġtags Adapter ĊĠĠĠĠĠĠĠ Ġtags Recycler . layout Manager Ġ= Ġst agger ed Grid LayoutManager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Category Clicked ( category : ĠCategory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcategory Name Ġ= Ġcategory . name ĊĠĠĠĠĠĠĠ Ġvar Ġstart : ĠInt Ġ= ĠP REAM BLE _ INDEX ĊĠĠĠĠĠĠĠ Ġvar Ġend : ĠInt Ġ= ĠP REAM BLE _ INDEX ĊĊĠĠĠĠĠĠĠ Ġwhen ( category Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC ATEG ORY _ PART S Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Middle Activity ( category Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC ATEG ORY _ PRE AM BLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠP REAM BLE _ INDEX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= ĠP REAM BLE _ INDEX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC ATEG ORY _ SCHED ULES Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠS CH ED ULES _ START _ INDEX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= ĠS CH ED ULES _ END _ INDEX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC ATEG ORY _ AM END MENTS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠAM END MENTS _ START _ INDEX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= ĠAM END MENTS _ END _ INDEX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġopen Category List Activity ( category Name , Ġstart , Ġend ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Middle Activity ( category Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Middle Activity . new Intent ( it , Ġcategory Name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Activity Transition ( R . anim . slide _ in _ right , ĠR . anim . no _ animation ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Category List Activity ( category Name : ĠString , Ġstart : ĠInt , Ġend : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCategory Listing Activity . new Intent ( it , Ġcategory Name , Ġcategory Name , Ġstart , Ġend ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Activity Transition ( R . anim . slide _ in _ right , ĠR . anim . no _ animation ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Tag Clicked ( tag : ĠTag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Tag Children Activity . new Intent ( it , Ġtag )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Activity Transition ( R . anim . slide _ in _ right , ĠR . anim . no _ animation ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Component () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomponent Ġ= ĠD agger Home Fragment Component . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. const itution App Component ( getApp Component ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. home Fragment Module ( getModule ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent . inject Home Fragment ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , ĠviewModel Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Home Fragment ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Module (): ĠHome Fragment Module Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHome Fragment Module ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ATEG ORY _ SPAN _ COUNT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG _ SPAN _ COUNT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset OnLoad Complete Listener ( on Load Complete Listener : ĠOn Load Complete Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Load Complete Listener Ġ= ĠonLoad Complete Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Sync Complete Listener ( on Sync Complete Listener : ĠOn Sync Complete Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Sync Complete Listener Ġ= Ġon Sync Complete Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Load Complete Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonLoad Complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Sync Complete Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Sync Completed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Res Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ home ĊĠĠĠ Ġ} Ċ } Ċ