/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 - 2 0 2 0 ĠAnd ri us ĠBar uck is Ġwww . bar uck is . com Ġ| Ġk ript of ol io . app Ċ Ġ* Ċ Ġ* Ġ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 . bar uck is . k ript of ol io . ui . add search list Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġcom . bar uck is . k ript of ol io . R Ċ import Ġcom . bar uck is . k ript of ol io . utilities . non Empty Ċ import Ġcom . bar uck is . k ript of ol io . utilities . validate Ċ import Ġkotlinx . android . synt hetic . main . dialog _ add _ crypto _ amount . view .* Ċ Ċ /** Ċ Ġ* ĠUI Ġfor Ġadd Ġcrypto Ġcoins Ġscreen Ġdialog Ġwhere Ġyou Ġenter Ġamount Ġof Ġthe Ġcoins Ġthat Ġyou Ġhave . Ċ Ġ*/ Ċ class ĠCrypt oc urrency Amount Dialog Ġ: ĠDialog Fragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDIALOG _ CRYPTO CUR RE NCY _ AMOUNT _ TAG Ġ= Ġ" crypt oc urrency _ amount _ dialog " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ TITLE Ġ= Ġ" title " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ HINT Ġ= Ġ" hint " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ CONFIRM _ BUTTON Ġ= Ġ" confirm _ button " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ CANCEL _ BUTTON Ġ= Ġ" cancel _ button " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ ERROR Ġ= Ġ" error " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( title : ĠString , Ġhint : ĠString , Ġconfirm Button : ĠString , Ġcancel Button : ĠString , Ġerror : ĠString ): ĠCrypt oc urrency Amount Dialog Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠCrypt oc urrency Amount Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( EXTRA _ TITLE , Ġtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( EXTRA _ HINT , Ġhint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( EXTRA _ CONFIRM _ BUTTON , Ġconfirm Button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( EXTRA _ CANCEL _ BUTTON , Ġcancel Button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( EXTRA _ ERROR , Ġerror ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠUse Ġthis Ġinstance Ġof Ġthe Ġinterface Ġto Ġdeliver Ġaction Ġevents . ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġm Listener : ĠCrypt oc urrency Amount Dialog Listener ĊĊĠĠĠ Ġ/* ĠThe Ġactivity Ġthat Ġcreates Ġan Ġinstance Ġof Ġthis Ġdialog Ġfragment Ġmust ĊĠĠĠĠ Ġ* Ġimplement Ġthis Ġinterface Ġin Ġorder Ġto Ġreceive Ġevent Ġcallbacks . ĊĠĠĠĠ Ġ* ĠEach Ġmethod Ġpasses Ġthe ĠDialog Fragment Ġin Ġcase Ġthe Ġhost Ġneeds Ġto Ġquery Ġit . Ġ*/ ĊĠĠĠ Ġinterface ĠCrypt oc urrency Amount Dialog Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Crypt oc urrency Amount Dialog Confirm Button Click ( crypt oc urrency Amount Dialog : ĠCrypt oc urrency Amount Dialog ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Crypt oc urrency Amount Dialog Cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġedit Text Amount : ĠEditText ĊĠĠĠ Ġprivate Ġvar Ġvalue Amount : ĠDouble Ġ= Ġ 0 . 0 ĊĊĊĠĠĠ Ġ// ĠOverride Ġthe ĠFragment . on Attach () Ġmethod Ġto Ġinstantiate Ġthe ĠCrypt oc urrency Amount Dialog Listener . ĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġ// ĠVerify Ġthat Ġthe Ġhost Ġactivity Ġimplements Ġthe Ġcallback Ġinterface . ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInstantiate Ġthe ĠCrypt oc urrency Amount Dialog Listener Ġso Ġwe Ġcan Ġsend Ġevents Ġto Ġthe Ġhost . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener Ġ= Ġcontext Ġas ĠCrypt oc urrency Amount Dialog Listener ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġactivity Ġdoesn 't Ġimplement Ġthe Ġinterface , Ġthrow Ġexception . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠClass CastException (( context . toString () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġmust Ġimplement ĠCrypt oc urrency Amount Dialog Listener .")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Inf late Params ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġarguments ?. getString ( EXTRA _ TITLE ) ĊĠĠĠĠĠĠĠ Ġval Ġhint Ġ= Ġarguments ?. getString ( EXTRA _ HINT ) ĊĠĠĠĠĠĠĠ Ġval Ġconfirm Button Ġ= Ġarguments ?. getString ( EXTRA _ CONFIRM _ BUTTON ) ĊĠĠĠĠĠĠĠ Ġval Ġcancel Button Ġ= Ġarguments ?. getString ( EXTRA _ CANCEL _ BUTTON ) ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġarguments ?. getString ( EXTRA _ ERROR ) Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġa Ġtitle Ġfor Ġalert Ġdialog . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setTitle ( title ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPass Ġnull Ġas Ġthe Ġparent Ġview Ġbecause Ġits Ġgoing Ġin Ġthe Ġdialog Ġlayout . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog View Ġ= Ġit . layout Inflater . inflate ( R . layout . dialog _ add _ crypto _ amount , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġhint Ġfor Ġedit Ġtext . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog View . edit _ text _ amount . hint Ġ= Ġhint ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġlayout Ġfor Ġthe Ġdialog . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setView ( dialog View ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Cancel able ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġalert Ġdialog Ġpositive / ok Ġbutton . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Positive Button ( confirm Button ) Ġ{ Ġ_, Ġ_ Ġ-> Ġ} Ġ// ĠWe Ġwill Ġsetup Ġlistener Ġlater . ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġalert Ġdialog Ġneutral / cancel Ġbutton . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Neutral Button ( cancel Button ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSend Ġthe Ġneutral Ġbutton Ġevent Ġback Ġto Ġthe Ġhost Ġactivity . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener . on Crypt oc urrency Amount Dialog Cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Amount Ġ= Ġdialog View . edit _ text _ amount ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġthe ĠAlertDialog Ġusing Ġbuilder Ġobject . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠIllegalStateException (" Activity Ġcannot Ġbe Ġnull !") ĊĊĠĠĠĠĠĠĠ Ġ// ĠShow Ġkeyboard Ġfor Ġamount Ġinput Ġwhen Ġdialog Ġis Ġcreated . ĊĠĠĠĠĠĠĠ Ġdialog . window ?. set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ VISIBLE ) ĊĊĠĠĠĠĠĠĠ Ġdialog . setOn Show Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton Positive Ġ= Ġdialog . get Button ( AlertDialog . BUTTON _ POSITIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Amount . non Empty ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġbutton Positive . isEnabled Ġ= Ġfalse Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġbutton Positive . isEnabled Ġ= Ġtrue Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Positive . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Validate And Confirm ( error )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSend Ġthe Ġpositive Ġbutton Ġevent Ġback Ġto Ġthe Ġhost Ġactivity . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener . on Crypt oc urrency Amount Dialog Confirm Button Click ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠDialog Fragment Ġown Ġthe ĠDialog . setOn Cancel Listener Ġcallback . ĠYou Ġmust Ġnot Ġset Ġit Ġyourself . ĊĠĠĠ Ġ// ĠTo Ġfind Ġout Ġabout Ġthis Ġevent , Ġwe Ġneed Ġto Ġoverride Ġon Cancel . ĊĠĠĠ Ġoverride Ġfun Ġon Cancel ( dialog : ĠDialog Interface ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cancel ( dialog ) ĊĠĠĠĠĠĠĠ Ġm Listener . on Crypt oc urrency Amount Dialog Cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠWe Ġcheck Ġif Ġuser Ġentered Ġamount Ġnumber Ġis Ġvalid Ġbefore Ġconfirmation Ġactions . ĊĠĠĠ Ġprivate Ġfun Ġon Validate And Confirm ( error Msg : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġedit Text Amount . validate ({ Ġtext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Amount Ġ= Ġtext . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġerror Msg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠGet Ġthe Ġamount Ġwhich Ġuser Ġentered . ĊĠĠĠ Ġfun Ġget Amount (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue Amount ĊĠĠĠ Ġ} Ċ Ċ }