/* Ċ Ġ* ĠCreated Ġby ĠDar sh an ĠP and ya . Ġ(@ itz not ab ug ) Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 - 2 0 2 0 . Ċ Ġ*/ Ċ Ċ @ file : Suppress (" unused ") Ċ Ċ package Ġcom . lazy gen iou z . house . ads Ċ Ċ import Ġandroid . content . Activity NotFoundException Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Gradient Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Rating Bar Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Raw Res Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . graphics . drawable . Drawable Compat Ċ import Ġco il . request . Error Result Ċ import Ġco il . request . Success Result Ċ import Ġcom . lazy gen iou z . house . ads . base . Base Ad Ċ import Ġcom . lazy gen iou z . house . ads . extension .* Ċ import Ġcom . lazy gen iou z . house . ads . helper . Json Helper Ċ import Ġcom . lazy gen iou z . house . ads . listener . Ad Listener Ċ import Ġcom . lazy gen iou z . house . ads . modal . Dialog Modal Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠShow Ġa Ġcustom ĠDialog ĠAd . Ċ Ġ* Ċ Ġ* Ġ** See :** Ġ Ġ[ House Ads Dialog ]( https :// github . com / It z Not AB ug / House Ads # house ad sd ialog ) Ċ Ġ*/ Ċ Ċ class ĠHouse Ads Dialog ( context : ĠContext , Ġprivate Ġval Ġjson Url : ĠString ) Ġ: ĠBase Ad ( context ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġjson Raw Response Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġjson Local Raw Response Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġshow Header Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġhide If App Installed Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġuse Palette Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġcard Corner Ġ= Ġ 2 5 ĊĠĠĠ Ġprivate Ġvar Ġis All Caps : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġcall To ActionButton Corner Ġ= Ġ 2 5 ĊĊĠĠĠ Ġprivate Ġvar Ġlast Loaded Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġis Ad Loaded Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Using Raw Res Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġm Ad Listener : ĠAd Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdialog : ĠAlertDialog ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSecondary Ġconstructor Ġif Ġyou Ġwant Ġto Ġuse Ġa Ġcustom ĠJson ĠFile Ġfrom ĠRaw Ġfolder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġ@ Raw Res Ġraw File : ĠInt ) Ġ: Ġthis ( context , Ġ"") Ġ{ ĊĠĠĠĠĠĠĠ Ġis Using Raw Res Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġjson Local Raw Response Ġ= ĠJson Helper . get Json From Raw ( context , Ġraw File ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġwhether Ġto Ġshow ĠHeader ĠImage Ġif Ġavailable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Header If Available ( show Header : ĠBoolean ): ĠHouse Ads Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . show Header Ġ= Ġshow Header ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe ĠDialog ĠAd 's Ġcorner Ġradius ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Card C orners ( corners : ĠInt ): ĠHouse Ads Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . card Corner Ġ= Ġcorners ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe ĠCall Ġto ĠAction ĠButton 's Ġcolor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset C ta Corner ( corner : ĠInt ): ĠHouse Ads Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . call To ActionButton Corner Ġ= Ġcorner ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet ĠCall Ġto ĠAction ĠButton 's ĠText Ġin ĠAll ĠC aps ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġc ta All Caps ( is All Caps : ĠBoolean ): ĠHouse Ads Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . is All Caps Ġ= Ġis All Caps ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġan Ġ[ Ad Listener ] Ġto Ġlisten Ġto ĠAd Ġevents ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠExample : Ġ[ Ad Listener . on Ad Loaded ], Ġ[ Ad Listener . on Ad Failed To Load ], Ġetc ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Ad Listener ( listener : ĠAd Listener ): ĠHouse Ads Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Ad Listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġwhether Ġto Ġshow Ġthe ĠDialog ĠAd Ġif , ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġthe ĠCurrent ĠAd Ġis Ġof ĠApp ĠType Ġ( package Ġname ) Ġand ĊĠĠĠĠ Ġ* Ġthe ĠApp Ġis Ġalready Ġinstalled Ġon Ġthe Ġuser 's Ġdevice ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhide If App Installed ( hide : ĠBoolean ): ĠHouse Ads Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . hide If App Installed Ġ= Ġhide ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġwhether Ġto Ġuse ĠPalette ĠAPI Ġto Ġcolor ĠUI Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġuse Palette ( use Palette : ĠBoolean ): ĠHouse Ads Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . use Palette Ġ= Ġuse Palette ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAl right , Ġlets Ġload Ġthe ĠA ds ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġload Ads () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Ad Loaded Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Using Raw Res ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( json Url . trim (). isNotEmpty ()) Ġ{ Ġcontext . getString ( R . string . error _ url _ blank ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Raw Response . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠJson Helper . get JsonObject ( json Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . trim (). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Raw Response Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Ads ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġm Ad Listener ?. on Ad Failed To Load ( Exception ( context . getString ( R . string . error _ null _ response ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġconfigure Ads ( json Raw Response ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġconfigure Ads ( json Local Raw Response ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShow Ġthe Ġloaded ĠAd ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Ad () Ġ= Ġdialog ?. show () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġif Ġthe ĠAd Ġis Ġloaded ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Ad Loaded (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Ad Loaded ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Ads ( response : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog Modal List Ġ= ĠArrayList < Dialog Modal >() ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Object Ġ= ĠJSONObject ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Array Ġ= Ġroot Object . opt JSONArray (" apps ") !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( child Object Ġin Ġ 0 Ġuntil Ġjson Array . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= Ġjson Array . getJSONObject ( child Object ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hide If App Installed Ġ&& Ġ! jsonObject . opt String (" app _ uri "). has Http Sign Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . is App Installed ( jsonObject . opt String (" app _ uri "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Array . remove ( child Object ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( jsonObject . opt String (" app _ ad Type ") Ġ== Ġ" dialog ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Modal List . add ( get Dialog Modal ( jsonObject )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( dialog Modal List . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Modal Ġ= Ġdialog Modal List [ last Loaded ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Loaded Ġ>= Ġdialog Modal List . size Ġ- Ġ 1 ) Ġlast Loaded Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġlast Loaded ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠView . inflate ( context , ĠR . layout . house _ ads _ dialog _ layout , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Url Ġ= Ġdialog Modal . icon Url !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlarge ImageUrl Ġ= Ġdialog Modal . large ImageUrl !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Title Ġ= Ġdialog Modal . app Title !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Description Ġ= Ġdialog Modal . app Desc !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Using Raw Res ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire (!( icon Url . trim (). isEmpty () Ġ|| Ġ! icon Url . trim (). has Http Sign )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . error _ icon _ url _ null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire (!( large ImageUrl . trim (). isNotEmpty () Ġ&& Ġ! large ImageUrl . trim (). has Http Sign )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . error _ header _ image _ url _ null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire (!( app Title . trim (). isEmpty () Ġ|| Ġapp Description . trim (). isEmpty ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . error _ title _ description _ null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( icon Url . trim (). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Url . trim (). has Http Sign Ġ-> ĠLog . d ( TAG , Ġ" App ĠLogo Ġparam Ġstarts Ġwith Ġ` http :// ` ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Url . trim (). has Drawable Sign Ġ-> ĠLog . d ( TAG , Ġ" App ĠLogo Ġparam Ġis Ġa Ġlocal Ġdrawable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException ( context . getString ( R . string . error _ raw _ resource _ icon _ null )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( large ImageUrl . trim (). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlarge ImageUrl . trim (). has Http Sign Ġ-> ĠLog . d ( TAG , Ġ" App ĠHeader Ġparam Ġstarts Ġwith Ġ` http :// ` ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlarge ImageUrl . trim (). has Drawable Sign Ġ-> ĠLog . d ( TAG , Ġ" App ĠHeader Ġparam Ġis Ġa Ġlocal Ġdrawable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException ( context . getString ( R . string . error _ raw _ resource _ header _ image _ null )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard View Ġ= Ġview . findViewById < Card View >( R . id . house Ads _ card _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard View . radius Ġ= Ġcard Corner . toFloat () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall To ActionButton Ġ= Ġview . findViewById < Button >( R . id . house Ads _ cta ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgradient Drawable Ġ= Ġcall To ActionButton . background Ġas ĠGradient Drawable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgradient Drawable . corner Radius Ġ= Ġcall To ActionButton Corner . toFloat () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġview . findViewById < ImageView >( R . id . house Ads _ app _ icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Image Ġ= Ġview . findViewById < ImageView >( R . id . house Ads _ header _ image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġview . findViewById < TextView >( R . id . house Ads _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġview . findViewById < TextView >( R . id . house Ads _ description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġratings Ġ= Ġview . findViewById < Rating Bar >( R . id . house Ads _ rating ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprice Ġ= Ġview . findViewById < TextView >( R . id . house Ads _ price ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Url To Load : ĠString Ġ= Ġif Ġ( icon Url . has Drawable Sign ) Ġcontext . get Drawable Uri AsString ( icon Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġicon Url ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= ĠgetImage From Network ( icon Url To Load )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess Result Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon . setImage Drawable ( result . drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Ad Loaded Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( icon . visibility Ġ== ĠView . GONE ) Ġicon . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdom inant Color Ġ= ĠContext Compat . getColor ( context , ĠR . color . color Accent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Palette ) Ġdom inant Color Ġ= Ġ( icon . drawable Ġas ĠBitmap Drawable ). bitmap . get Dominant Color () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= Ġcall To ActionButton . background Ġas ĠGradient Drawable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . setColor ( dom inant Color ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dialog Modal . get Rating () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġratings . rating Ġ= Ġdialog Modal . get Rating () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġratings Drawable Ġ= Ġratings . progress Drawable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDrawable Compat . set Tint ( ratings Drawable , Ġdom inant Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġratings . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError Result Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Ad Loaded Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Ad Listener ?. on Ad Failed To Load ( Exception (" The ĠIcon ĠUri : Ġ$ icon Url To Load Ġcould Ġnot Ġbe Ġfetched . ĠMore ĠInfo : Ġ${ result . throwable } ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( large ImageUrl . trim (). isNotEmpty () Ġ&& Ġshow Header ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlarge ImageUrl To Load : ĠString Ġ= Ġif Ġ( large ImageUrl . has Drawable Sign ) Ġcontext . get Drawable Uri AsString ( large ImageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġlarge ImageUrl ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= ĠgetImage From Network ( large ImageUrl To Load )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess Result Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Image . setImage Drawable ( result . drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Image . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError Result Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Image . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġheader Image . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġdialog Modal . app Title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . text Ġ= Ġdialog Modal . app Desc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall To ActionButton . text Ġ= Ġdialog Modal . call ToAction ButtonText ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall To ActionButton . is All Caps Ġ= Ġis All Caps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dialog Modal . price !!. trim (). isEmpty ()) Ġprice . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġprice . text Ġ= ĠString . format ( context . getString ( R . string . price _ format ), Ġdialog Modal . price ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setView ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow ?. setBackground Drawable Resource ( android . R . color . transparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Show Listener Ġ{ Ġm Ad Listener ?. on Ad Shown () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Dismiss Listener Ġ{ Ġm Ad Listener ?. on Ad Closed () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCalling Ġthis Ġhere Ġbecause Ġprevious Ġimplementation Ġwas ' nt Ġcorrect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġand Ġthe Ġfirst Ġcall Ġto Ġshow () Ġwould Ġnever Ġshow Ġthe Ġdialog . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Ad Loaded ) Ġm Ad Listener ?. on Ad Loaded () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall To ActionButton . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog !!. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackage Or Url Ġ= Ġdialog Modal . package Or Url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( package Or Url !!. trim (). startsWith (" http ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( Intent ( Intent . ACTION _ VIEW , ĠUri . parse ( package Or Url ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Ad Listener ?. on Application Left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( Intent ( Intent . ACTION _ VIEW , ĠUri . parse (" market :// details ? id =$ package Or Url "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Ad Listener ?. on Application Left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠActivity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( Intent ( Intent . ACTION _ VIEW , ĠUri . parse (" http :// play . google . com / store / apps / details ? id =$ package Or Url "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Ad Listener ?. on Application Left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠHouse Ads Dialog :: class . java . simple Name ĊĠĠĠ Ġ} Ċ } ĊĊĊĊĊ