package Ġorg . my daily . ui . view . goal Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ import Ġorg . my daily . R Ċ import Ġorg . my daily . data . model . network . response . Res Goal Get Ċ import Ġorg . my daily . databinding . Fragment Goal Binding Ċ import Ġorg . my daily . ui . adapter . Goal Report Adapter Ċ import Ġorg . my daily . ui . base . Base Fragment Ċ import Ġorg . my daily . ui . view . goal . detail . Goal Add Activity Ċ import Ġorg . my daily . ui . view . goal . detail . Goal Detail Activity Ċ import Ġorg . my daily . ui . view model . Goal ViewModel Ċ import Ġorg . my daily . util . Calendar Util . copy Y MD From Ċ import Ġorg . my daily . util . Calendar Util . is Week Same Ċ import Ġjava . util .* ĊĊ Ċ class ĠGoal Fragment Ġ: ĠBase Fragment < Fragment Goal Binding , ĠGoal ViewModel >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġlayout ResourceId : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . layout . fragment _ goal ĊĠĠĠ Ġoverride Ġval ĠviewModel : ĠGoal ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġprivate Ġval Ġgoal Report Adapter Ġ= ĠGoal Report Adapter () ĊĊĠĠĠ Ġprivate Ġval Ġnow Calendar Ġ= ĠCalendar . getInstance ( Locale . K ORE A ) ĊĊĠĠĠ Ġprivate Ġvar Ġstart Calendar : ĠCalendar Ġ= ĠCalendar . getInstance ( Locale . K ORE A ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset ( Calendar . DAY _ OF _ WEEK , ĠCalendar . MON DAY ) ĊĠĠĠĠĠĠĠ Ġset ( Calendar . HOUR , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset ( Calendar . MINUTE , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset ( Calendar . SECOND , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset ( Calendar . MILLI SECOND , Ġ 0 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġend Calendar Ġ= ĠCalendar . getInstance ( Locale . K ORE A ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset ( Calendar . DAY _ OF _ WEEK , ĠCalendar . MON DAY ) ĊĠĠĠĠĠĠĠ Ġset ( Calendar . HOUR , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset ( Calendar . MINUTE , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset ( Calendar . SECOND , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset ( Calendar . MILLI SECOND , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġadd ( Calendar . DATE , Ġ 7 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit RecyclerView () ĊĠĠĠĠĠĠĠ Ġinit Click Event () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Before Binding () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġview Lifecycle Owner ĊĠĠĠĠĠĠĠ ĠviewModel . get Go als ( start Calendar . time In Millis , Ġend Calendar . time In Millis ) ĊĠĠĠĠĠĠĠ Ġnotify Date Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit After Binding () Ġ{ ĊĠĠĠĠĠĠĠ Ġobserve Goal Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ ĠviewModel . get Go als ( start Calendar . time In Millis , Ġend Calendar . time In Millis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Click Event () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . iv Arrow Left . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Calendar . add ( Calendar . DATE , Ġ- 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Calendar . add ( Calendar . DATE , Ġ- 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Date Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . iv Arrow Right . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Calendar . add ( Calendar . DATE , Ġ 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Calendar . add ( Calendar . DATE , Ġ 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Date Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . iv This Week . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Calendar . copy Y MD From ( now Calendar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Calendar . copy Y MD From ( now Calendar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Calendar . add ( Calendar . DATE , Ġ 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Date Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify Date Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . calendar Ġ= Ġstart Calendar ĊĠĠĠĠĠĠĠ Ġbinding . tv Date . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( now Calendar . is Week Same ( start Calendar )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( Context Compat . getColor ( require Context (), ĠR . color . main Orange )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv This Week . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( Context Compat . getColor ( require Context (), ĠR . color . main Black )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv This Week . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . get Go als ( start Calendar . time In Millis , Ġend Calendar . time In Millis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . layout Keyword Exist . rv Goal . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġgoal Report Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgoal Report Adapter . set Add Button ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Goal Add Activity With Action (" ADD ", Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgoal Report Adapter . set Goal ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Goal Created ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Goal Detail Activity ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Goal Add Activity With Action (" ADD ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Goal Data () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . goal List . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( now Calendar . is Week Same ( start Calendar )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . isNot Goal Exist This Week Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . isNot Goal Exist Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . is Goal Exist Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . isNot Goal Exist This Week Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . isNot Goal Exist Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . is Goal Exist Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . isNot Goal Exist This Week Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . isNot Goal Exist Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . is Goal Exist Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoal Report Adapter . data Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . not Set Goal Count . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ"$ it " Ġ+ ĠgetString ( R . string . msg _ goal _ has _ not _ been _ set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . layout Keyword Exist . tv Goal Num Alert . text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Goal Detail Activity ( goal : ĠRes Goal Get . Data . Result . Keyword ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent : ĠIntent Ġ= ĠIntent ( require Context (), ĠGoal Detail Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" keyword ", Ġgoal . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" week Goal ", Ġgoal . week Goal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" keyword Id ", Ġgoal . total Keyword Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" week Goal Id ", Ġgoal . week Goal Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" is Goal Completed ", Ġgoal . is Goal Completed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" startDate ", Ġstart Calendar . time In Millis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Goal Add Activity With Action ( ĊĠĠĠĠĠĠĠ Ġaction : ĠString , ĊĠĠĠĠĠĠĠ Ġgoal : ĠRes Goal Get . Data . Result . Keyword ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent : ĠIntent Ġ= ĠIntent ( require Context (), ĠGoal Add Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . action Ġ= Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" keyword ", Ġgoal . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" keyword Id ", Ġgoal . total Keyword Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" week Goal ", Ġgoal . week Goal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" week Goal Id ", Ġgoal . week Goal Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" startDate ", Ġstart Calendar . time In Millis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} Ċ }