package Ġcom . react native il ab library demo Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . view . View Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . Lifecycle Observer Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . On Lifecycle Event Ċ import Ġcom . react native il ab library demo . Const . DIALOG _ TIMER Ċ import Ġcom . react native il ab library demo . Const . TIMER _ UNIT Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ Ċ // Ġ 0 : Ġ æĹł å¼¹ çªĹ , Ġ 1 : Ġæľī å¼¹ çªĹ Ċ val Ġis Has Dialog Ġ= ĠAtomicInteger ( 0 ) Ċ var Ġno Button Dialog : ĠDialog ? Ġ= Ġnull Ċ Ċ const Ġval ĠTITLE Ġ= Ġ" æłĩé¢ĺ " Ċ const Ġval ĠMESSAGE Ġ= Ġ" æ¶Īæģ¯ " Ċ const Ġval ĠH INT Ġ= Ġ" æıĲç¤º " Ċ const Ġval ĠBACK Ġ= Ġ" è¿ĶåĽŀ é¦ĸé¡µ " Ċ const Ġval ĠCON FIRM Ġ= Ġ" æĪĳ çŁ¥éģĵ äºĨ " Ċ const Ġval ĠDIALOG _ WIDTH Ġ= Ġ 6 2 8 Ċ const Ġval ĠDIALOG _ HEIGHT Ġ= Ġ 4 6 4 Ċ Ċ fun ĠActivity . show Two Button Dialog ( ĊĠĠĠ Ġowner : ĠLifecycle Owner , ĊĠĠĠ Ġtime : ĠLong Ġ= ĠDIALOG _ TIMER Ġ* ĠTIMER _ UNIT , ĊĠĠĠ Ġphoto : ĠInt Ġ= ĠR . drawable . custom _ error , ĊĠĠĠ Ġphoto Visible : ĠInt Ġ= ĠView . VISIBLE , ĊĠĠĠ Ġtitle : ĠString Ġ= ĠTITLE , ĊĠĠĠ Ġtitle Visible : ĠInt Ġ= ĠView . VISIBLE , ĊĠĠĠ Ġmessage : ĠString Ġ= ĠMESSAGE , ĊĠĠĠ Ġmessage Visible : ĠInt Ġ= ĠView . VISIBLE , ĊĠĠĠ Ġhint : ĠString Ġ= ĠH INT , ĊĠĠĠ Ġhint Visible : ĠInt Ġ= ĠView . VISIBLE , ĊĠĠĠ Ġtv Back : ĠString Ġ= ĠBACK , ĊĠĠĠ Ġtv Confirm : ĠString Ġ= ĠCON FIRM , ĊĠĠĠ Ġon Back Listener : Ġ(() Ġ-> ĠUnit ) Ġ= Ġ{}, ĊĠĠĠ Ġon Confirm : Ġ(() Ġ-> ĠUnit ) Ġ= Ġon Back Listener , ĊĠĠĠ Ġon Timeout : Ġ(() Ġ-> ĠUnit ) Ġ= Ġon Back Listener , ĊĠĠĠ Ġdialog Width : ĠInt Ġ= ĠDIALOG _ WIDTH , ĊĠĠĠ Ġdialog Height : ĠInt Ġ= ĠDIALOG _ HEIGHT Ċ ) Ġ{ ĊĠĠĠ Ġif Ġ(! is Finish ing ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Has Dialog . get () Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Has Dialog . set ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTwo Button Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġtime , Ġphoto , Ġphoto Visible , Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Visible , Ġmessage , Ġmessage Visible , Ġhint , Ġhint Visible , Ġtv Back , Ġtv Confirm , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Listener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Has Dialog . set ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Listener . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Confirm Listener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Has Dialog . set ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Confirm . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Timeout Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Has Dialog . set ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Timeout . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Width Ġ= Ġdialog Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Height Ġ= Ġdialog Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). lifecycle Owner ( owner ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ æīĵå¼Ģ éĶĻè¯¯ å¯¹ è¯Ŀ æ¡Ĩ Ċ Ġ*/ Ċ fun ĠActivity . show Error Dialog ( owner : ĠLifecycle Owner , Ġmsg : ĠString ) Ġ{ ĊĠĠĠ Ġif Ġ(! is Finish ing ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Has Dialog . get () Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Has Dialog . set ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOne Button Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Ġ= ĠR . drawable . custom _ error , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Visible Ġ= ĠView . GONE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġif Ġ( msg . length Ġ> Ġ 2 0 ) Ġmsg . substring ( 0 , Ġ 1 9 ) Ġelse Ġmsg , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Confirm Listener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Has Dialog . set ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Timeout Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Has Dialog . set ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). lifecycle Owner ( owner ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠActivity . show No Button Dialog ( ĊĠĠĠ Ġowner : ĠLifecycle Owner , ĊĠĠĠ Ġtitle : ĠString Ġ= ĠTITLE , ĊĠĠĠ Ġmessage : ĠString Ġ= ĠMESSAGE , ĊĠĠĠ Ġmessage Visible : ĠInt Ġ= ĠView . VISIBLE , ĊĠĠĠ Ġphoto : ĠInt Ġ= ĠR . drawable . custom _ error , ĊĠĠĠ Ġtime : ĠLong Ġ= ĠDIALOG _ TIMER Ġ* ĠTIMER _ UNIT , ĊĠĠĠ Ġon Confirm Listener : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġon Timeout : Ġ() Ġ-> ĠUnit Ġ= Ġon Confirm Listener Ċ ) Ġ{ ĊĠĠĠ Ġif Ġ(! is Finish ing ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Has Dialog . get () Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Has Dialog . set ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġno Button Dialog Ġ= ĠOne Button Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġmessage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Visible Ġ= Ġmessage Visible , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Ġ= Ġphoto , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= Ġtime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Confirm Listener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Has Dialog . set ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Confirm Listener . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Timeout Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Has Dialog . set ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Timeout . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Button Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). lifecycle Owner ( owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġno Button Dialog ?. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġhide No Button Dialog () Ġ{ ĊĠĠĠ Ġif Ġ( is Has Dialog . get () Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġno Button Dialog ?. hide () ĊĠĠĠĠĠĠĠ Ġno Button Dialog Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġis Has Dialog . set ( 0 ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġ< T Ġ: ĠDialog > ĠT . lifecycle Owner ( owner : ĠLifecycle Owner ? Ġ= Ġnull ): ĠT Ġ{ ĊĠĠĠ Ġval Ġobserver Ġ= ĠDialog Lifecycle Observer (:: dismiss ) ĊĠĠĠ Ġval Ġlifecycle Owner Ġ= Ġowner Ġ?: Ġ( context Ġas ? ĠLifecycle Owner ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ context Ġis Ġnot Ġa ĠLifecycle Owner ." ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġlifecycle Owner . lifecycle . add Observer ( observer ) ĊĠĠĠ Ġreturn Ġthis Ċ } Ċ Ċ internal Ġclass ĠDialog Lifecycle Observer ( private Ġval Ġdismiss : Ġ() Ġ-> ĠUnit ) Ġ: ĠLifecycle Observer Ġ{ ĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ STOP ) ĊĠĠĠ Ġfun Ġon Stop () Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġis Has Dialog . set ( 0 ) ĊĠĠĠ Ġ} Ċ } Ċ