package Ġorg . electron cash . electron cash 3 Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Toast Ċ import Ġkotlinx . android . synt hetic . main . amount _ box .* Ċ import Ġjava . lang . RuntimeException ĊĊ Ċ class ĠAmount Box ( val Ġdialog : ĠDialog ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfi at Enabled Ġ= Ġfi at Enabled () ĊĠĠĠ Ġprivate Ġvar Ġupdating Ġ= Ġfalse Ġ Ġ// ĠPrevent Ġinfinite Ġrecursion . ĊĠĠĠ Ġvar Ġlistener : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog . tv Unit . text Ġ= Ġunit Name ĊĠĠĠĠĠĠĠ Ġif Ġ( fi at Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . tv Fi at Unit . text Ġ= Ġformat Fi at Unit () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . tv Fi at Unit . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . et Fi at . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( et Ġin ĠlistOf ( dialog . et Amount , Ġdialog . et Fi at )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( updating ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fi at Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġet Other : ĠEditText ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformat Other : Ġ() Ġ-> ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( et ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . et Amount Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet Other Ġ= Ġdialog . et Fi at ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Other Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Fi at Amount ( amount ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . et Fi at Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet Other Ġ= Ġdialog . et Amount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Other Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġfi at ToS at osh is ( s . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( amount Ġ!= Ġnull ) Ġformat Sat osh is ( amount ) Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException (" Unknown Ġview ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdating Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet Other . setText ( format Other ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet Other . setSelection ( et Other . text . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠToast Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet Other . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdating Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ= Ġdialog . et Amount . setText ("") ĊĊĠĠĠ Ġ/** ĠWill Ġthrow ĠToast Exception Ġif Ġthe Ġtext Ġbox Ġis Ġempty Ġor Ġzero . Ġ*/ ĊĠĠĠ Ġvar Ġamount : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġto Sat osh is ( dialog . et Amount . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( amount Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNegative Ġamounts Ġshould Ġbe Ġblocked Ġby Ġinput Type , Ġand Ġzero Ġamounts Ġare ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinvalid Ġin Ġboth Ġthe ĠSend Ġand ĠRequest Ġdialog s . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠToast Exception ( R . string . Invalid _ amount , ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġamount ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( amount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . et Amount . setText ( format Sat osh is ( amount )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . et Amount . setSelection ( dialog . et Amount . text . length ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġis Editable : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġis Editable ( dialog . et Amount ) ĊĠĠĠĠĠĠĠ Ġset ( editable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( et Ġin ĠlistOf ( dialog . et Amount , Ġdialog . et Fi at )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Editable ( et , Ġeditable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠWe Ġdon 't Ġ< request Focus /> Ġin Ġthe Ġlayout Ġfile , Ġbecause Ġin Ġthe ĠSend Ġdialog , Ġinitial Ġfocus ĊĠĠĠĠ Ġ* Ġis Ġnormally Ġon Ġthe Ġaddress Ġbox . Ġ*/ ĊĠĠĠ Ġfun Ġrequest Focus () Ġ= Ġdialog . et Amount . request Focus () Ċ } Ċ