/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 . br af . background Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . net . to Uri Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġcom . br af . background . databinding . Activity Convert Binding Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ Ċ class ĠConvert Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠConvert ViewModel Ġby Ġview Models Ġ{ ĊĠĠĠĠĠĠĠ ĠConvert ViewModel . Convert ViewModel Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Convert Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Convert Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġ// Parsing Ġand Ġsetting Ġdata Ġfrom Ġinternet Ġin Ġlifecycle Scope ĊĠĠĠĠĠĠĠ Ġlaunch Data () ĊĠĠĠĠĠĠĠ Ġbinding . calculate . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrency 1 Ġ= Ġbinding . currency 1 . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrency 2 Ġ= Ġbinding . currency 2 . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġbinding . input Value 1 . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . calculate ( currency 1 , Ġcurrency 2 , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . input Value 2 . setText ( viewModel . calculate ( currency 1 , Ġcurrency 2 , Ġinput )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbind ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind ( binding : ĠActivity Convert Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġall C urrencies Ġ= Ġresources . getString Array ( R . array . currencies _ array ) ĊĠĠĠĠĠĠĠ Ġval Ġuri : ĠUri Ġ= Ġ" https :// goo . gl / maps / BC p Zc Z Pr Jp zu R hi q 5 ". to Uri () ĊĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Owner Ġ= Ġthis @ Convert Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency 1 . setText ( all C urrencies [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency 2 . setText ( all C urrencies [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrestart Adapter For Dropdown () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestart Adapter For Dropdown () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranches . setOnClickListener Ġ{ ĠstartActivity ( Intent ( Intent . ACTION _ VIEW , Ġuri )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh . setOnClickListener Ġ{ Ġlaunch Data () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreplace () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcur 1 Ġ= Ġbinding . currency 1 . text ĊĠĠĠĠĠĠĠ Ġval Ġcur 2 Ġ= Ġbinding . currency 2 . text ĊĠĠĠĠĠĠĠ Ġval Ġval 1 Ġ= Ġbinding . input Value 1 . text ĊĠĠĠĠĠĠĠ Ġval Ġval 2 Ġ= Ġbinding . input Value 2 . text ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency 1 . text Ġ= Ġcur 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency 2 . text Ġ= Ġcur 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Value 1 . text Ġ= Ġval 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Value 2 . text Ġ= Ġval 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrestart Adapter For Dropdown () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġall C urrencies Ġ= Ġresources . getString Array ( R . array . currencies _ array ) ĊĠĠĠĠĠĠĠ Ġval Ġarray Adapter Ġ= ĠArray Adapter ( this , ĠR . layout . dropdown _ item , Ġall C urrencies ) ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency 1 . setAdapter ( array Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency 2 . setAdapter ( array Adapter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlaunch Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . parse In Scope () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . usd Buy . text Ġ= ĠviewModel . buy List [" USD "]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . usd Sell . text Ġ= ĠviewModel . sell List [" USD "]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . eur Buy . text Ġ= ĠviewModel . buy List [" EUR "]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . eur Sell . text Ġ= ĠviewModel . sell List [" EUR "]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . rub Buy . text Ġ= ĠviewModel . buy List [" R UB "]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . rub Sell . text Ġ= ĠviewModel . sell List [" R UB "]. toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . input Value 2 . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . input Value 1 . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestart Adapter For Dropdown () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }