package Ġcom . pal atin . pretty dialog Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget .* Ċ import Ġcom . google . android . material . text field . TextInput Layout Ċ import Ġcom . pal atin . pretty dialog . ext . Dialog Button Callback Ċ import Ġkotlinx . android . synt hetic . main . pretty _ dialog .* ĊĊĊ Ċ open Ġclass ĠPretty Dialog ( context : ĠContext , Ġview Delegate : ĠView Delegate Ġ= ĠPretty Dialog View Delegate ()) Ġ: ĠDialog ( context , ĠR . style . Pretty Dialog ) Ġ{ ĊĊĠĠĠ Ġvar Ġview Delegate : ĠView Delegate Ġ= Ġview Delegate ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġrender () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġtitle : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġcallback : ĠDialog Button Callback ? Ġ= Ġnull ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( LayoutInflater . from ( context ). inflate ( R . layout . pretty _ dialog , Ġnull )) ĊĠĠĠĠĠĠĠ Ġrender () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender () Ġ{ ĊĠĠĠĠĠĠĠ Ġview Delegate . theme ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . set Theme ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Background () ĊĠĠĠĠĠĠĠ Ġset Header () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Background () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . view Delegate . background ( this )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow ?. setBackground Drawable ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Header () Ġ{ ĊĠĠĠĠĠĠĠ Ġview Delegate . header ( this , Ġheader ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Tag ( view : ĠView , Ġtag : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtag ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . tag Ġ= Ġtag ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinput ( hint : ĠString ? Ġ= Ġnull , Ġt : ĠText Watcher , Ġtag : ĠAny ? Ġ= Ġnull ) Ġ: ĠPretty Dialog Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġet Ġ= Ġview Delegate . input ( this , Ġcontent , Ġhint ) ĊĠĠĠĠĠĠĠ Ġet . edit Text ?. add TextChanged Listener ( t ) ĊĠĠĠĠĠĠĠ Ġset Tag ( et , Ġtag ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġtitle ( title String : ĠString ) Ġ: ĠPretty Dialog Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this . title Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . title Ġ= Ġview Delegate . title ( this , Ġheader ) ĊĠĠĠĠĠĠĠ Ġthis . title !!. text Ġ= Ġtitle String ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġfun Ġmessage ( message : ĠString , Ġtag : ĠAny ? Ġ= Ġnull ) Ġ: ĠPretty Dialog Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtv Ġ= Ġview Delegate . message ( this , Ġcontent , Ġmessage ) ĊĠĠĠĠĠĠĠ Ġset Tag ( tv , Ġtag ) ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġfun Ġimage ( drawable : ĠDrawable , Ġwidth : ĠInt ? Ġ= Ġnull , Ġheight : ĠInt ? Ġ= Ġnull , Ġtag : ĠAny ? Ġ= Ġnull ) Ġ: ĠPretty Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġview Delegate . image ( this , Ġcontent , Ġdrawable , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠ Ġset Tag ( image , Ġtag ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd View ( view : ĠView ) Ġ: ĠPretty Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent . addView ( view ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ContentView () Ġ: ĠView Ġ= Ġcontent ĊĊĠĠĠ Ġfun Ġget Root View () Ġ: ĠView Ġ= Ġroot ĊĊĠĠĠ Ġfun Ġget Views By Tag ( tag : ĠAny ): ĠArray < View > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġviews Ġ= ĠArrayList < View >() ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġcontent . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġcontent . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( v . tag Ġ== Ġtag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviews . add ( v ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġviews . to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcan Be Canceled ( flag : ĠBoolean ): ĠPretty Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġset Cancel able ( flag ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel On TO uch ( flag : ĠBoolean ): ĠPretty Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġset Canceled On Touch Outside ( flag ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġapply ( f : ĠPretty Dialog . () Ġ-> ĠUnit ): ĠPretty Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . f () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Buttons (): ĠPretty Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġl Buttons . removeAll Views () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġheader . removeAll Views () ĊĠĠĠĠĠĠĠ Ġcontent . removeAll Views () ĊĠĠĠĠĠĠĠ Ġl Buttons . removeAll Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġheader (): ĠFrame Layout Ġ= Ġheader ĊĊĊĊĠĠĠ Ġinterface ĠView Delegate Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġtheme (): ĠInt ? ĊĠĠĠĠĠĠĠ Ġfun Ġheader ( dialog : ĠPretty Dialog , Ġheader : ĠFrame Layout ) ĊĠĠĠĠĠĠĠ Ġfun Ġbackground ( dialog : ĠPretty Dialog ): ĠDrawable ? ĊĠĠĠĠĠĠĠ Ġfun Ġtitle ( dialog : ĠPretty Dialog , Ġcontainer : ĠFrame Layout ): ĠTextView ĊĠĠĠĠĠĠĠ Ġfun Ġmessage ( dialog : ĠPretty Dialog , Ġcontainer : ĠLinearLayout , Ġmessage : ĠString ): ĠView ĊĠĠĠĠĠĠĠ Ġfun Ġbutton ( dialog : ĠPretty Dialog , Ġcontainer : ĠLinearLayout , Ġtitle : ĠString , Ġtype : ĠButton Type ): ĠButton ĊĠĠĠĠĠĠĠ Ġfun Ġimage ( dialog : ĠPretty Dialog , Ġcontainer : ĠLinearLayout , Ġdrawable : ĠDrawable , Ġwidth : ĠInt ?, Ġheight : ĠInt ?): ĠView ĊĠĠĠĠĠĠĠ Ġfun Ġinput ( dialog : ĠPretty Dialog , Ġcontainer : ĠLinearLayout , Ġhint : ĠString ?): ĠText Input Layout ĊĠĠĠĠĠĠĠ Ġfun Ġsingle Choice ( dialog : ĠPretty Dialog , Ġcontainer : ĠLinearLayout , Ġtitles : ĠArray < String >, Ġchecked : ĠInt ): ĠRadio Group ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠButton Type Ġ{ ĊĠĠĠĠĠĠĠ ĠNE UT R AL , ĊĠĠĠĠĠĠĠ ĠPOS ITIVE , ĊĠĠĠĠĠĠĠ ĠNE G ATIVE ĊĠĠĠ Ġ} Ċ }