/** Ċ Ġ* ĠSPDX - License - Identifier : ĠI SC Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 4 - 2 0 1 9 ĠBit mark . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġan ĠI SC Ċ Ġ* Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ package Ġcom . bit mark . standard mobile . feature Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompat Dialog Ċ import Ġjava . util .* Ċ Ċ class ĠDialog Controller ( private Ġval Ġactivity : ĠActivity ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġqueue Ġ= ĠArray Deque < AppCompat Dialog >() ĊĊĠĠĠ Ġvar Ġshowing Dialog : ĠAppCompat Dialog ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġfun Ġis Showing () Ġ= Ġshowing Dialog Ġ!= Ġnull ĊĊĠĠĠ Ġfun Ġshow ( dialog : ĠAppCompat Dialog ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing () Ġ&& Ġdialog Ġ!= Ġshowing Dialog ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . add ( dialog ) ĊĠĠĠĠĠĠĠ Ġelse Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdismiss ( dialog : ĠAppCompat Dialog , Ġdismiss Listener : Ġ() Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog . setOn Dismiss Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Listener . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Next () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġalert ( ĊĠĠĠĠĠĠĠ Ġtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġmessage : ĠString , ĊĠĠĠĠĠĠĠ Ġtext : ĠString Ġ= Ġactivity . getString ( android . R . string . ok ), ĊĠĠĠĠĠĠĠ Ġcancel able : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġclick Event : Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( activity ). setTitle ( title ). setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( text ) Ġ{ Ġd , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Event . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( cancel able ). create () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . add ( dialog ) ĊĠĠĠĠĠĠĠ Ġelse Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġalert ( ĊĠĠĠĠĠĠĠ Ġ@ String Res Ġtitle : ĠInt , Ġ@ String Res Ġmessage : ĠInt , Ġ@ String Res Ġtext : ĠInt Ġ= Ġandroid . R . string . ok , ĊĠĠĠĠĠĠĠ Ġcancel able : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġclick Event : Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( activity ). setTitle ( title ). setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( text ) Ġ{ Ġd , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Event . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( cancel able ). create () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . add ( dialog ) ĊĠĠĠĠĠĠĠ Ġelse Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfirm ( ĊĠĠĠĠĠĠĠ Ġtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġmessage : ĠString , ĊĠĠĠĠĠĠĠ Ġcancel able : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġpositive : ĠString Ġ= Ġactivity . getString ( android . R . string . ok ), ĊĠĠĠĠĠĠĠ Ġpositive Event : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠ Ġnegative : ĠString Ġ= Ġactivity . getString ( android . R . string . cancel ), ĊĠĠĠĠĠĠĠ Ġnegative Event : Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( activity ). setTitle ( title ). setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( positive ) Ġ{ Ġd , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Event . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. set Negative Button ( negative ) Ġ{ Ġd , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Event . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Queue ing ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġqueue . first ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( cancel able ). create () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . add ( dialog ) ĊĠĠĠĠĠĠĠ Ġelse Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfirm ( ĊĠĠĠĠĠĠĠ Ġ@ String Res Ġtitle : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ String Res Ġmessage : ĠInt , ĊĠĠĠĠĠĠĠ Ġcancel able : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġ@ String Res Ġpositive : ĠInt Ġ= Ġandroid . R . string . ok , ĊĠĠĠĠĠĠĠ Ġpositive Event : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠ Ġ@ String Res Ġnegative : ĠInt Ġ= Ġandroid . R . string . cancel , ĊĠĠĠĠĠĠĠ Ġnegative Event : Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( activity ). setTitle ( title ). setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( positive ) Ġ{ Ġd , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Event . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. set Negative Button ( negative ) Ġ{ Ġd , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Event . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( cancel able ). create () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . add ( dialog ) ĊĠĠĠĠĠĠĠ Ġelse Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdismiss Showing () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing ()) Ġshowing Dialog ?. dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdismiss () Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss Showing () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( queue . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . poll (). dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Queue ing () Ġ= Ġ! queue . isEmpty () ĊĊĠĠĠ Ġprivate Ġfun Ġshow Next () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Queue ing ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġqueue . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }