package Ġcom . digital creative . app guru . presentation . ui . class room Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . activity . result . Activity Result Ċ import Ġandroidx . activity . result . contract . Activity Result Contracts Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġcom . digital creative . app guru . R Ċ import Ġcom . digital creative . app guru . data . model . Class room Ċ import Ġcom . digital creative . app guru . presentation . adapter . Class room Adapter Ċ import Ġcom . digital creative . app guru . presentation . ui . assignment . Assignment Activity Ċ import Ġcom . digital creative . app guru . presentation . ui . login . Login Activity Ċ import Ġcom . digital creative . app guru . utils . helper . loading Dialog Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġes . dm oral . toast y . Toast y Ċ import Ġkotlinx . android . synt hetic . main . activity _ class room .* Ċ import Ġkotlinx . android . synt hetic . main . toolbar .* Ċ Ċ @ Android EntryPoint Ċ class ĠClass room Activity Ġ: ĠAppCompatActivity (), ĠClass room Adapter . OnClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Class room ViewModel >() ĊĠĠĠ Ġprivate Ġval Ġloading Dialog Ġby Ġloading Dialog () ĊĠĠĠ Ġprivate Ġval Ġclass room Adapter Ġ= ĠClass room Adapter () ĊĠĠĠ Ġprivate Ġval Ġadd Class room Results Ġ= ĊĠĠĠĠĠĠĠ Ġregister For Activity Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Result Contracts . Start Activity For Result (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis :: handle Result Intent ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ class room ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Show Title Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠgetString ( R . string . app _ name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Observer s () ĊĠĠĠĠĠĠĠ ĠviewModel . getAll Class room () ĊĊĠĠĠĠĠĠĠ Ġclass room Adapter . listener Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġrv _ kelas . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġclass room Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGrid LayoutManager ( this @ Class room Activity , Ġ 2 , ĠGrid LayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfab _ class . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠAdd Class room Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Class room Results . launch ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠviewModel . getAll Class room () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ home , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== ĠR . id . menu _ logout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . logout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Login Activity () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( class room : ĠClass room ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠAssignment Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Assignment Activity . EXTRA _ CLASS ROOM , Ġclass room ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Result Intent ( result : ĠActivity Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result . result Code Ġ== ĠAdd Class room Activity . RESULT _ SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getAll Class room () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Observer s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . loading . observe ( this , ĠObserver ( this :: show Loading )) ĊĠĠĠĠĠĠĠ ĠviewModel . class room . observe ( this , ĠObserver ( this :: show Class room )) ĊĠĠĠĠĠĠĠ ĠviewModel . errorMessage . observe ( this , ĠObserver ( this :: showMessage )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Loading ( is Show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! loading Dialog . is Added ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Dialog . show Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( loading Dialog . is Added ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Dialog . close Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Class room ( class rooms : ĠList < Class room >) Ġ{ ĊĠĠĠĠĠĠĠ Ġclass room Adapter . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . class rooms Ġ= Ġclass rooms ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Message ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast y . error ( this , Ġmessage , ĠToast y . LENGTH _ LONG , Ġtrue ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Login Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠLogin Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ }