package Ġcom . del ac rix m organ . s quark . ui . currency Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TableRow Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . del ac rix m organ . s quark . R Ċ import Ġcom . del ac rix m organ . s quark . common . Row Listener Ċ import Ġcom . del ac rix m organ . s quark . common . Shared Preference Helper Ċ import Ġcom . del ac rix m organ . s quark . common . get Preference Country Ċ import Ġcom . del ac rix m organ . s quark . common . perform H aptic Context Click Ċ import Ġcom . del ac rix m organ . s quark . data . controller . Country Data Controller Ċ import Ġcom . del ac rix m organ . s quark . data . model . Country Ċ import Ġcom . del ac rix m organ . s quark . ui . preference . Preference Navigation Activity Ċ import Ġkotlinx . android . synt hetic . main . fragment _ currency _ navigation .* Ċ Ċ class ĠCurrency Fragment Ġ: ĠFragment (), ĠRow Listener Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ BASE _ COUNTRY Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ QUOTE _ COUNTRY Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ COUNTRY _ CODE Ġ= Ġ" Currency Navigation Fragment . country Code " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġis Expanded Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġbase Country : ĠCountry ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġquote Country : ĠCountry ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġrow List Ġ= Ġarray ListOf < TableRow >() ĊĠĠĠ Ġprivate Ġvar Ġexpanded List Ġ= Ġarray ListOf < TableRow >() ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠCurrency ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this ). get ( Currency ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ currency _ navigation , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Shared Preference Helper . is Persistent Multiplier Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Multiplier ( Shared Preference Helper . multiplier ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . setup Table ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġrequire Activity (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable Layout Ġ= Ġcurrency Table Layout , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow List Ġ= Ġrow List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbase Currency TextView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrency Intent Ġ= ĠPreference Navigation Activity . new Launch Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġbase Country ?. code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ BASE _ COUNTRY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġquote Currency TextView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrency Intent Ġ= ĠPreference Navigation Activity . new Launch Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġquote Country ?. code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ QUOTE _ COUNTRY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġswap Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShared Preference Helper . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Currency Ġ= Ġquote Country ?. code ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote Currency Ġ= Ġbase Country ?. code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġswap Button . perform H aptic Context Click () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Table () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Table () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Table () Ġ{ ĊĠĠĠĠĠĠĠ Ġbase Country Ġ= ĠCountry Data Controller . get Preference Country ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĠShared Preference Helper . base Currency ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġquote Country Ġ= ĠCountry Data Controller . get Preference Country ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĠShared Preference Helper . quote Currency ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbase Currency TextView . text Ġ= Ġbase Country ?. code ĊĠĠĠĠĠĠĠ Ġquote Currency TextView . text Ġ= Ġquote Country ?. code ĊĊĠĠĠĠĠĠĠ Ġif Ġ( base Country ?. rate Ġ!= Ġ 0 . 0 Ġ&& Ġquote Country ?. rate Ġ!= Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Conversion Rate ( base Country ?. rate , Ġquote Country ?. rate ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Table ( row List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ!= ĠActivity . RESULT _ OK ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ BASE _ COUNTRY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcountry Code Ġ= Ġdata ?. getString Extra ( EXTRA _ COUNTRY _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShared Preference Helper . base Currency Ġ= Ġcountry Code ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Expanded ) Ġon Row Collapse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Table () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ QUOTE _ COUNTRY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcountry Code Ġ= Ġdata ?. getString Extra ( EXTRA _ COUNTRY _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShared Preference Helper . quote Currency Ġ= Ġcountry Code ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Expanded ) Ġon Row Collapse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Table () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Row Expand ( selected Row : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrency Table Layout . perform H aptic Context Click () ĊĠĠĠĠĠĠĠ Ġrow List . forEach Indexed Ġ{ Ġindex , Ġtable Row Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġselected Row Ġ&& Ġindex Ġ!= Ġ( selected Row Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Row . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Row . set BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . color Accent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . expand Table ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġrequire Activity (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable Layout Ġ= Ġcurrency Table Layout , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpand Quant ifier Ġ= Ġselected Row , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded List Ġ= Ġexpanded List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Row Collapse () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrency Table Layout . perform H aptic Context Click () ĊĠĠĠĠĠĠĠ Ġexpanded List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency Table Layout . remove View ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrow List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . background Ġ= ĠContext Compat . get Drawable ( require Context (), ĠR . drawable . shape _ cell _ dark ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRow Listener ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Swipe Left ( multiplier : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Expanded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Shared Preference Helper . is Persistent Multiplier Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShared Preference Helper . multiplier Ġ= Ġmultiplier . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency Table Layout . perform H aptic Context Click () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Table ( row List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Swipe Right ( multiplier : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Expanded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Shared Preference Helper . is Persistent Multiplier Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShared Preference Helper . multiplier Ġ= Ġmultiplier . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency Table Layout . perform H aptic Context Click () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Table ( row List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Row Clicked ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Expanded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Row Collapse () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Row Expand ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġis Expanded Ġ= Ġ! is Expanded ĊĠĠĠ Ġ} Ċ }