package Ġcy . ag or ise . bits y bit shares wallet . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . view .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . fragment . app . Fragment Pager Adapter Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . navigation . Navigation Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . google . firebase . crash ly t ics . Firebase Crash ly t ics Ċ import Ġcy . ag or ise . bits y bit shares wallet . R Ċ import Ġcy . ag or ise . bits y bit shares wallet . database . entities . User Account Ċ import Ġcy . ag or ise . bits y bit shares wallet . databinding . Fragment Home Binding Ċ import Ġcy . ag or ise . bits y bit shares wallet . utils . Constants Ċ import Ġcy . ag or ise . bits y bit shares wallet . view models . User Account ViewModel ĊĊ Ċ class ĠHome Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Home Fragment " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Home Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm User Account ViewModel : ĠUser Account ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnight Mode Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getBoolean ( Constants . KEY _ N IGHT _ MODE _ ACTIV ATED , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFor ces Ġto Ġshow Ġthe ĠBits y Ġicon Ġto Ġthe Ġleft Ġof Ġthe Ġtoolbar Ġand Ġalso Ġfix Ġthe Ġtoolbar Ġcolor Ġand Ġvisibility Ġafter ĊĠĠĠĠĠĠĠ Ġ// Ġreturning Ġfrom Ġother Ġfragments Ġthat Ġchange Ġthose Ġproperties , Ġsuch Ġas ĠSend Transaction Fragment Ġ( color ) Ġand ĊĠĠĠĠĠĠĠ Ġ// ĠMer ch ants Fragment Ġ( visibility ) ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar : ĠToolbar ? Ġ= Ġactivity ?. findViewById ( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ). set Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġtoolbar ?. navigation Icon Ġ= Ġresources . get Drawable ( R . drawable . ic _ bits y _ logo _ 2 , Ġnull ) ĊĠĠĠĠĠĠĠ Ġtoolbar ?. setBackground Resource ( if Ġ(! night Mode ) ĠR . color . color Primary Ġelse ĠR . color . color Toolbar Dark ) ĊĠĠĠĠĠĠĠ Ġtoolbar ?. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġtoolbar ?. title Ġ= ĠgetString ( R . string . app _ name ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMakes Ġsure Ġthe ĠNavigation Ġand ĠStatus Ġbar Ġare Ġnot Ġtrans luc ent Ġafter Ġreturning Ġfrom Ġthe ĠMer ch ants Fragment ĊĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġactivity ?. window ĊĠĠĠĠĠĠĠ Ġwindow ?. clear Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ NAV IG ATION ) ĊĠĠĠĠĠĠĠ Ġwindow ?. clear Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ) ĊĠĠĠĠĠĠĠ Ġ// ĠSets Ġthe Ġstatus Ġand Ġnavigation Ġbars Ġbackground Ġcolor Ġto Ġa Ġdark Ġblue Ġor Ġjust Ġdark ĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġcontext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Bar Color Ġ= ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! night Mode ) ĠR . color . color Primary Variant Ġelse ĠR . color . color StatusBar Dark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow ?. status Bar Color Ġ= Ġstatus Bar Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow ?. navigation Bar Color Ġ= Ġstatus Bar Color ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Home Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcrash ly t ics Ġ= ĠFirebase Crash ly t ics . getInstance () ĊĠĠĠĠĠĠĠ Ġcrash ly t ics . set Custom Key ( Constants . CR ASH LY T ICS _ KEY _ LAST _ SCREEN , ĠTAG ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġversion Ġnumber Ġof Ġthe Ġlast Ġagreed Ġlicense Ġversion ĊĠĠĠĠĠĠĠ Ġval Ġagreed License Version Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getInt ( Constants . KEY _ LAST _ AG RE ED _ LICENSE _ VERSION , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getString ( Constants . KEY _ CURRENT _ ACCOUNT _ ID , Ġ"") Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ag reed License Version Ġ!= ĠConstants . CURRENT _ LICENSE _ VERSION Ġ|| ĠuserId Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . license _ action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠConfigure ĠUser Account ViewModel Ġto Ġshow Ġthe Ġcurrent Ġaccount ĊĠĠĠĠĠĠĠ Ġm User Account ViewModel Ġ= ĠViewModel Providers . of ( this ). get ( User Account ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġm User Account ViewModel . getUser Account ( userId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( this , ĠObserver < User Account > Ġ{ Ġuser Account Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Account Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv AccountName . text Ġ= Ġuser Account . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Account . is L tm ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġthe Ġlight ning Ġb olt Ġto Ġthe Ġstart Ġof Ġthe Ġaccount Ġname Ġif Ġit Ġis ĠL TM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv AccountName . set Compound Draw ables With Intr insic Bounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ lt m _ account , Ġ 0 , Ġ 0 , Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġsome Ġpadding Ġso Ġthat Ġthe Ġlight ning Ġb olt Ġicon Ġis Ġnot Ġtoo Ġclose Ġto Ġthe Ġaccount Ġname Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv AccountName . compound Drawable Padding Ġ= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNavigate Ġto Ġthe ĠReceive ĠTransaction ĠFragment ĊĠĠĠĠĠĠĠ Ġbinding . fab Receive Transaction . setOnClickListener ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation . create Navigate OnClickListener ( R . id . receive _ action ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNavigate Ġto Ġthe ĠSend ĠTransaction ĠFragment Ġwithout Ġactiv ating Ġthe Ġcamera ĊĠĠĠĠĠĠĠ Ġbinding . fab Send Transaction . setOnClickListener ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation . create Navigate OnClickListener ( R . id . send _ action ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNavigate Ġto Ġthe ĠSend ĠTransaction ĠFragment Ġusing ĠNavigation 's ĠSafe Args Ġto Ġactivate Ġthe Ġcamera ĊĠĠĠĠĠĠĠ Ġbinding . fab Send Transaction Camera . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠHome Fragment Directions . send Action ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠConfigure ĠView Pager Ġwith ĠP ager Adapter Ġand ĠTab Layout Ġto Ġdisplay Ġthe ĠBal ances / Net W orth Ġsection ĊĠĠĠĠĠĠĠ Ġval Ġpager Adapter Ġ= ĠP ager Adapter ( child FragmentManager ) ĊĠĠĠĠĠĠĠ Ġbinding . view Pager . adapter Ġ= Ġpager Adapter ĊĠĠĠĠĠĠĠ Ġbinding . tab Layout . setup With ViewPager ( binding . view Pager ) ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġpie Ġchart Ġicon Ġfor Ġthe Ġthird Ġtab ĊĠĠĠĠĠĠĠ Ġbinding . tab Layout . get Tab At ( 2 )?. setIcon ( R . drawable . ic _ pie _ chart ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠP ager Ġadapter Ġto Ġcreate Ġthe Ġplaceholder Ġfragments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġinner Ġclass ĠP ager Adapter ( fm : ĠFragment Manager ) Ġ: ĠFragment Pager Adapter ( fm ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠgetItem Ġis Ġcalled Ġto Ġinstantiate Ġthe Ġfragment Ġfor Ġthe Ġgiven Ġpage . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( position Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBal ances Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNet W orth Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Page Title ( position : ĠInt ): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . title _ balances ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . title _ net _ worth ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) [ position ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ home , Ġmenu ) ĊĠĠĠ Ġ} Ċ } Ċ