package Ġcom . edu ard ode v . currencies . presentation . conversions Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . edu ard ode v . currencies . R Ċ import Ġcom . edu ard ode v . currencies . presentation . extension . as Typed Ċ import Ġcom . edu ard ode v . currencies . presentation . extension . long Toast Ċ import Ġcom . edu ard ode v . currencies . presentation . model . Conversion Ċ import Ġcom . edu ard ode v . currencies . presentation . repository . Data Resource Ċ import Ġcom . edu ard ode v . currencies . presentation . repository . Failure Ċ import Ġcom . edu ard ode v . currencies . presentation . repository . Loading Ċ import Ġcom . edu ard ode v . currencies . presentation . repository . Success Ċ import Ġcom . edu ard ode v . currencies . presentation . util . Delayed Text Watcher Ċ import Ġkotlinx . android . synt hetic . main . fragment _ conversions .* Ċ import Ġjava . util .* Ċ Ċ private Ġconst Ġval ĠTEXT _ DELAY _ MS Ġ= Ġ 1 0 0 0 L Ċ private Ġconst Ġval ĠSC ROLL _ DELAY _ MS Ġ= Ġ 1 0 0 0 L Ċ Ċ class ĠCon versions Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠCon versions Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmodel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Providers . of ( this )[ Conversions ViewModel :: class . java ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdelayed Text Watcher Ġ= ĠDelay ed Text Watcher ( ĊĠĠĠĠĠĠĠ ĠTEXT _ DELAY _ MS , ĊĠĠĠĠĠĠĠ Ġ:: on Value Finally Changed , ĊĠĠĠĠĠĠĠ Ġ:: on User Be gan To Write ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġadapter Ġget () Ġ= Ġconversions RecyclerView . adapter Ġas ĠCon versions Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ= Ġinflater . inflate ( R . layout . fragment _ conversions , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĠĠĠĠĠĠĠ Ġmodel . get Conversions (). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ Ġresource Ġ-> Ġon Conversions Update ( resource ) Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġmodel . stop Next Call () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġmodel . restart Next Call () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġconversions RecyclerView . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġconversions RecyclerView . adapter Ġ= ĠCon versions Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ:: on Currency Selected , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelayed Text Watcher ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Conversions Update ( resource : ĠData Resource ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( resource ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconversions Ġ= Ġ( resource . data Ġas ĠList < *> ). as Typed ( Conversion :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . update Conversions ( conversions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFailure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Toast ( getString ( R . string . error _ message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNothing Ġto Ġdo . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstop Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġconversions Progress . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Currency Selected ( currency : ĠCurrency ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmodel . select Currency ( currency ) ĊĠĠĠĠĠĠĠ Ġconversions RecyclerView . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconversions RecyclerView . smooth Scroll To Position ( 0 ) ĊĠĠĠĠĠĠĠ Ġ}, ĠSC ROLL _ DELAY _ MS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon User Be gan To Write () Ġ{ ĊĠĠĠĠĠĠĠ Ġmodel . on User Be gan To Write () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Value Finally Changed ( value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġvalue . toDouble OrNull () ĊĠĠĠĠĠĠĠ Ġif Ġ( newValue Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlong Toast ( getString ( R . string . error _ wrong _ format )) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . setValue For Selected Currency ( newValue ) ĊĠĠĠ Ġ} Ċ }