package Ġxyz . sch wa ab . crypto . ticker . presentation Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . github . mike phil . chart ing . components . Axis Base Ċ import Ġcom . github . mike phil . chart ing . components . Description Ċ import Ġcom . github . mike phil . chart ing . formatter . Value Formatter Ċ import Ġcom . google . android . material . button . Material Button Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ import Ġxyz . sch wa ab . crypto . base . presentation . Base Binding Fragment Ċ import Ġxyz . sch wa ab . crypto . ticker . R Ċ import Ġxyz . sch wa ab . crypto . ticker . databinding . Currency Ticker Fragment Binding Ċ import Ġjava . util .* Ċ Ċ class ĠCurrency Ticker Fragment ( private Ġval Ġdate Axis Formatter : ĠDate Axis Formatter ) Ġ: ĊĠĠĠ ĠBase Binding Fragment < Currency Ticker Fragment Binding >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠCurrency Ticker ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġoverride Ġval Ġbinding Provider : Ġ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ Ġattach To Root : ĠBoolean ĊĠĠĠ Ġ) Ġ-> ĠCurrency Ticker Fragment Binding ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠCurrency Ticker Fragment Binding :: inflate ĊĊĠĠĠ Ġoverride Ġfun ĠCurrency Ticker Fragment Binding . on Binding Created () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigure Chart Data () ĊĠĠĠĠĠĠĠ Ġconfigure Period Selection () ĊĠĠĠĠĠĠĠ Ġconfigure ErrorMessage Display () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure ErrorMessage Display () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . error Event . observe ( view Lifecycle Owner , Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( binding . root , Ġerror . res Id (), ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠCurrency Ticker Fragment Binding . configure Chart Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġprice History Chart . xAxis . value Formatter Ġ= Ġdate Axis Formatter ĊĠĠĠĠĠĠĠ Ġprice History Chart . description Ġ= ĠDescription (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġroot . context . getString ( R . string . label _ price _ of _ btc ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . display able Chart Data . observe ( view Lifecycle Owner , Ġ{ Ġchart Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice History Chart . data Ġ= Ġchart Data . getLine Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice History Chart . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice History Chart . invalidate () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠCurrency Ticker Fragment Binding . configure Period Selection () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . selected Chart Period . observe ( view Lifecycle Owner , Ġ{ Ġselected Period Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" WHEN _ ENUM _ CAN _ BE _ NULL _ IN _ JAVA ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Id Ġ= Ġwhen Ġ( selected Period ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCurrency Ticker ViewModel . Chart Period . WEEK Ġ-> Ġbutton Period Week . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCurrency Ticker ViewModel . Chart Period . MONTH Ġ-> Ġbutton Period Month . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCurrency Ticker ViewModel . Chart Period . YEAR Ġ-> Ġbutton Period Year . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . findViewById < Material Button >( selected Id ). isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġtoggle Group Period Selection . add On Button Checked Listener Ġ{ Ġ_, Ġchecked Id , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isChecked ) Ġreturn @ add On Button Checked Listener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Selection Ġ= Ġwhen Ġ( checked Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Period Week . id Ġ-> ĠCurrency Ticker ViewModel . Chart Period . WEEK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Period Month . id Ġ-> ĠCurrency Ticker ViewModel . Chart Period . MONTH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Period Year . id Ġ-> ĠCurrency Ticker ViewModel . Chart Period . YEAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Un mapped Ġbutton Ġadded Ġto Ġchart Ġperiod Ġselection ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Chart Period Selection Changed ( new Selection ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }