package Ġbr . ue a . trans i rie . my pay . my pay template 2 . ui . home . Est o que Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . InputType Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġbr . ue a . trans i rie . my pay . my pay template 2 . R Ċ import Ġbr . ue a . trans i rie . my pay . my pay template 2 . model . Est o que Ċ import Ġbr . ue a . trans i rie . my pay . my pay template 2 . repository . room . App Database Ċ import Ġbr . ue a . trans i rie . my pay . my pay template 2 . utils . Mask Copy . Mask Br Mon etary Value Ċ import Ġcom . google . android . material . text field . TextInput EditText Ċ import Ġkotlinx . android . synt hetic . main . activity _ edit ar _ cliente .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ edit ar _ produto .* Ċ import Ġorg . jetbrains . ank o . An ko Async Context Ċ import Ġorg . jetbrains . ank o . do Async Ċ import Ġorg . jetbrains . ank o . ui Thread Ċ Ċ class ĠEdit ar Produto Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcod B arr as Produto : String ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠMan ter Est o que ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprod uto Pro cur ado : Est o que ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ edit ar _ produto ) ĊĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . color Primary Variant ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// final iza Ġa Ġactivity Ġe Ġvol ta Ġpr a Ġt ela Ġanterior ĊĠĠĠĠĠĠĠ Ġtoolbar 5 5 4 . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder : ĠAlertDialog . Builder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setMessage (" De se ja Ġs air Ġsem Ġsal var Ġsu as Ġalter aÃ§Ãµes ?") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Positive Button (" SA IR "){ dialog , _-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Negative Button (" CANCEL AR "){ dialog , _-> Ġdialog . cancel ()} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// res g ata Ġo ĠcÃ³digo Ġde Ġb arr as Ġdo Ġprod uto Ġque Ġfoi Ġselecion ado Ġna Ġt ela Ġanterior ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġintent ĊĠĠĠĠĠĠĠ Ġcod B arr as Produto Ġ= Ġintent . getString Extra (" cod B arr as _ produto "). toString () ĊĠĠĠĠĠĠĠ Ġmostrar Dados () ĊĊĠĠĠĠĠĠĠ Ġbt Editar Produto . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// nen h uma Ġmsg Ġde Ġerro ĠÃ© Ġemit ida Ġinicial mente ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Nome Produto Editar . error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Mar ca Produto Edit . error Ġ= null ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Valor Produto Editar . error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Valor Prod V enda Editar . error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Quant Prod Editar . error Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// minim iza Ġo Ġte cl ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . hide Keyboard () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( valid Dados ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmod ificar Dados () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġmostrar Dados (){ ĊĠĠĠĠĠĠĠ Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// local iza Ġo Ġprod uto Ġat rav Ã©s Ġdo ĠcÃ³digo Ġde Ġb arr as ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠMan ter Est o que ViewModel ( App Database . get Database ( this @ Editar Produto Activity )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprod uto Pro cur ado Ġ= ĠviewModel . est o que By Cod B arr as ( cod B arr as Produto ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Cod B arr as Edit . input Type Ġ= ĠInput Type . TYPE _ NULL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Cod B arr as Edit . setText ( produto Pro cur ado . codigo B arr as ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig ura Campo Pre co ( txt Valor In icial Produto Editar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig ura Campo Pre co ( txt Valor Prod V enda Editar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ex i be Ġas ĠinformaÃ§Ãµes Ġatual mente Ġcada str adas Ġdo Ġprod uto Ġselecion ado ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Nome Produto Editar . setText ( produto Pro cur ado . desc ricao ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġinicial Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( produto Pro cur ado . valor In icial . toString (). last (). toString () Ġ== Ġ" 0 "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinicial Ġ= Ġprod uto Pro cur ado . valor In icial . toString () Ġ+ Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinicial Ġ= Ġprod uto Pro cur ado . valor In icial . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Valor In icial Produto Editar . setText ( in icial ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġv enda Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( produto Pro cur ado . valor V enda . toString (). last (). toString () Ġ== Ġ" 0 "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv enda Ġ= Ġprod uto Pro cur ado . valor V enda . toString () Ġ+ Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv enda Ġ= Ġprod uto Pro cur ado . valor V enda . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Valor Prod V enda Editar . setText ( v enda ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Quant Prod Editar . setText ( produto Pro cur ado . quant idade . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Mar ca Produto Edit . setText ( produto Pro cur ado . mar ca ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġprivate Ġfun Ġconfig ura Campo Pre co ( pre co : ĠText Input EditText ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġpre co ?. setOn Focus ChangeListener Ġ{ Ġ_, Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Focus Ġ&& Ġpre co . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpre co . setText (" 0 , 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! has Focus Ġ&& Ġpre co . text . toString () Ġ== Ġ" 0 , 0 0 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpre co . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpre co ?. add TextChanged Listener ( Mask Br Mon etary Value . mask ( pre co )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġmod ificar Dados (){ ĊĠĠĠĠĠĠĠ Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalor In icial Ġ= Ġtxt Valor In icial Produto Editar . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (".", "" ). replace (", "," . "). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalor V enda Ġ= Ġtxt Valor Prod V enda Editar . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (".", "" ). replace (", "," . "). toFloat () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// mod ifica Ġas ĠinformaÃ§Ãµes Ġcada str adas Ġcom Ġa qu ilo Ġque Ġfoi Ġinser ido ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprod uto Pro cur ado . desc ricao Ġ= Ġtxt Nome Produto Editar . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprod uto Pro cur ado . valor In icial Ġ= Ġvalor In icial ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprod uto Pro cur ado . valor V enda Ġ= Ġvalor V enda ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprod uto Pro cur ado . quant idade Ġ= Ġtxt Quant Prod Editar . text . toString (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprod uto Pro cur ado . mar ca Ġ= Ġtxt Mar ca Produto Edit . text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// f az Ġa Ġatual izaÃ§Ã£o Ġno Ġbanco Ġde Ġdados ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Est o que ( produto Pro cur ado ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmod ificar Dados () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun ĠAn ko Async Context < Editar Produto Activity >. mod ificar Dados (){ ĊĠĠĠĠĠĠĠ Ġui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( this @ Editar Produto Activity , Ġ" Item Ġatual izado Ġcom Ġsu cesso !", Toast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . set Gravity ( Gravity . BOTTOM , 0 , 3 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ver ifica Ġse Ġos Ġcampos Ġest Ã£o Ġpre ench idos Ġe Ġse ĠnÃ£o Ġest iver em Ġmo stra Ġmsgs Ġde Ġerro ĊĠĠĠ Ġprivate Ġfun Ġvalid Dados (): Boolean { ĊĠĠĠĠĠĠĠ Ġval Ġdescricao Ġ= Ġtxt Nome Produto Editar . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġmar ca Ġ= Ġtxt Mar ca Produto Edit . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġvalor In icial Ġ= Ġtxt Valor In icial Produto Editar . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġvalor V enda Ġ= Ġtxt Valor Prod V enda Editar . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġquant idade Ġ= Ġtxt Quant Prod Editar . text . toString () ĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġif Ġ( desc ricao . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Nome Produto Editar . error Ġ= Ġ" Campo Ġob rig atÃ³rio ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( mar ca . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Mar ca Produto Edit . error Ġ= Ġ" Campo Ġob rig atÃ³rio ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( valor In icial . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Valor Produto Editar . error Ġ= Ġ" Campo Ġob rig atÃ³rio ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( valor V enda . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Valor Prod V enda Editar . error Ġ= Ġ" Campo Ġob rig atÃ³rio ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( quant idade . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Quant Prod Editar . error Ġ= Ġ" Campo Ġob rig atÃ³rio ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( x != Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun ĠView . hide Keyboard () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġinput Manager . hide Soft Input From Window ( window Token , Ġ 0 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠfunÃ§Ã£o Ġpara Ġquando Ġo Ġfo co Ġdos Ġedit Texts Ġmud are m , Ġo Ġte cl ado Ġse Ġre col her ĊĠĠĠ Ġoverride Ġfun Ġdispatch Touch Event ( ev : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Focus Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimm Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimm . hide Soft Input From Window ( current Focus !!. window Token , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . dispatch Touch Event ( ev ) ĊĠĠĠ Ġ} Ċ }