package Ġcom . lac apr jc . ex pended . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroidx . activity . On Back Pressed Callback Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Container View Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġcom . lac apr jc . ex pended . R Ċ import Ġcom . lac apr jc . ex pended . databinding . Activity Main Binding Ċ import Ġcom . lac apr jc . ex pended . ui . account . Account Details Fragment Ċ import Ġcom . lac apr jc . ex pended . ui . account . Account ViewModel Ċ import Ġcom . lac apr jc . ex pended . ui . account . Account ViewModel . State . AD DED _ ACCOUNT Ċ import Ġcom . lac apr jc . ex pended . ui . account . Account ViewModel . State . DELETED _ ACCOUNT Ċ import Ġcom . lac apr jc . ex pended . ui . account . Account ViewModel . State . IDLE Ċ import Ġcom . lac apr jc . ex pended . ui . account . Account ViewModel . State . UPDATED _ ACCOUNT Ċ import Ġcom . lac apr jc . ex pended . ui . account With Transactions . Account With Transactions Fragment Args Ċ import Ġcom . lac apr jc . ex pended . ui . transaction . Transaction Details Fragment Ċ import Ġcom . lac apr jc . ex pended . ui . transaction . Transaction ViewModel Ċ import Ġcom . lac apr jc . ex pended . ui . transaction . Transaction ViewModel . State Ċ import Ġcom . lac apr jc . ex pended . ui . transaction . Transaction ViewModel . State . AD DED _ TRANSACTION Ċ import Ġcom . lac apr jc . ex pended . ui . transaction . Transaction ViewModel . State . DELETED _ TRANSACTION Ċ import Ġcom . lac apr jc . ex pended . ui . transaction . Transaction ViewModel . State . UPDATED _ TRANSACTION Ċ import Ġcom . lac apr jc . ex pended . util . get Associated Color Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ Ċ @ Android EntryPoint Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbottom Sheet Behavior : ĠBottom Sheet Behavior < Fragment Container View > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnav Controller : ĠNav Controller ĊĠĠĠ Ġprivate Ġval Ġaccount ViewModel : ĠAccount ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġval Ġtransaction ViewModel : ĠTransaction ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnav Host Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . find Fragment ById ( R . id . nav _ host _ fragment ) Ġas ĠNav Host Fragment ĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġnav Host Fragment . nav Controller . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Destination Changed Listener Ġ{ Ġ_, Ġdestination , Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ MainActivity , Ġwhen Ġ( destination . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ account _ with _ transactions Ġ-> ĠAccount With Transactions Fragment Args . from Bundle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). account Color Res Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . color . color Primary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġclose Bottom Sheet Callback Ġ= Ġobject Ġ: ĠOn Back Pressed Callback ( false ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle On Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet Behavior . state Ġ= ĠBottom Sheet Behavior . STATE _ HIDDEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġon Back Pressed Dispatcher . add Callback ( this @ MainActivity , Ġclose Bottom Sheet Callback ) ĊĊĠĠĠĠĠĠĠ Ġbottom Sheet Behavior Ġ= ĠBottom Sheet Behavior . from ( binding . bottom Sheet Fragment Container ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠBottom Sheet Behavior . STATE _ HIDDEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskip Collapsed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Bottom Sheet Callback ( object Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . Bottom Sheet Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon StateChanged ( bottom Sheet : ĠView , ĠnewState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose Bottom Sheet Callback . isEnabled Ġ= Ġwhen Ġ( newState ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . STATE _ COLL AP SED , ĠBottom Sheet Behavior . STATE _ HIDDEN Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! close Bottom Sheet Callback . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . set To Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction ViewModel . set To Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġclose Ġkeyboard Ġif Ġit Ġwas Ġopen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget System Service ( Input Method Manager :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. hide Soft Input From Window ( current Focus ?. window Token , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Slide ( bottom Sheet : ĠView , Ġslide Offset : ĠFloat ) Ġ{ Ġ/* Ġno Ġoverride Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġobserve Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġaccount ViewModel . get Account Type (). observe ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( nav Controller . current Destination !!. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ account _ with _ transactions , ĠR . id . navigation _ account _ details _ fragment , ĠR . id . navigation _ transaction _ details _ fragment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġit . get Associated Color () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch When Started Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . getState (). collect Ġ{ Ġaccount State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( account State Ġ!= ĠID LE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . bottom Sheet Fragment Container . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccount Details Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( account State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠID LE , ĠUP D ATED _ ACCOUNT , ĠAD DED _ ACCOUNT , ĠDE LETED _ ACCOUNT Ġ-> Ġbottom Sheet Behavior . state Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . STATE _ HIDDEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet Behavior . state Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction ViewModel . getState (). collect Ġ{ Ġtransaction State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( transaction State Ġ!= ĠState . IDLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . bottom Sheet Fragment Container . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Details Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( transaction State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState . IDLE , ĠUP D ATED _ TRANSACTION , ĠAD DED _ TRANSACTION , ĠDE LETED _ TRANSACTION Ġ-> Ġbottom Sheet Behavior . state Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . STATE _ HIDDEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet Behavior . state Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }