package Ġcom . phoenix . ks pt . ov t . theme _ one . adapters Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . TextView Ċ import Ġcom . phoenix . ks pt . keyboard . Keyboard Adapter Ċ import Ġcom . phoenix . ks pt . models . Key Btn Ċ import Ġcom . phoenix . ks pt . models . Key Btn . CRE ATOR . RE INIT Ċ import Ġcom . phoenix . ks pt . ov t . models . Custom Number Ċ import Ġcom . phoenix . ks pt . ov t . theme _ one . view holders . Conv Binary ViewHolder Ċ import Ġcom . phoenix . ks pt . ov t . theme _ one . view holders . Parent Number ViewHolder Ċ import Ġcom . phoenix . ks pt . ov t . theme _ one . view holders . Sum Binary ViewHolder Ċ import Ġcom . phoenix . ks pt . ov t . theme _ one . view holders . Sum Decimal ViewHolder Ċ import Ġcom . phoenix . ks pt . utils . CONVER S ATION Ċ import Ġcom . phoenix . ks pt . utils . FROM _ DIRECT _ TO _ DECIMAL Ċ import Ġcom . phoenix . ks pt . utils . PLUS Ċ import Ġcom . phoenix . ks pt . utils . TRANSFORM Ċ import Ġkotlinx . android . synt hetic . main . ov t _ 1 _ item _ conv _ number . view .* Ċ Ċ class ĠRecyclerView Numbers Adapter ( context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġitems : ĠArrayList < Custom Number >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlistener : ĠNumber Field Listener , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlaunch Mode : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlayout Manager : ĠRecyclerView . LayoutManager ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . Adapter < Parent Number ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġinflater : ĠLayoutInflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠ Ġprivate Ġvar Ġinvalidate Position : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġfocused Position : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġview Type Ġ= Ġ 2 ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen ( items [ position ]. type Operation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPL US Ġ-> Ġ 0 ĠĠ Ġ// Ġsum Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFROM _ DIRECT _ TO _ DECIMAL Ġ-> Ġ 1 Ġ// Ġand Ġfor Ġre cycler Ġview Ġfor Ġsum Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCON VER S ATION Ġ-> Ġ 2 ĠĠ Ġ// Ġfor Ġfragment Ġwith Ġconversation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĠĠ Ġ// ĠFROM _ IN VERSION _ TO _ DIRECT , ĠFROM _ AD DITION AL _ TO _ IN VERSION Ġ( sum Ġfragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( view Group : ĠViewGroup , Ġview Type : ĠInt ): ĠParent Number ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . view Type Ġ= Ġview Type ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠSum Binary ViewHolder . create ( in flater , Ġview Group , Ġlistener , Ġlaunch Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠSum Decimal ViewHolder . create ( in flater , Ġview Group , Ġlistener , Ġlaunch Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠConv Binary ViewHolder . create ( in flater , Ġview Group , Ġlistener , Ġlaunch Mode ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠParent Number ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( holder . item ViewType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ( holder Ġas ĠSum Binary ViewHolder ). bind To ( items [ position ], Ġis Last ( position ), Ġinvalidate Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ( holder Ġas ĠSum Decimal ViewHolder ). bind To ( items [ position ], Ġis Last ( position ), Ġinvalidate Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġholder . bind To ( items [ position ], Ġinvalidate Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Focused Position ( focused Position : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġthis . focused Position Ġ= Ġfocused Position ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Field ( custom Number : ĠCustom Number ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems . add ( custom Number ) ĊĠĠĠĠĠĠĠ Ġthis . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetLast (): ĠCustom Number Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems [ items . size Ġ- Ġ 1 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Last Field () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . remove At ( item Count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Last ( position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġitems . size Ġ- Ġ 1 Ġdown To Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( items [ i ]. is Plus Operation ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġposition Ġ== Ġi ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Number ( number String : ĠString , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ< Ġitems . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems [ position ]. number String Ġ= Ġnumber String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Position Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset ValidationError ( position : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( position Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġthis . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Data For Focused Item ( key Btn : ĠKey Btn , Ġcontext : ĠContext ){ ĊĠĠĠĠĠĠĠ Ġif ( focused Position Ġ== Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġlayout Manager . find View By Position ( focused Position ) ĊĠĠĠĠĠĠĠ Ġval Ġnumber Field Ġ= Ġview ?. item Number ?. number ĊĠĠĠĠĠĠĠ Ġval Ġcustom Number Ġ= ĠKeyboard Adapter . update Text Edit ( key Btn , Ġnumber Field , Ġcontext ) ĊĊĠĠĠĠĠĠĠ Ġitems [ focused Position ]. number String Ġ= Ġcustom Number . number String ĊĊĠĠĠĠĠĠĠ Ġ// Ġsave Ġstart Ġposition Ġin ĠEditText ĊĠĠĠĠĠĠĠ Ġif ( key Btn . type Button Ġ!= ĠRE INIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems [ focused Position ]. start Position In EditText Ġ= Ġcustom Number . start Position In EditText ĊĊĠĠĠĠĠĠĠ Ġif ( custom Number . comment Ġ!= Ġitems [ focused Position ]. comment Ġ&& ĠĠĠ Ġ// Ġif Ġcomment Ġis Ġchanged ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Type Ġ!= Ġ 2 Ġ&& ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġit Ġis Ġnot Ġconversation ĠviewHolder Ġ( Conversation Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! items [ focused Position ]. is Transform Operation ()) Ġ{ ĠĠĠĠĠĠĠ Ġ// Ġit Ġis Ġnot Ġtransform Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems [ focused Position ]. comment Ġ= Ġcustom Number . comment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . notify Item Changed ( focused Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠCallback Ġlistener Ġfor Ġkeyboard Ċ Ġ*/ Ċ interface ĠNumber Field Listener Ġ{ ĊĠĠĠ Ġvar Ġnotification : ĠString ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġerror / notification Ġstring ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChange Ġa Ġfocus ĊĠĠĠĠ Ġ* Ġ@ has Focus Ġ- Ġa Ġfocus Ġvalue ĊĠĠĠĠ Ġ* Ġ@ focused Position Ġ- Ġitem Ġposition Ġin Ġre cycler Ġview ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Focus ( has Focus : ĠBoolean , Ġfocused Position : ĠInt ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdate Ġitem Ġin Ġre cycler Ġview ĊĠĠĠĠ Ġ* Ġ@ number String Ġ- Ġbinary / decimal Ġcode Ġin ĠString Ġformat ĊĠĠĠĠ Ġ* Ġ@ position Ġ- Ġnumber Ġof Ġitem ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Item ( number String : ĠString , Ġposition : ĠInt ) Ċ }