package Ġexample . j ll arr az . com . passport reader . ui . dialogs Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup . LayoutParams . MATCH _ PARENT Ċ import Ġandroid . view . ViewGroup . LayoutParams . WRAP _ CONTENT Ċ Ċ import Ġandroid . view . Window Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Relative Layout Ċ import Ġandroid . widget . TextView Ċ import Ġexample . j ll arr az . com . passport reader . R Ċ Ċ class ĠInfo Alert ( context : ĠContext ) Ġ: ĠMessageBox ( context , ĠIcon . Info ) Ċ class ĠError Alert ( context : ĠContext ) Ġ: ĠMessageBox ( context , ĠIcon . Error ) Ċ Ċ open Ġclass ĠMessageBox ( context : ĠContext , Ġicon : ĠIcon Ġ= ĠIcon . None ) Ġ: ĠDialog ( context ) Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠIcon Ġ{ ĊĠĠĠĠĠĠĠ ĠNone , ĠInfo , ĠError ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġicon : ĠIcon Ġ= Ġicon ĊĠĠĠĠĠĠĠ Ġset ( icon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv Banner . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( icon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon . Info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Banner . setImage Resource ( R . drawable . ic _ info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Banner . set BackgroundColor ( Color . parse Color ("# 2 1 9 6 F 3 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Banner . setImage Resource ( R . drawable . ic _ cross ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Banner . set BackgroundColor ( Color . parse Color ("# DA 5 F 6 A ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġiv Banner . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġicon ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtitle : ĠCharSequence ĊĠĠĠĠĠĠĠ Ġget () Ġ: ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtv Title . text ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġmessage : ĠCharSequence ĊĠĠĠĠĠĠĠ Ġget () Ġ: ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtv Msg . text ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( msg ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Msg . text Ġ= Ġmsg ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Msg . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Title . set Top Margin ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Title . set Bottom Margin ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġvar Ġtv Title : ĠTextView ĊĠĠĠ Ġprivate Ġvar Ġtv Msg : ĠTextView ĊĠĠĠ Ġprivate Ġvar Ġiv Banner : ĠImageView ĊĠĠĠ Ġprivate Ġvar Ġbtn Negative : ĠButton ĊĠĠĠ Ġprivate Ġvar Ġbtn Positive : ĠButton ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġrequest Window Feature ( Window . FEATURE _ NO _ TITLE ) ĊĠĠĠĠĠĠĠ Ġthis . set ContentView ( R . layout . layout _ message _ box ) ĊĠĠĠĠĠĠĠ Ġwindow ?. setLayout ( MATCH _ PARENT , ĠWR AP _ CONTENT ) ĊĊĠĠĠĠĠĠĠ Ġtv Title ĠĠĠĠ Ġ= Ġthis . findViewById ( R . id . l mb _ title ) ĊĠĠĠĠĠĠĠ Ġtv Msg ĠĠĠĠĠĠ Ġ= Ġthis . findViewById ( R . id . l mb _ msg ) ĊĠĠĠĠĠĠĠ Ġiv Banner ĠĠĠ Ġ= Ġthis . findViewById ( R . id . l mb _ banner ) ĊĠĠĠĠĠĠĠ Ġbtn Negative Ġ= Ġthis . findViewById ( R . id . l mb _ btn _ negative ) ĊĠĠĠĠĠĠĠ Ġbtn Positive Ġ= Ġthis . findViewById ( R . id . l mb _ btn _ positive ) ĊĠĠĠĠĠĠĠ Ġbtn Positive . hide () ĊĠĠĠĠĠĠĠ Ġbtn Negative . hide () ĊĊĠĠĠĠĠĠĠ Ġtv Msg . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġthis . setTitle ("") ĊĠĠĠĠĠĠĠ Ġthis . icon Ġ= Ġicon ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetTitle ( title : ĠCharSequence ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtv Title . text Ġ= Ġtitle ĊĠĠĠĠĠĠĠ Ġtv Title . show () ĊĠĠĠĠĠĠĠ Ġif ( title Ġ== Ġnull Ġ|| Ġtitle . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Title . hide () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Positive Button ( text : CharSequence , Ġlistener : Ġ( dialog : ĠMessageBox , Ġview : ĠView ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbtn Positive . text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġbtn Positive . show () ĊĠĠĠĠĠĠĠ Ġbtn Positive . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( this , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif (! btn Negative . isVisible ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Positive . align Center () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Negative . align Left () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Negative Button ( text : CharSequence , Ġlistener : Ġ( dialog : ĠMessageBox , Ġview : ĠView ) Ġ-> ĠUnit ){ ĊĠĠĠĠĠĠĠ Ġbtn Negative . text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġbtn Negative . show () ĊĠĠĠĠĠĠĠ Ġbtn Negative . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( this , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif (! btn Positive . isVisible ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Negative . align Center () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Positive . align Right () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! btn Positive . isVisible () Ġ&& Ġ! btn Negative . isVisible ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Button (" OK ") Ġ Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( tv Msg . text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Title . set Top Margin ( 4 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Title . set Bottom Margin ( 4 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Msg . hide () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdp ( c : ĠContext , Ġvalue : ĠInt ) Ġ: ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( c . resources . display Metrics . density Ġ* Ġvalue ). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠTextView . set Top Margin ( margin : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġlayout Params Ġas ĠRelative Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . top Margin Ġ= Ġdp ( context , Ġmargin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠTextView . show () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠTextView . hide () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠTextView . set Bottom Margin ( margin : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġlayout Params Ġas ĠRelative Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . bottom Margin Ġ= Ġdp ( context , Ġmargin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠButton . isVisible () Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvisibility Ġ== ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠButton . show () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠButton . hide () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠButton . align Center () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġlayout Params Ġas ĠRelative Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . add Rule ( Relative Layout . CENTER _ HORIZONTAL , ĠRelative Layout . TRUE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . remove Rule ( Relative Layout . ALIGN _ PARENT _ END ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . remove Rule ( Relative Layout . ALIGN _ PARENT _ LEFT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠButton . align Right () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġlayout Params Ġas ĠRelative Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . add Rule ( Relative Layout . ALIGN _ PARENT _ END , ĠRelative Layout . TRUE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . remove Rule ( Relative Layout . CENTER _ HORIZONTAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠButton . align Left () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġlayout Params Ġas ĠRelative Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . add Rule ( Relative Layout . ALIGN _ PARENT _ START , ĠRelative Layout . TRUE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . remove Rule ( Relative Layout . CENTER _ HORIZONTAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }