/* Ċ Ġ* Ċ Ġ* Ġ Ġ* ĠCopyright Ġ 2 0 2 0 . ĠHu awei ĠTechnologies ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . hu awei . my health . ui . fragments Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . room . Room Ċ import Ġcom . hu awei . my health . R Ċ import Ġcom . hu awei . my health . database . db abstract . My Health Database Ċ import Ġcom . hu awei . my health . database . entity . Exercise Done Ċ import Ġcom . hu awei . my health . database . entity . Steps Walk ed Ċ import Ġcom . hu awei . my health . databinding . Fragment Steps Walk ed Binding Ċ import Ġcom . hu awei . my health . utils . Default Values Ċ Ċ /** Ċ Ġ* Ġ@ since Ġ 2 0 2 0 Ċ Ġ* Ġ@ author ĠHu awei ĠDT SE ĠIn dia Ċ Ġ*/ Ċ Ċ // ĠTODO : ĠRename Ġparameter Ġarguments , Ġchoose Ġnames Ġthat Ġmatch Ċ // Ġthe Ġfragment Ġinitialization Ġparameters , Ġe . g . ĠARG _ ITEM _ NUMBER Ċ private Ġconst Ġval ĠARG _ PARAM 1 Ġ= Ġ" param 1 " Ċ private Ġconst Ġval ĠARG _ PARAM 2 Ġ= Ġ" param 2 " Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ* ĠUse Ġthe Ġ[ Steps Walk ed Fragment . newInstance ] Ġfactory Ġmethod Ġto Ċ Ġ* Ġcreate Ġan Ġinstance Ġof Ġthis Ġfragment . Ċ Ġ*/ Ċ class ĠSteps Walk ed Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġvar Ġstep _ count Ġ= Ġ 0 ĊĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Steps Walk ed Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġvar Ġdb : ĠMy Health Database ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġshared Preference : ĠSharedPreferences ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġcal or ie _ val Ġ= Ġ 0 . 0 2 7 Ġ// Ġcal Ġdata Ġfor Ġ 1 Ġstep Ġcount ĊĠĠĠ Ġvar Ġtotal Cal _ burn ed Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Steps Walk ed Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġbinding . root ĊĊĠĠĠĠĠĠĠ Ġ// ĠTo ĠShow Ġ/ ĠHide ĠAction ĠBar ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ?) !!. support ActionBar !!. show () ĊĊĠĠĠĠĠĠĠ Ġ// Ġinitialize Ġthe Ġroom Ġdb ĊĠĠĠĠĠĠĠ Ġdb Ġ= Ġactivity ?. let Ġ{ ĠRoom . database Builder ( it , ĠMy Health Database :: class . java , Ġresources . getString ( R . string . my _ health _ database )). build () Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġinitialize Ġthe Ġshared Ġpreference ĊĠĠĠĠĠĠĠ Ġshared Preference Ġ= Ġactivity ?. get SharedPreferences ( resources . getString ( R . string . APP ), ĠContext . MODE _ PRIVATE ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġdata Ġfrom Ġdb ĊĠĠĠĠĠĠĠ Ġget Step Data From DB () ĊĊĠĠĠĠĠĠĠ Ġ// ĠonClick Ġf unt ions ĊĠĠĠĠĠĠĠ ĠonClick () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonClick () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . et Steps . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( binding . et Steps . text . toString () Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstep _ data Ġ= Ġstep _ count . toString (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstep _ enter ed data Ġ= Ġbinding . et Steps . text . toString (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstep _ data Ġ= Ġstep _ enter ed data Ġ+ Ġstep _ data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv W at ert aken . setText ( step _ data . toString () Ġ+ Ġresources . getString ( R . string . steps _ value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . pb Progress W at ert aken . set Progress ( step _ count Ġ+ Ġbinding . et Steps . text . toString (). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbinding . tv Done !!. setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( binding . et Steps . text . toString () Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshared Preference Ġ= Ġactivity ?. get SharedPreferences ( resources . getString ( R . string . APP ), ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġuid Ġ= Ġshared Preference ?. getString ( resources . getString ( R . string . UID ), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdate selected Ġ= Ġshared Preference ?. getString ( resources . getString ( R . string . date _ selected ), Ġ"") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsteps Walk ed Ġ= ĠSteps Walk ed ( uid . toString (), Ġdate selected . toString (), Ġbinding . et Steps . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdb Ġ= Ġactivity ?. let Ġ{ ĠRoom . database Builder ( it , ĠMy Health Database :: class . java , Ġresources . getString ( R . string . my _ health _ database )). build () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Record Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Record _ cal or ie Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcal Count Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcal Count ToInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal Count Ġ= Ġ(( cal or ie _ val ) Ġ* Ġ( binding . et Steps . text . toString (). toDouble ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal Count ToInt Ġ= Ġcal Count . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal Count ToInt Ġ= Ġtotal Cal _ burn ed Ġ+ Ġcal Count ToInt ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstep _ enter ed data Ġ= Ġbinding . et Steps . text . toString (). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinsert Ġstep Ġdata Ġto Ġdb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthread Ġ= ĠThread Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfetch ĠRecords ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb ?. steps Walk ed Dao ()?. get Steps Walk ed Data ()?. forEach () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . date . equals ( date selected )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Record Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Record ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinsert ĠRecords ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb ?. steps Walk ed Dao ()?. insert ( steps Walk ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstep _ data Ġ= Ġstep _ count . toString (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstep _ data Ġ= Ġstep _ enter ed data Ġ+ Ġstep _ data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb ?. steps Walk ed Dao ()?. update (( step _ data . toString ()), Ġdate selected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinsert Ġcal or ie Ġdata Ġto Ġdb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfetch ĠRecords ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb ?. exercise Done Dao ()?. get Exercise Done Data ()?. forEach () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . date N Time . equals ( date selected )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Record _ cal or ie Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Record _ cal or ie ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexc erc ide Done Ġ= ĠExercise Done ( uid . toString (), Ġdate selected . toString (), ĠDefault Values . EX CER CI SE ID , Ġresources . getString ( R . string . STEPS _ DEFAULT ), ĠDefault Values . DEFAULT _ VALUE . toString (), ĠDefault Values . DEFAULT _ VALUE . toString (), ĠDefault Values . DEFAULT _ VALUE . toString (), Ġcal Count ToInt . toString (), Ġresources . getString ( R . string . steps _ walk ed ), Ġdate selected . toString (), Ġdate selected . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinsert ĠRecords ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb ?. exercise Done Dao ()?. insert ( exc erc ide Done ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb ?. exercise Done Dao ()?. update (( cal Count ToInt . toString ()), Ġdate selected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread . interrupt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . home Screen Dest ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġactivity ?. getString ( R . string . enter _ missing _ fields ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Step Data From DB () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġselected Date Str Ġ= Ġshared Preference ?. getString ( resources . getString ( R . string . date _ selected ), Ġ"") ĊĠĠĠĠĠĠĠ Ġ// ĠgetData Ġfrom Ġdb ĊĠĠĠĠĠĠĠ Ġval Ġthread Ġ= ĠThread Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfetch ĠRecords ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb ?. steps Walk ed Dao ()?. get Steps Walk ed Data ()?. forEach () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Date Str . equals ( it . date )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstep _ count Ġ= Ġit . steps Walk ed . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . pb Progress W at ert aken . set Progress ( step _ count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv W at ert aken . setText (( step _ count ). toString () Ġ+ Ġresources . getString ( R . string . steps _ value )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthread . start () ĊĠĠĠĠĠĠĠ Ġthread . interrupt () ĊĠĠĠĠĠĠĠ Ġ// Ġget Ġcal Ġdata ĊĠĠĠĠĠĠĠ Ġget Cal Data From DB () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Cal Data From DB () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdb Ġ= Ġactivity ?. let Ġ{ ĠRoom . database Builder ( it , ĠMy Health Database :: class . java , Ġresources . getString ( R . string . my _ health _ database )). build () Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġshared Preference Ġ= Ġactivity ?. get SharedPreferences ( resources . getString ( R . string . APP ), ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġvar Ġselected Date Str Ġ= Ġshared Preference ?. getString ( resources . getString ( R . string . date _ selected ), Ġ"") ĊĊĠĠĠĠĠĠĠ Ġval Ġthread Ġ= ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfetch ĠRecords ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb ?. exercise Done Dao ()?. get Exercise Done Data ()?. forEach () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Date Str . equals ( it . date N Time )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcal Burn str Ġ= Ġit . cal or ie Burn ed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Cal _ burn ed Ġ= Ġcal Burn str . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthread . start () ĊĠĠĠĠĠĠĠ Ġthread . interrupt () ĊĠĠĠ Ġ} Ċ }