package Ġcom . pand ul ape ter . be agle . core . list . deleg ates Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġcom . pand ul ape ter . be agle . Be agle Core Ċ import Ġcom . pand ul ape ter . be agle . common . contracts . module . Cell Ċ import Ġcom . pand ul ape ter . be agle . core . R Ċ import Ġcom . pand ul ape ter . be agle . core . list . cells . Text Cell Ċ import Ġcom . pand ul ape ter . be agle . core . list . deleg ates . shared . Value Wrapper Module Delegate Ċ import Ġcom . pand ul ape ter . be agle . core . util . extension . apply Theme Ċ import Ġcom . pand ul ape ter . be agle . core . util . extension . text Ċ import Ġcom . pand ul ape ter . be agle . modules . TextInput Module Ċ import Ġcom . pand ul ape ter . be agle . utils . extensions . show Keyboard Ċ Ċ internal Ġclass ĠText Input Delegate Ġ: ĠValue Wrapper Module Delegate . String < TextInput Module >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Cells ( module : ĠText Input Module ): ĠList < Cell <* >> Ġ= Ġ( DialogInterface . OnClickListener Ġ{ Ġdialog , Ġbutton Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( button Ġ== ĠDialog Interface . BUTTON _ POSITIVE Ġ&& Ġ! module . are Real Time Updates Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset NewValue ( module , Ġ( dialog Ġas ĠAlertDialog ). findViewById < EditText >( R . id . be agle _ edit _ text )?. text ?. toString (). or Empty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠ Ġ}). let Ġ{ Ġon Dialog Button Pressed Ġ-> ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText Cell ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġmodule . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġif Ġ( module . should Require Confirmation Ġ&& Ġhas Pending Changes ( module )) Ġmodule . text ( get Ui Value ( module )). with Suffix ("* ") Ġelse Ġmodule . text ( get Ui Value ( module )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġmodule . isEnabled , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon ItemSelected Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBe agle Core . implementation . current Activity ?. apply Theme ()?. let Ġ{ Ġthe med Context Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( the med Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( R . layout . be agle _ view _ text _ input _ dialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( the med Context . text ( module . done Text ), Ġon Dialog Button Pressed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! module . are Real Time Updates Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Negative Button ( the med Context . text ( module . cancel Text ), Ġon Dialog Button Pressed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġset On Show Listener Ġ{ ĠfindViewById < EditText >( R . id . be agle _ edit _ text )?. initialize ( this , Ġmodule ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset NewValue ( module : ĠText Input Module , ĠnewValue : Ġkotlin . String ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( module . validator ( newValue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Ui Value ( module , ĠnewValue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠEditText . initialize ( dialog : ĠDialog , Ġmodule : ĠText Input Module ) Ġ{ ĊĠĠĠĠĠĠĠ ĠgetCurrent Value ( module ). let Ġ{ Ġcurrent Value Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Text ( current Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Selection ( current Value . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Editor ActionListener Ġ{ Ġ_, Ġaction Id , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ DONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! module . are Real Time Updates Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset NewValue ( module , Ġtext ?. toString (). or Empty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( module . are Real Time Updates Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset NewValue ( module , Ġs ?. toString (). or Empty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ= ĠUnit ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ= ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }