package Ġcom . example . my library . sections . orders Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Auto Complete TextView Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . widget . AppCompat Auto Complete TextView Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġcom . example . my library . R Ċ import Ġcom . example . my library . d tos . Order Line Item Dto Ċ Ċ /** Ċ Ġ* ĠUsed Ġto Ġshow Ġform Ġto Ġadd Ġline Ġitem Ġfragment Ġas Ġa Ġdialog Ċ Ġ* Ċ Ġ* Ġ@ property Ġparent Ġthe ĠAdd Order Ġfragment Ġwhich Ġis Ġthe Ġparent Ċ Ġ*/ Ċ class ĠOrder Item Dialog ( val Ġparent : ĠAdd Order ) Ġ: ĠDialog Fragment () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġadd View : ĠView ĊĠĠĠ Ġprivate Ġvar Ġbook IS B Ns : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġvar Ġbook Names : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġvar Ġbook Types : ĠMutable List < Int > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġlayout Ġinflater ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġrequire Activity (). layout Inflater ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View Ġ= Ġinflater . inflate ( R . layout . add _ order _ item _ dialog , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Books () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Item : ĠOrder Line Item Dto ? Ġ= Ġarguments ?. get Parcelable (" Line Item ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View . findViewById < TextView >( R . id . line Id Input ). text Ġ= Ġ" 0 " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line Item Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View . findViewById < TextView >( R . id . book Selector ). text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% s Ġ- Ġ% s ", Ġline Item . book . isbn , Ġline Item . book . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View . findViewById < TextView >( R . id . quantity Input ). text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Item . quantity . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View . findViewById < TextView >( R . id . total Cost Input ). text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Item . line Amount . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View . findViewById < TextView >( R . id . line Id Input ). text Ġ= Ġline Item . id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInf late Ġand Ġset Ġthe Ġlayout Ġfor Ġthe Ġdialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPass Ġnull Ġas Ġthe Ġparent Ġview Ġbecause Ġits Ġgoing Ġin Ġthe Ġdialog Ġlayout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setView ( addView ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel ) Ġ{ Ġdialog , Ġwhich Button Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġso Ġsomething , Ġor Ġnot Ġ- Ġdialog Ġwill Ġclose ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġbuilder . create () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . setOn Show Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġok Button Ġ= Ġdialog . get Button ( AlertDialog . BUTTON _ POSITIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġok Button . background Tint List Ġ= Ġresources . getColor State List ( R . color . color Primary , Ġresources . new Theme ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcancel Button Ġ= Ġdialog . get Button ( AlertDialog . BUTTON _ NEGATIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Button . background Tint List Ġ= Ġresources . getColor State List ( R . color . color Secondary , Ġresources . new Theme ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġok Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbook Selector Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View . findViewById < AppCompat Auto Complete TextView >( R . id . book Selector ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( book Selector . text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this . context , Ġ" Book Ġrequired ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbook Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . books For Orders [ book Names . indexOf ( book Selector . text . toString ()) ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquantity Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View . findViewById < TextView >( R . id . quantity Input ). text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( quantity . isEmpty () Ġ|| Ġquantity . toInt () Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this . context , Ġ" Quantity Ġrequired ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcost Ġ= Ġadd View . findViewById < TextView >( R . id . total Cost Input ). text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cost . isEmpty () Ġ|| Ġcost . toDouble () Ġ< Ġ 0 . 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this . context , Ġ" Cost Ġrequired ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Id Ġ= Ġadd View . findViewById < TextView >( R . id . line Id Input ). text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated Line Item Ġ= ĠOrder Line Item Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbook Ġ= Ġbook , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquantity Ġ= Ġquantity . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Amount Ġ= Ġcost . toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġline Id . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠorderId Ġ= Ġparent . orderId ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . add Line Item ( updated Line Item ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠIllegalStateException (" Activity Ġcannot Ġbe Ġnull ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUsed Ġto Ġpopulate Ġthe Ġauto Ġcomplete Ġtext Ġview Ġfor Ġbooks ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Books () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( book Ġin Ġparent . books For Orders ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook Names . add ( book . isbn Ġ+ Ġ" Ġ- Ġ" Ġ+ Ġbook . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook IS B Ns . add ( book . isbn ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook Types . add ( book . type Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbook Picker Ġ= Ġadd View . findViewById < Auto Complete TextView >( R . id . book Selector ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbook Adapter : ĠArray Adapter < String > Ġ= ĠArray Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . context Ġas ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . layout . simple _ spinner _ item , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . book Names ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbook Picker . setAdapter ( book Adapter ) ĊĠĠĠ Ġ} Ċ }