package Ġru . h se . e gor ov . reading _ tracker . ui . session Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . app . ActionBar Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view .* Ċ import Ġcom . google . firebase . firestore . Document Reference Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ end _ of _ session .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ end _ of _ session . view .* Ċ import Ġru . h se . e gor ov . reading _ tracker . R Ċ import Ġru . h se . e gor ov . reading _ tracker . database . Database Manager Ċ import Ġru . h se . e gor ov . reading _ tracker . statistics . Statistics Manager Ċ import Ġru . h se . e gor ov . reading _ tracker . ui . MainActivity . Companion . PROFILE _ FRAGMENT _ POSITION Ċ import Ġru . h se . e gor ov . reading _ tracker . ui . MainActivity . Companion . SESSION _ FRAGMENT _ POSITION Ċ import Ġru . h se . e gor ov . reading _ tracker . ui . action _ bar . ActionBar Setter Ċ import Ġru . h se . e gor ov . reading _ tracker . ui . fragment . Fragment Launcher Ċ import Ġru . h se . e gor ov . reading _ tracker . ui . statistics . Overall Statistics Fragment Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashMap Ċ Ċ class ĠEnd Of Session Fragment Ġ: ĠFragment (), ĠFragment Launcher Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdb Manager Ġ= ĠDatabase Manager () ĊĠĠĠ Ġprivate Ġval Ġstats Manager Ġ= ĠStatistics Manager () ĊĠĠĠ Ġprivate Ġvar Ġplace : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm ood : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠACTION _ BAR _ TITLE : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠF ILL _ PAGES _ MESSAGE : ĠString ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ ĠACTION _ BAR _ TITLE Ġ= Ġresources . getString ( R . string . sign _ up _ action ) ĊĠĠĠĠĠĠĠ ĠF ILL _ PAGES _ MESSAGE Ġ= Ġresources . getString ( R . string . fill _ pages _ message ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ end _ of _ session , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġupdate ActionBar ( activity Ġas ĠAppCompatActivity ) ĊĊĠĠĠĠĠĠĠ Ġview . em otions . setOn Checked ChangeListener Ġ{ Ġ_, Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . emotion Happy Ġ-> Ġm ood Ġ= ĠM ood . H AP PY . toString (). toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . emotion Neutral Ġ-> Ġm ood Ġ= ĠM ood . NE UT R AL . toString (). toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . emotion S ad Ġ-> Ġm ood Ġ= ĠM ood . S AD . toString (). toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . emotion Very Happy Ġ-> Ġm ood Ġ= ĠM ood . VERY _ H AP PY . toString (). replace ("_ ", Ġ" Ġ"). toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . emotion Very S ad Ġ-> Ġm ood Ġ= ĠM ood . VERY _ S AD . toString (). replace ("_ ", Ġ" Ġ"). toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview . locations . setOn Checked ChangeListener Ġ{ Ġ_, Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . location Home Ġ-> Ġplace Ġ= ĠPlace . HOME . toString (). toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . location Transport Ġ-> Ġplace Ġ= ĠPlace . TRANSPORT . toString (). toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . location Work Ġ-> Ġplace Ġ= ĠPlace . WORK . toString (). toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . location Third Place Ġ-> Ġplace Ġ= ĠPlace . TH IRD _ PLACE . toString (). replace ("_ ", Ġ" Ġ"). toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?, Ġinflater : ĠMenu Inflater ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu ?. clear () ĊĠĠĠĠĠĠĠ Ġinflater ?. inflate ( R . menu . action _ bar , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġmenu ?. getItem ( 0 )?. setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start Page . text !!. isNotEmpty () Ġ&& Ġend Page . text !!. isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġset Session () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Manager . add Session ( session ). add On Success Listener Ġ{ Ġdoc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity ?. support FragmentManager ?. find Fragment By Tag (" android : switch er :" Ġ+ ĠR . id . fragment Pager Ġ+ Ġ":" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠSESSION _ FRAGMENT _ POSITION ) Ġas ĠStart Of Session Fragment ?) ?. reset Session () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Statistics ( session , Ġdoc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Pager Fragment ( activity Ġas ĠAppCompatActivity , ĠPRO FILE _ FRAGMENT _ POSITION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ EndOf Session Fragment . set Has Options Menu ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( activity !!. place Sn ackBar , ĠF ILL _ PAGES _ MESSAGE , ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item !!. itemId Ġ== Ġandroid . R . id . home ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Options Menu ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity ?. support FragmentManager ?. find Fragment By Tag (" android : switch er :" Ġ+ ĠR . id . fragment Pager Ġ+ Ġ":" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠSESSION _ FRAGMENT _ POSITION ) Ġas ĠAction Bar Setter ). set ActionBar ( activity Ġas ĠAppCompatActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Pager Fragment ( activity Ġas ĠAppCompatActivity , ĠSESSION _ FRAGMENT _ POSITION ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate ActionBar ( activity : ĠAppCompatActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . support ActionBar ?. display Options Ġ= ĠAction Bar . DISPLAY _ SHOW _ TITLE ĊĠĠĠĠĠĠĠ Ġactivity . support ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġactivity . support ActionBar ?. set Home As Up Indicator ( R . drawable . ic _ action _ back ) ĊĠĠĠĠĠĠĠ Ġactivity . support ActionBar ?. title Ġ= ĠACTION _ BAR _ TITLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Statistics ( session : ĠHashMap < String , ĠAny ? >, Ġdoc : ĠDocument Reference ) Ġ{ ĊĠĠĠĠĠĠĠ ĠOverall Statistics Fragment . getAll Sessions (). add ( 0 , Ġstats Manager . wrap Session ( session , Ġdoc . id , Ġarguments !! [" author "] Ġas ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments !! [" title "] Ġas ĠString )) ĊĠĠĠĠĠĠĠ ĠOverall Statistics Fragment . getS essions For Period (). add ( 0 , Ġstats Manager . wrap Session ( session , Ġdoc . id , Ġarguments !! [" author "] Ġas ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments !! [" title "] Ġas ĠString )) ĊĠĠĠĠĠĠĠ Ġ( activity ?. support FragmentManager ?. find Fragment By Tag (" android : switch er :" Ġ+ ĠR . id . fragment Pager Ġ+ Ġ":" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠPRO FILE _ FRAGMENT _ POSITION ) Ġas ĠOverall Statistics Fragment ). update Statistics () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Session (): ĠHashMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= ĠHashMap < String , ĠAny ?> () ĊĠĠĠĠĠĠĠ Ġsession [" start Ġpage "] Ġ= Ġif Ġ( start Page . text . toString () Ġ== Ġ"") Ġ- 1 Ġelse Ġstart Page . text . toString (). to Long () ĊĠĠĠĠĠĠĠ Ġsession [" end Ġpage "] Ġ= Ġif Ġ( end Page . text . toString () Ġ== Ġ"") Ġ- 1 Ġelse Ġend Page . text . toString (). to Long () ĊĠĠĠĠĠĠĠ Ġsession [" duration "] Ġ= Ġarguments !! [" duration "] ĊĠĠĠĠĠĠĠ Ġsession [" place "] Ġ= Ġplace ĊĠĠĠĠĠĠĠ Ġsession [" mood "] Ġ= Ġm ood ĊĠĠĠĠĠĠĠ Ġsession [" book Ġid "] Ġ= Ġarguments !! [" book Id "] ĊĠĠĠĠĠĠĠ Ġsession [" start Ġtime "] Ġ= ĠDate (( arguments !! [" startTime "] Ġas ĠLong )) ĊĠĠĠĠĠĠĠ Ġsession [" end Ġtime "] Ġ= ĠDate ( arguments !! [" endTime "] Ġas ĠLong ) ĊĠĠĠĠĠĠĠ Ġsession [" comment "] Ġ= Ġcomment . text . toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġsession ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠEnd Of Session Fragment () ĊĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠM ood Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH AP PY , ĠS AD , ĠNE UT R AL , ĠV ERY _ S AD , ĠV ERY _ H AP PY ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget Mood ByName ( name : ĠString ?): ĠM ood ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalues (). first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name . replace ("_ ", Ġ" Ġ"). toLowerCase () Ġ== Ġname ?. replace ("_ ", Ġ" Ġ") ?. toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠPlace Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWORK , ĠTRAN SP ORT , ĠHOME , ĠTH IRD _ PLACE ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget Place ByName ( name : ĠString ?): ĠPlace ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalues (). first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name . replace ("_ ", Ġ" Ġ"). toLowerCase () Ġ== Ġname ?. replace ("_ ", Ġ" Ġ") ?. toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ