package Ġcom . jon ny cale y . crypt oman ager . ui . transactions . fi at Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . widget .* Ċ import Ġcom . jon ny cale y . crypt oman ager . R Ċ import Ġcom . jon ny cale y . crypt oman ager . data . model . Data Base . Transaction Ċ import Ġcom . jon ny cale y . crypt oman ager . ui . base . Base Activity Ċ import Ġcom . jon ny cale y . crypt oman ager . ui . pick ers . currency . Picker Currency Activity Ċ import Ġcom . jon ny cale y . crypt oman ager . ui . pick ers . exchange . Picker Exchange Activity Ċ import Ġcom . wd ull aer . material datetime picker . date . DatePicker Dialog Ċ import Ġcom . wd ull aer . material datetime picker . time . Time Picker Dialog Ċ import Ġjava . util .* Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġcom . jon ny cale y . crypt oman ager . utils . Utils Ċ import Ġcom . r 0 ad k ll . sl idr . Sl idr Ċ import Ġkotlinx . android . synt hetic . main . activity _ fi at _ transaction .* Ċ Ċ class ĠF iat Transaction Activity Ġ: ĠAppCompatActivity (), ĠF iat Transaction Contract . View , ĠView . OnClickListener , ĠDate Picker Dialog . On Date Set Listener , ĠTime Picker Dialog . On Time Set Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpresenter : ĠF iat Transaction Contract . Presenter ĊĊĠĠĠ Ġval Ġargs Ġby Ġlazy Ġ{ ĠF iat Transaction Args . deserialize From ( intent ) Ġ} ĊĊĠĠĠ Ġval Ġtext view Deposit Ġby Ġlazy Ġ{ ĠfindViewById < TextView >( R . id . text _ view _ deposit ) Ġ} ĊĠĠĠ Ġval Ġtext view Withdraw l Ġby Ġlazy Ġ{ ĠfindViewById < TextView >( R . id . text _ view _ withdraw l ) Ġ} ĊĊĠĠĠ Ġval Ġrequired Exchange Ġby Ġlazy Ġ{ ĠfindViewById < TextView >( R . id . text _ chosen _ exchange ) Ġ} ĊĠĠĠ Ġval Ġlayout Exchange Filled Ġby Ġlazy Ġ{ ĠfindViewById < Relative Layout >( R . id . layout _ exchange _ filled ) Ġ} ĊĠĠĠ Ġval Ġlayout Exchange Empty Ġby Ġlazy Ġ{ ĠfindViewById < Relative Layout >( R . id . layout _ exchange _ empty ) Ġ} ĊĊĠĠĠ Ġval Ġrequired Currency Ġby Ġlazy Ġ{ ĠfindViewById < TextView >( R . id . currency ) Ġ} ĊĠĠĠ Ġval Ġlayout Currency Filled Ġby Ġlazy Ġ{ ĠfindViewById < Relative Layout >( R . id . layout _ currency _ filled ) Ġ} ĊĠĠĠ Ġval Ġlayout Currency Empty Ġby Ġlazy Ġ{ ĠfindViewById < Relative Layout >( R . id . layout _ currency _ empty ) Ġ} ĊĊĠĠĠ Ġval Ġarrow Exchange Ġby Ġlazy Ġ{ ĠfindViewById < ImageView >( R . id . arrow _ exchange ) Ġ} ĊĠĠĠ Ġval Ġarrow Trading Pair Ġby Ġlazy Ġ{ ĠfindViewById < ImageView >( R . id . arrow _ currency ) Ġ} ĊĊĠĠĠ Ġval Ġlayout Quantity Ġby Ġlazy Ġ{ ĠfindViewById < Relative Layout >( R . id . layout _ quantity ) Ġ} ĊĊĠĠĠ Ġval Ġrequired Quantity Ġby Ġlazy Ġ{ ĠfindViewById < EditText >( R . id . edit _ text _ quantity ) Ġ} ĊĠĠĠ Ġval Ġnotes Ġby Ġlazy Ġ{ ĠfindViewById < EditText >( R . id . edit _ text _ notes ) Ġ} ĊĊĊĠĠĠ Ġval Ġlayout Deposit Ġby Ġlazy Ġ{ ĠfindViewById < LinearLayout >( R . id . layout _ deposit _ checked ) Ġ} ĊĠĠĠ Ġval Ġlayout Withdraw l Ġby Ġlazy Ġ{ ĠfindViewById < LinearLayout >( R . id . layout _ withdraw l _ checked ) Ġ} ĊĊĠĠĠ Ġval Ġbutton Create Deposit Ġby Ġlazy Ġ{ ĠfindViewById < TextView >( R . id . button _ create _ deposit ) Ġ} ĊĠĠĠ Ġval Ġbutton Create Withdraw l Ġby Ġlazy Ġ{ ĠfindViewById < TextView >( R . id . button _ create _ withdraw al ) Ġ} ĊĠĠĠ Ġval Ġbutton Update Deposit Ġby Ġlazy Ġ{ ĠfindViewById < TextView >( R . id . button _ update _ deposit ) Ġ} ĊĠĠĠ Ġval Ġbutton Update Withdraw l Ġby Ġlazy Ġ{ ĠfindViewById < TextView >( R . id . button _ update _ withdraw l ) Ġ} ĊĊĠĠĠ Ġval Ġrequired Date Ġby Ġlazy Ġ{ ĠfindViewById < TextView >( R . id . date ) Ġ} ĊĊĠĠĠ Ġval Ġbutton Delete Ġby Ġlazy Ġ{ ĠfindViewById < ImageView >( R . id . button _ delete )} ĊĊĠĠĠ Ġval Ġlayout Date Ġby Ġlazy Ġ{ ĠfindViewById < Relative Layout >( R . id . layout _ date ) Ġ} ĊĊĠĠĠ Ġvar Ġtransaction Date Ġ= ĠCalendar . getInstance (). time ĊĊĠĠĠ Ġvar Ġis Date Changed Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif ( Utils . is Dark Theme ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Theme ( R . style . dark theme ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ fi at _ transaction ) ĊĊĠĠĠĠĠĠĠ ĠSl idr . attach ( this ) ĊĊĠĠĠĠĠĠĠ Ġif (! Utils . is Dark Theme ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . set Navigation Icon ( R . drawable . ic _ arrow _ back _ black _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Delete . setImage Resource ( R . drawable . baseline _ delete _ black _ 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarrow Exchange . setImage Resource ( R . drawable . next _ white ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarrow Trading Pair . setImage Resource ( R . drawable . next _ white ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbutton Create Deposit . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbutton Create Withdraw l . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbutton Update Deposit . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbutton Update Withdraw l . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġfill Fields () ĊĠĠĠĠĠĠĠ Ġsetup Update () ĊĠĠĠĠĠĠĠ Ġsetup Create () ĊĊĠĠĠĠĠĠĠ Ġpresenter Ġ= ĠF iat Transaction Presenter ( Fi at Transaction DataManager . getInstance ( this ), Ġthis ) ĊĠĠĠĠĠĠĠ Ġpresenter . attach View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ ĠFunction Ġsets Ġup Ġupdate ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup Update () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġargs . transaction ?. let Ġ{ Ġtransaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( transaction . quantity Ġ> Ġ 0 . to BigDecimal () Ġ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Deposit Checked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Withdraw l Checked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Update Deposit . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Withdraw l Checked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Deposit Checked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Update Withdraw l . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Delete . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Exchange Empty . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Exchange Filled . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Currency Empty . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Currency Filled . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Exchange . text Ġ= Ġtransaction . exchange ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Currency . text Ġ= Ġtransaction . symbol ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Quantity . setText ( String . format ( transaction . quantity . abs (). toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Date . text Ġ= ĠUtils . format Date ( transaction . date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Delete . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Toolbar Update ( transaction ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ ĠFunction Ġhide s Ġdeposit Ġchecked ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhide Deposit Checked () Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Deposit . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ ĠFunction Ġhide s Ġwithdraw al Ġchecked ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhide Withdraw l Checked () Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Withdraw l . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ ĠFunction Ġshows Ġwithdraw al Ġchecked ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow Withdraw l Checked () Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Withdraw l . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ ĠFunction Ġshows Ġdeposit Ġchecked ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow Deposit Checked () Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Deposit . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠAsk Option (): ĠAlertDialog Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġmessage , Ġtitle , Ġand Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Delete ĠTransaction ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" Are Ġyou Ġsure Ġyou Ġwant Ġto Ġdelete Ġthis Ġtransaction ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" Yes ", ĠDialog Interface . OnClickListener Ġ{ Ġdialog , Ġwhich Button Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// your Ġdeleting Ġcode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . transaction ?. let Ġ{ Ġpresenter . delete Transaction ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" No ", ĠDialog Interface . OnClickListener Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Create () Ġ{ ĊĠĠĠĠĠĠĠ Ġargs . currency ?. let Ġ{ Ġcurrency Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Toolbar Create ( currency ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Date . text Ġ= ĠUtils . format Date ( transaction Date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Currency . text Ġ= Ġcurrency ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Create Deposit . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Update Deposit Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Update Deposit . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Update Withdraw l Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Update Withdraw l . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop Update Deposit Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Update Deposit . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop Update Withdraw l Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Update Withdraw l . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Create Deposit Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Create Deposit . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Create Withdraw l Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Create Withdraw l . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop Create Deposit Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Create Deposit . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop Create Withdraw l Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Create Withdraw l . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisable Touch Events () Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow . set Flags ( WindowManager . LayoutParams . FLAG _ NOT _ TO UCH ABLE , ĠWindow Manager . LayoutParams . FLAG _ NOT _ TO UCH ABLE ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġenable Touch Events () Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow . clear Flags ( WindowManager . LayoutParams . FLAG _ NOT _ TO UCH ABLE ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error () Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġresources . getString ( R . string . error _ occ urred ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow No Internet () Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġresources . getString ( R . string . internet _ required ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfill Fields () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlayout Exchange Filled . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġlayout Exchange Empty . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġlayout Currency Filled . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġlayout Currency Empty . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġlayout Date . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbutton Delete . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġlayout Quantity . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġtext view Deposit . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġtext view Withdraw l . setOnClickListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġbutton Update Deposit . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbutton Update Withdraw l . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbutton Create Withdraw l . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbutton Create Deposit . setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ CODE _ EX CHANGE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexchange Ġ= Ġdata ?. getString Extra (" data ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Exchange Empty . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Exchange Filled . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Exchange . text Ġ= Ġexchange ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ CODE _ CUR RE NCY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrency Ġ= Ġdata ?. getString Extra (" data ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Currency Empty . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Currency Filled . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Currency . text Ġ= Ġcurrency ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar _ title . text Ġ= Ġcurrency ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġi : ĠIntent ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( v ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Delete . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdia Box Ġ= ĠAsk Option () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdia Box . show () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . transaction ?. let Ġ{ Ġpresenter . delete Transaction ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Quantity . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocus Edit text ( required Quantity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO : ĠRE ĠADD ĠF OC US ĠTO ĠEDIT TEXT ĠWITH ĠNUM ER ICAL ĠKEY BOARD ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Exchange Filled . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= ĠIntent ( this , ĠP icker Exchange Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( i , ĠREQUEST _ CODE _ EX CHANGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Exchange Empty . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= ĠIntent ( this , ĠP icker Exchange Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( i , ĠREQUEST _ CODE _ EX CHANGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Currency Filled . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= ĠIntent ( this , ĠP icker Currency Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( i , ĠREQUEST _ CODE _ CUR RE NCY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Currency Empty . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= ĠIntent ( this , ĠP icker Currency Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( i , ĠREQUEST _ CODE _ CUR RE NCY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Date . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow DatePicker () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext view Deposit . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Deposit Checked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Withdraw l Checked () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( args . transaction Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Update Deposit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Update Withdraw l () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Create Deposit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Create Withdraw l () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext view Withdraw l . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Withdraw l Checked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Deposit Checked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( args . transaction Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Update Deposit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Update Withdraw l () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Create Deposit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Create Withdraw l () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Create Deposit . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Process () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Create Withdraw l . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Process () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Update Deposit . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Process () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Update Withdraw l . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Process () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Process () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( check Fields ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevent Field Changes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcorrect Quantity : ĠFloat ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( layout Withdraw l . visibility Ġ== ĠView . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorrect Quantity Ġ= Ġ( required Quantity . text . toString (). toFloat () Ġ* Ġ(- 1 ). toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorrect Quantity Ġ= Ġrequired Quantity . text . toString (). toFloat () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( transaction Date Ġ> ĠCalendar . getInstance (). time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Date Ġ= ĠCalendar . getInstance (). time ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Date Ġ: ĠDate ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Date Changed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Date Ġ= Ġtransaction Date ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Date Ġ= Ġargs . transaction ?. date Ġ?: Ġtransaction Date ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . transaction ?. let Ġ{ Ġtransaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . update Fi at Transaction ( transaction , Ġrequired Exchange . text . trim (). toString (), Ġrequired Currency . text . trim (). toString (), Ġcorrect Quantity , Ġtemp Date , Ġnotes . text . trim (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( args . transaction Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . create Fi at Transaction ( required Exchange . text . trim (). toString (), Ġrequired Currency . text . trim (). toString (), Ġcorrect Quantity , Ġtemp Date , Ġnotes . text . trim (). toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Create Withdraw l () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Create Withdraw l . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Create Deposit () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Create Deposit . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Update Withdraw l () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Update Withdraw l . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Update Deposit () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Update Deposit . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Create Withdraw l () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Create Withdraw l . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Create Deposit () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Create Deposit . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Update Withdraw l () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Update Withdraw l . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Update Deposit () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton Update Deposit . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Transaction Updated () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Transaction Created () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( args . back press To Portfolio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Base Activity Without Restart () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġfocus Edit text ( edit Text : ĠEditText ){ ĊĠĠĠĠĠĠĠ Ġedit Text . request Focus () ĊĠĠĠĠĠĠĠ Ġval Ġimm Ġ: ĠInput Method Manager Ġ= Ġ Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġimm . show Soft Input ( edit Text , ĠInput Method Manager . SHOW _ IMP LICIT ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġload Base Activity Without Restart () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġbundle . put Int (" fragment _ key ", Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠBase Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . put Extras ( bundle ) ĊĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TOP Ġor ĠIntent . FLAG _ ACTIVITY _ SINGLE _ TOP ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Fields (): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġcan Submit Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġsh ake Ġ= ĠAnimation Utils . load Animation ( this , ĠR . anim . shake ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( required Exchange . text . toString (). trim () Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Exchange Empty . start Animation ( shake ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" No Ġexchange Ġchosen !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcan Submit Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( required Currency . text . toString (). trim () Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Currency Empty . start Animation ( shake ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" No Ġsymbol Ġchosen !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcan Submit Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( required Quantity . text . toString (). trim () Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Quantity . start Animation ( shake ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" No Ġquantity Ġchosen !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcan Submit Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcan Submit ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprevent Field Changes () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Date Set ( view : ĠDate Picker Dialog ?, Ġyear : ĠInt , Ġmonth OfYear : ĠInt , Ġday OfMonth : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtransaction Date . year Ġ= Ġyear Ġ- Ġ 1 9 0 0 ĊĠĠĠĠĠĠĠ Ġtransaction Date . month Ġ= Ġmonth OfYear ĊĠĠĠĠĠĠĠ Ġtransaction Date . date Ġ= Ġday OfMonth ĊĊĠĠĠĠĠĠĠ Ġshow Time Picker () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Time Set ( view : ĠTime Picker Dialog ?, Ġhour OfDay : ĠInt , Ġminute : ĠInt , Ġsecond : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtransaction Date . hours Ġ= Ġhour OfDay ĊĠĠĠĠĠĠĠ Ġtransaction Date . minutes Ġ= Ġminute ĊĠĠĠĠĠĠĠ Ġtransaction Date . seconds Ġ= Ġsecond ĊĠĠĠĠĠĠĠ Ġrequired Date . text Ġ= ĠUtils . format Date ( transaction Date ) ĊĊĠĠĠĠĠĠĠ Ġis Date Changed Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow DatePicker () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġd pd Ġ= ĠDate Picker Dialog . newInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow . get ( Calendar . YEAR ), Ġ// ĠInitial Ġyear Ġselection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow . get ( Calendar . MONTH ), Ġ// ĠInitial Ġmonth Ġselection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow . get ( Calendar . DAY _ OF _ MONTH ) Ġ// ĠIn ital Ġday Ġselection ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġd pd . max Date Ġ= ĠCalendar . getInstance () ĊĊĠĠĠĠĠĠĠ Ġd pd . show ( fragment Manager , Ġ" Date picker dialog ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Time Picker () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġd pd Ġ= ĠTime Picker Dialog . newInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow . get ( Calendar . HOUR _ OF _ DAY ), Ġ// ĠInitial Ġyear Ġselection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow . get ( Calendar . MINUTE ), Ġ// ĠInitial Ġmonth Ġselection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġd pd . show ( fragment Manager , Ġ" Date picker dialog ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Toolbar Update ( transaction : ĠTransaction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < Toolbar >( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġtoolbar _ title . text Ġ= Ġtransaction . symbol ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġsetup Toolbar Create ( currency : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < Toolbar >( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġtoolbar _ title . text Ġ= Ġcurrency ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId ĊĠĠĠĠĠĠĠ Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Presenter ( presenter : ĠF iat Transaction Contract . Presenter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . presenter Ġ= ĠcheckNotNull ( presenter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠREQUEST _ CODE _ EX CHANGE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval ĠREQUEST _ CODE _ CUR RE NCY Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= Ġ" Fi at Trans Activity " ĊĠĠĠ Ġ} Ċ } ĊĊ