package Ġcom . z hy ea . b amboo . general Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . graphics . PixelFormat . OP A QUE Ċ import Ġandroid . graphics . PixelFormat . TRANSL UC ENT Ċ import Ġandroid . view .* Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . ViewGroup . LayoutParams . MATCH _ PARENT Ċ import Ġandroid . view . WindowManager . LayoutParams . FLAG _ NOT _ TO UCH ABLE Ċ import Ġcom . z hy ea . b amboo . R Ċ import Ġcom . z hy ea . b amboo . reader . B amboo App Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . util .* ĊĊ Ċ /** Ċ Ġ* Ġer Ċ Ġ*/ Ċ open Ġclass ĠZ y Dialog ( context : ĠContext , Ġreset Window : ĠBoolean , Ġclear Flags : ĠBoolean ) Ġ: ĊĠĠĠ ĠDialog ( context , ĠR . style . App Theme ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġd ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġdismiss Listener : ĠDialog Interface . On Dismiss Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġb ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġlayout : ĠZ y Layout ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġwindow : ĠWindow ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( clear Flags ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Ġ= Ġget Window () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow !!. clear Flags ( WindowManager . LayoutParams . ANIM ATION _ CHANGED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( format Ġin ĠTRAN SL UC ENT .. OP A QUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! reset Window ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow !!. set Format ( format ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Window () !!. add Flags ( FLAG _ NOT _ TO UCH ABLE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġparam Boolean 1 : ĠBoolean , Ġclear Flags : ĠBoolean , Ġres Id : ĠInt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: Ġthis ( context , Ġparam Boolean 1 , Ġclear Flags ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow !!. setWindow Animations ( res Id ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġa ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġon User Interaction () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext Ġas ĠActivity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa . on User Interaction () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġc ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdialog (): ĠDialog ? Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( reference Ġin Ġshowing Dialog s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġreference . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġdialog ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġb ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġwindow (): ĠWindow ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog : ĠDialog ? Ġ= Ġdialog () ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġdialog ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdialog . window ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( context Ġas ĠActivity ). window ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġdismiss () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitr Ġ= Ġshowing Dialog s . iterator () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( itr . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġitr . next (). get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dialog Ġ=== Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitr . remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdismiss Listener ?. on Dismiss ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġact : ĠActivity ? Ġ= ĠB amboo App . get () !!. getCurrent Activity () ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġact Ġ&& Ġ! act . is Finish ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch KeyEvent ( key Event : ĠKeyEvent ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġon User Interaction () ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . dispatch KeyEvent ( key Event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch Touch Event ( motion Event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġon User Interaction () ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . dispatch Touch Event ( motion Event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch Track ball Event ( motion Event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġon User Interaction () ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . dispatch Track ball Event ( motion Event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetContentView ( res Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( LayoutInflater . from ( context ). inflate ( res Id , Ġnull )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetContentView ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( view , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetContentView ( param View : ĠView , Ġlayout Params : ĠViewGroup . LayoutParams ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġparams Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġthis . layout Ġ= ĠZ y Layout ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġtmp : ĠZ y Layout ? Ġ= Ġthis . layout ĊĠĠĠĠĠĠĠ Ġif Ġ( params Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= ĠViewGroup . LayoutParams ( MATCH _ PARENT , ĠMATCH _ PARENT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtmp !!. addView ( param View , Ġparams ) ĊĠĠĠĠĠĠĠ Ġsuper . set ContentView ( this . layout !! , ĠViewGroup . LayoutParams ( MATCH _ PARENT , ĠMATCH _ PARENT )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= Ġwindow !!. attributes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . width Ġ= ĠMATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . height Ġ= ĠMATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwin : ĠWindow ? Ġ= Ġwindow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( win Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . flags Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(- 0 x 1 1 Ġand Ġwin . attributes . flags ) Ġor Ġ( FLAG _ NOT _ TO UCH ABLE Ġand Ġattributes . flags ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow !!. attributes Ġ= Ġattributes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshowing Dialog s . add First ( Weak Reference < Dialog >( this )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġshowing Dialog s : ĠLinkedList < Weak Reference < Dialog >> Ġ= ĠLinkedList () ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdismiss Listener : ĠDialog Interface . On Dismiss Listener ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġdialog (): ĠDialog ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġthis . show ing Dialog s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġe . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġd ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġset ( listener : ĠDialog Interface . On Dismiss Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊ Ċ }