package Ġcom . m iz uk ikk . ml td . main Ċ Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . Window Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Options Compat Ċ import Ġandroidx . core . view . Gravity Compat Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġcom . m iz uk ikk . ml td . About Activity Ċ import Ġcom . m iz uk ikk . ml td . R Ċ import Ġcom . m iz uk ikk . ml td . databinding . Activity Main Binding Ċ import Ġcom . m iz uk ikk . ml td . main . event . Event Detail Fragment Ċ import Ġcom . m iz uk ikk . ml td . main . event . Event List Fragment Ċ import Ġcom . m iz uk ikk . ml td . main . event . model . Event Detail Data Ċ import Ġcom . m iz uk ikk . ml td . main . id ol . Id ol Fragment Ċ import Ġcom . m iz uk ikk . ml td . main . id ol . Id ol List Fragment Ċ import Ġcom . m iz uk ikk . ml td . main . id ol . service . Update Id ol Service Ċ import Ġcom . m iz uk ikk . ml td . main . view model . Main ViewModel Ċ import Ġcom . m iz uk ikk . ml td . picture . Picture Activity Ċ import Ġcom . m iz uk ikk . ml td . room . query . Id ol Item Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠInteractive MainActivity Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠMain ViewModel ĊĠĠĠ Ġprivate Ġvar Ġtoast : ĠToast ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠMainActivity :: class . java . simple Name ĊĠĠĠ Ġprivate Ġval Ġprogress Dialog Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠProgress Dialog ( this ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Message ( getString ( R . string . dialog _ progress )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġid ol List Fragment Ġby Ġlazy Ġ{ ĠId ol List Fragment . newInstance () Ġ} ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġinit ViewModel () ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġset Listener () ĊĠĠĠĠĠĠĠ Ġset Home Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Main ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ ĠviewModel . select Lang Dialog Event . observe ( this , ĠObserver Ġ{ Ġlang Array Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . dialog _ title _ card _ version )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAdapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray Adapter < String >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . layout . simple _ list _ item _ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . text 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlang Array ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselect Lang Ġ= Ġlang Array [ which ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . functions . version . tv Content . text Ġ= Ġselect Lang ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . save Select Lang ( select Lang )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreload Card Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . current Event Event . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Event Detail Fragment ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . progress Event . observe ( this , ĠObserver Ġ{ Ġshow Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ProgressBar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss ProgressBar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . toast Event . observe ( this , ĠObserver Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( message ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreload Card Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġcurrent Fragment ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġis ĠId ol List Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . reload Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnav Click Ġ= ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . drawable Layout . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . about Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠAbout Activity . new Intent ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . card Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . version Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . show Select Lang Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . update Check Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Id ol Service . start ( this , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . event List Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent List Fragment . newInstance (). beginTransaction Stack () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . current Event Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getCurrent Event () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġbinding . functions . ll Items . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . functions . ll Items . getChild At ( i ). setOnClickListener ( nav Click ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Lock Drawable () ĊĠĠĠĠĠĠĠ Ġinit Navigation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Lock Drawable () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . drawable Layout . set Drawer Lock Mode ( Drawer Layout . LOCK _ MODE _ LOCK ED _ CLOSED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Navigation () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åį¡ çīĩ ĊĠĠĠĠĠĠĠ Ġbinding . functions . card . tv Function . text Ġ= ĠgetString ( R . string . nav _ main _ card ) ĊĠĠĠĠĠĠĠ Ġbinding . functions . card . iv Icon . setImage Resource ( R . drawable . ic _ people ) ĊĊĠĠĠĠĠĠĠ Ġbinding . functions . version . iv Icon . setImage Resource ( R . drawable . ic _ version ) ĊĠĠĠĠĠĠĠ Ġbinding . functions . version . tv Function . text Ġ= ĠgetString ( R . string . nav _ main _ version ) ĊĠĠĠĠĠĠĠ Ġbinding . functions . version . tv Content . text Ġ= ĠviewModel . get Select Card Lang () ĊĊĠĠĠĠĠĠĠ Ġbinding . functions . update Check . iv Icon . setImage Resource ( R . drawable . ic _ update ) ĊĠĠĠĠĠĠĠ Ġbinding . functions . update Check . tv Function . text Ġ= ĠgetString ( R . string . nav _ main _ check _ update ) ĊĠĠĠĠĠĠĠ Ġ// æ´» åĭķ ĊĠĠĠĠĠĠĠ Ġbinding . functions . event List . iv Icon . setImage Resource ( R . drawable . ic _ event _ rank ) ĊĠĠĠĠĠĠĠ Ġbinding . functions . event List . tv Function . text Ġ= ĠgetString ( R . string . nav _ main _ event ) ĊĊĠĠĠĠĠĠĠ Ġbinding . functions . current Event . iv Icon . setImage Resource ( R . drawable . ic _ event _ rank ) ĊĠĠĠĠĠĠĠ Ġbinding . functions . current Event . tv Function . text Ġ= ĠgetString ( R . string . nav _ main _ current _ event ) ĊĠĠĠĠĠĠĠ Ġ// è¨Ńå®ļ ĊĠĠĠĠĠĠĠ Ġbinding . functions . about . iv Icon . setImage Resource ( R . drawable . ic _ setting ) ĊĠĠĠĠĠĠĠ Ġbinding . functions . about . tv Function . text Ġ= ĠgetString ( R . string . nav _ main _ about ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Shared Element Parameter () Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow . request Feature ( Window . FEATURE _ ACTIVITY _ TRANS ITION S ) ĊĠĠĠĠĠĠĠ Ġwindow . shared Elements Use Overlay Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcurrent Fragment ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . container ) ĊĊĊĠĠĠ Ġfun ĠFragment . beg ine Transaction () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . is Added . not ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . container , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠFragment . beginTransaction Stack () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . is Added . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Fragment ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . hide ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . container , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( this . java Class . simple Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Custom Animations ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . anim . fade _ in , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . anim . fade _ out ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Home Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġid ol List Fragment . beg ine Transaction () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetId ol Fragment ( share View : ĠView , Ġid ol Item : ĠId ol Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠId ol Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. newInstance ( id ol Item ) ĊĠĠĠĠĠĠĠ Ġval Ġtrans Name Ġ= ĠView Compat . get Transition Name ( share View ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . container , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Shared Element ( share View , Ġtrans Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( fragment . java Class . simple Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Event Detail Fragment ( data : ĠEvent Detail Data ) Ġ{ ĊĠĠĠĠĠĠĠ ĠEvent Detail Fragment . newInstance ( data ). beginTransaction Stack () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Photo ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshare View : ĠView , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Uri : ĠUri , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata : ĠId ol Item ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Name Ġ= ĠgetString ( R . string . activity _ picture _ transition _ name ) ĊĠĠĠĠĠĠĠ Ġval Ġopt Ġ= ĠActivity Options Compat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. make Scene Transition Animation ( this , Ġshare View , Ġtransaction Name ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( Picture Activity . new Intent ( this , Ġphoto Uri , Ġdata ), Ġopt . to Bundle ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Nav Menu () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . drawable Layout . open Drawer ( Gravity Compat . START ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow ProgressBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Dialog . is Showing . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdismiss ProgressBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Dialog . is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Toast ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoast ?. cancel () ĊĠĠĠĠĠĠĠ Ġtoast Ġ= ĠToast . makeText ( this , Ġmessage , ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠ Ġtoast ?. show () ĊĠĠĠ Ġ} Ċ } Ċ