/* Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠAv in aba ĠD al al Ġ< d 9 7 . av in aba @ gmail . com > Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . cor ph ish . widgets . k tx . dialogs Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . annotation . Color Res Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġandroidx . core . widget . do On TextChanged Ċ import Ġcom . cor ph ish . widgets . k tx . R Ċ import Ġcom . google . android . material . button . Material Button Ċ import Ġcom . google . android . material . text field . TextInput EditText Ċ import Ġcom . google . android . material . text field . TextInput Layout Ċ Ċ class ĠEditText AlertDialog ( context : ĠContext ) Ġ: ĠBase AlertDialog ( context ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTitle Ġof Ġthis Ġdialog . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtitle String Ġ= Ġ"" ĊĊĠĠĠ Ġ@ String Res ĊĠĠĠ Ġvar Ġtitle Res Id Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMessage Ġof Ġthis Ġdialog . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġmessage String Ġ= Ġ"" ĊĊĠĠĠ Ġ@ String Res ĊĠĠĠ Ġvar Ġmessage Res Id Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPositive Ġbutton Ġhandling . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġpositive Button Properties Ġ= ĠButton Properties () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNegative Ġbutton Ġhandling . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġnegative Button Properties Ġ= ĠButton Properties () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNe utral Ġbutton Ġhandling . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġneutral Button Properties Ġ= ĠButton Properties () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEdit Ġtext Ġhandler ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġedit Text Initial Text Ġ= Ġ"" ĊĠĠĠ Ġvar Ġedit Text Handling : Ġ( TextInput Layout , ĠCharSequence ?, ĠInt , ĠInt , ĠInt ) Ġ-> ĠUnit Ġ= ĊĠĠĠĠĠĠĠ Ġ{ Ġ_, Ġ_, Ġ_, Ġ_, Ġ_ Ġ-> Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġspecific Ġview ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . layout _ alert _ edit _ text , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠHook Ġviews ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġview . findViewById < TextView >( R . id . alert Title ) ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġview . findViewById < TextView >( R . id . alert Message ) ĊĠĠĠĠĠĠĠ Ġval Ġpositive Button Ġ= Ġview . findViewById < Material Button >( R . id . positive Button ) ĊĠĠĠĠĠĠĠ Ġval Ġnegative Button Ġ= Ġview . findViewById < Material Button >( R . id . negative Button ) ĊĠĠĠĠĠĠĠ Ġval Ġneutral Button Ġ= Ġview . findViewById < Material Button >( R . id . neutral Button ) ĊĠĠĠĠĠĠĠ Ġval Ġedit Text Layout Ġ= Ġview . findViewById < TextInput Layout >( R . id . edit Text Layout ) ĊĠĠĠĠĠĠĠ Ġval Ġedit Text Ġ= Ġview . findViewById < TextInput EditText >( R . id . edit Text ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( title Res Id Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġtitle String ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . setText ( title Res Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( message Res Id Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . text Ġ= Ġmessage String ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . setText ( message Res Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( positive Button Properties . button Title . isNotEmpty () Ġ|| Ġpositive Button Properties . button Title Res Id Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( positive Button Properties . button Title Res Id Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button . text Ġ= Ġpositive Button Properties . button Title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button . setText ( positive Button Properties . button Title Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button Properties . button Action ( edit Text Layout , Ġedit Text . editable Text . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( positive Button Properties . dismiss Dialog On Button Click ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( positive Button Properties . button Icon Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button . setIcon Resource ( positive Button Properties . button Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( positive Button Properties . use Custom Button Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġget Button Color From Property ( positive Button Properties ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button . set BackgroundColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( negative Button Properties . button Title . isNotEmpty () Ġ|| Ġnegative Button Properties . button Title Res Id Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( negative Button Properties . button Title Res Id Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button . text Ġ= Ġnegative Button Properties . button Title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button . setText ( negative Button Properties . button Title Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button Properties . button Action ( edit Text Layout , Ġedit Text . editable Text . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( negative Button Properties . dismiss Dialog On Button Click ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( negative Button Properties . button Icon Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button . setIcon Resource ( negative Button Properties . button Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( negative Button Properties . use Custom Button Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġget Button Color From Property ( negative Button Properties ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button . stroke Color Ġ= ĠColor State List . valueOf ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button . setTextColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button . icon Tint Ġ= ĠColor State List . valueOf ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( neutral Button Properties . button Title . isNotEmpty () Ġ|| Ġneutral Button Properties . button Title Res Id Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneutral Button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( neutral Button Properties . button Title Res Id Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneutral Button . text Ġ= Ġneutral Button Properties . button Title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneutral Button . setText ( neutral Button Properties . button Title Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġneutral Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneutral Button Properties . button Action ( edit Text Layout , Ġedit Text . editable Text . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( neutral Button Properties . dismiss Dialog On Button Click ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( neutral Button Properties . button Icon Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneutral Button . setIcon Resource ( neutral Button Properties . button Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( neutral Button Properties . use Custom Button Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġget Button Color From Property ( neutral Button Properties ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneutral Button . set BackgroundColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( edit Text Initial Text . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . setText ( edit Text Initial Text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġedit Text . do On TextChanged Ġ{ Ġtext , Ġstart , Ġbefore , Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Handling ( edit Text Layout , Ġtext , Ġstart , Ġbefore , Ġcount ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . content View Ġ= Ġview ĊĊĠĠĠĠĠĠĠ Ġsuper . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġbutton Ġcolor Ġfrom Ġbutton Ġproperties . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbutton Properties ĠButton ĠProperties . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Button Color From Property ( button Properties : ĠButton Properties ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( button Properties . button Color Res Id Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( button Properties . button Color Ġ== ĠInt . MIN _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . parse Color ( button Properties . button Color Hex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Properties . button Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResources Compat . getColor ( context . resources , Ġbutton Properties . button Color Res Id , Ġcontext . theme ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠButton Ġproperties Ġdata Ġclass . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠButton Properties ( ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠButton Ġtitle . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġbutton Title : ĠString Ġ= Ġ"", ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠButton Ġtitle Ġresource Ġid . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġpreferred Ġover Ġstring . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ String Res Ġval Ġbutton Title Res Id : ĠInt Ġ= Ġ 0 , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAction Ġto Ġbe Ġperformed Ġwhen Ġthis Ġbutton Ġis Ġclicked . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġbutton Action : Ġ( TextInput Layout , ĠString ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġ}, ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠBehavior Ġwhich Ġdefines Ġwhether Ġdialog Ġis Ġdis missed ĊĠĠĠĠĠĠĠĠ Ġ* Ġwhen Ġthis Ġbutton Ġis Ġclicked . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġdismiss Dialog On Button Click : ĠBoolean Ġ= Ġfalse , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠButton Ġicon . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġval Ġbutton Icon : ĠInt Ġ= Ġ 0 , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠBoolean Ġindicating Ġwhether Ġcustom Ġbutton Ġcolor ĊĠĠĠĠĠĠĠĠ Ġ* Ġmust Ġbe Ġused Ġor Ġnot . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġuse Custom Button Color : ĠBoolean Ġ= Ġfalse , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠColor Ġresource Ġid Ġfor Ġbutton Ġcolor . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġpreferred Ġover Ġthe Ġrest Ġ 2 Ġcolor Ġproperties . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Color Res Ġval Ġbutton Color Res Id : ĠInt Ġ= Ġ 0 , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠColor Ġinteger Ġvalue Ġfor Ġbutton Ġcolor . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġis Ġpreferred Ġover Ġhex Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Color Int Ġval Ġbutton Color : ĠInt Ġ= ĠInt . MIN _ VALUE , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠButton Ġc cc Ġhex Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġbutton Color Hex : ĠString Ġ= Ġ"# 0 0 0 0 0 0 " ĊĠĠĠ Ġ) Ċ }