package Ġcn . jack in . awesome ui . dialog Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġcn . jack in . awesome ui . Action Handler Ċ import Ġcn . jack in . awesome ui . ActionType Ċ import Ġcn . jack in . awesome ui . Awesome Dialog Action Ċ import Ġcn . jack in . awesome ui . R Ċ Ċ abstract Ġclass ĠAwesome Dialog Builder < T >( private Ġval ĠmContext : ĠContext ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Cancel able Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġm Canceled On Touch Outside Ġ= Ġtrue ĊĊĠĠĠ Ġprivate Ġvar Ġm Title : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġm Actions : ĠMutable List < Awesome Dialog Action > Ġ= ĠArrayList () ĊĊĠĠĠ Ġprivate Ġvar Ġm Dialog : ĠAwesome Dialog ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġopen Ġfun ĠsetTitle ( title : ĠString ?): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( title Ġ!= Ġnull Ġ&& Ġtitle . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Title Ġ= Ġtitle Ġ+ ĠmContext . getString ( R . string . tool _ f ixel lip size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis Ġas ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠsetTitle ( res Id : ĠInt ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠsetTitle ( mContext . resources . getString ( res Id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġopen Ġfun Ġset Cancel able ( cancel able : ĠBoolean ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġm Cancel able Ġ= Ġcancel able ĊĠĠĠĠĠĠĠ Ġreturn Ġthis Ġas ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġopen Ġfun Ġset Canceled On Touch Outside ( c anceled On Touch Outside : ĠBoolean ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġm Canceled On Touch Outside Ġ= Ġcanceled On Touch Outside ĊĠĠĠĠĠĠĠ Ġreturn Ġthis Ġas ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ·»åĬł å¯¹ è¯Ŀ æ¡Ĩ åºķ éĥ¨ çļĦ æĵįä½ľ æĮīéĴ® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġopen Ġfun Ġadd Action ( action : ĠAwesome Dialog Action ?): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( action Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Actions . add ( action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis Ġas ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ·»åĬł æŃ£å¸¸ ç±»åŀĭçļĦ æĵįä½ľ æĮīéĴ® ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstr Res Id Ġ æĸĩ æ¡Ī res Id ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener Ġ çĤ¹åĩ» åĽŀè°ĥ äºĭä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġadd Action ( str Res Id : ĠInt , Ġlistener : ĠAction Handler ?): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġadd Action ( mContext . resources . getString ( str Res Id ), Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ·»åĬł æŃ£å¸¸ ç±»åŀĭçļĦ æĵįä½ľ æĮīéĴ® ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstr ĠĠĠĠĠ Ġ æĸĩ æ¡Ī ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener Ġ çĤ¹åĩ» åĽŀè°ĥ äºĭä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġadd Action ( str : ĠCharSequence ?, Ġlistener : ĠAction Handler ?): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġadd Action ( str , ĠAction Type . NE UT R AL , Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ·»åĬł æĵįä½ľ æĮīéĴ® ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstr ĠĠĠĠĠ Ġ æĸĩ æ¡Ī ĊĠĠĠĠ Ġ* Ġ@ param Ġtype ĠĠĠĠ Ġ ç±»åŀĭ å±ŀæĢ§ ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener Ġ çĤ¹åĩ» åĽŀè°ĥ äºĭä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġopen Ġfun Ġadd Action ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr : ĠCharSequence ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠAction Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener : ĠAction Handler ? ĊĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction : ĠAwesome Dialog Action Ġ= ĠAwesome Dialog Action ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. type ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. listener ( listener ) ĊĠĠĠĠĠĠĠ Ġm Actions . add ( action ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis Ġas ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate (). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Inf late Params ") ĊĠĠĠ Ġopen Ġfun Ġcreate (): ĠAwesome Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġm Dialog Ġ= ĠAwesome Dialog ( mContext ) ĊĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( mContext ). inflate ( R . layout . awesome ui _ dialog _ content , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ ĠonCreate Title ( root View ) ĊĠĠĠĠĠĠĠ ĠonCreate Actions ( root View ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcontent Container Ġ= Ġroot View . findViewById < Frame Layout >( R . id . awesome _ dlg _ content ) ĊĠĠĠĠĠĠĠ Ġval Ġcontent View Ġ= ĠonCreate Content ( m Dialog !! , ĠmContext ) ĊĠĠĠĠĠĠĠ Ġcontent Container . addView ( content View ) ĊĊĠĠĠĠĠĠĠ Ġval Ġroot LayoutParams Ġ= ĠViewGroup . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġm Dialog !!. set ContentView ( root View , Ġroot LayoutParams ) ĊĠĠĠĠĠĠĠ Ġm Dialog !!. set Cancel able ( m Cancel able ) ĊĠĠĠĠĠĠĠ Ġm Dialog !!. set Canceled On Touch Outside ( m Canceled On Touch Outside ) ĊĠĠĠĠĠĠĠ Ġreturn Ġm Dialog Ġas ĠAwesome Dialog ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun ĠonCreate Title ( parent : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtv Ġ= Ġparent . findViewById < TextView >( R . id . awesome _ dlg _ title ) ĊĠĠĠĠĠĠĠ Ġtv . text Ġ= Ġm Title ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun ĠonCreate Content ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog : ĠAwesome Dialog , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext ĊĠĠĠ Ġ): ĠView ? ĊĊĠĠĠ Ġprotected Ġopen Ġfun ĠonCreate Actions ( parent : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Container Ġ= Ġparent . findViewById < LinearLayout >( R . id . awesome _ dlg _ actions ) ĊĠĠĠĠĠĠĠ Ġval Ġaction Negative Ġ= Ġaction Container . findViewById < Button >( R . id . awesome _ action _ negative ) ĊĠĠĠĠĠĠĠ Ġval Ġaction Neutral Ġ= Ġaction Container . findViewById < Button >( R . id . awesome _ action _ neutral ) ĊĠĠĠĠĠĠĠ Ġval Ġaction Positive Ġ= Ġaction Container . findViewById < Button >( R . id . awesome _ action _ positive ) ĊĠĠĠĠĠĠĠ Ġaction Negative . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġaction Neutral . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġaction Positive . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġif Ġ( m Actions . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Container . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Actions . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton : ĠButton Ġ= Ġwhen Ġ( it . m ActionType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction Type . POSITIVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Positive ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction Type . NEGATIVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Negative ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction Type . NE UT R AL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Neutral ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . text Ġ= Ġit . m Action Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . setOnClickListener { Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . m ActionListener ?. invoke ( m Dialog !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Container . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }