/* Ċ * Ġ ĠCopyright Ġ 2 0 2 1 ĠMat thew ĠN el son Ċ * Ċ * Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ * Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ * Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ * Ċ * ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ * Ċ * Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ * Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ * Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ * Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ * Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ * Ġ*/ Ċ package Ġio . mat the wn el son . android _ feature _ toast _ utils Ċ Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . graphics . Port er D uff Color Filter Ċ import Ġandroid . os . Build Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . annotation . Color Res Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . appcompat . widget . LinearLayout Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġkotlin . Exception Ċ Ċ /** Ċ Ġ* ĠExtend Ġthis Ġclass Ġto Ġapply Ġyour Ġown Ġdefault Ġvalues . Ċ Ġ* Ġ*/ Ċ open Ġclass ĠToast Utils ( ĊĠĠĠ Ġval Ġtoast Length Long : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġ@ Drawable Res Ġval Ġtoast Background : ĠInt Ġ= ĠR . drawable . toast _ utils _ default _ background , ĊĠĠĠ Ġ@ Color Res Ġval Ġtoast Background Tint : ĠInt Ġ= ĠR . color . toast _ utils _ default _ background _ tint , ĊĠĠĠ Ġ@ Color Res Ġval ĠtextColor : ĠInt Ġ= ĠR . color . toast _ utils _ default _ text , ĊĠĠĠ Ġ@ Drawable Res Ġval Ġimage Background : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Drawable Res Ġval Ġimage : ĠInt ? Ġ= Ġnull Ċ ) Ċ Ċ sealed Ġclass ĠToast Utils Response Ġ{ ĊĠĠĠ Ġclass ĠSuccess ( val Ġtoast : ĠToast ): ĠToast Utils Response () ĊĠĠĠ Ġclass ĠError ( val Ġe : ĠException ): ĠToast Utils Response () Ċ } Ċ Ċ fun ĠToast Utils . show ( context : ĠContext , Ġ@ String Res Ġmessage : ĠInt ): ĠToast Utils Response Ġ{ ĊĠĠĠ Ġval Ġstring : ĠString Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . application Context . resources . getString ( message ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠResources . NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠToast Utils Response . Error ( e ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġthis . show ( context , Ġstring ) Ċ } Ċ Ċ @ Suppress (" DE PREC ATION ") Ċ fun ĠToast Utils . show ( context : ĠContext , Ġmessage : ĠString ): ĠToast Utils Response Ġ{ ĊĠĠĠ Ġval Ġapp Context Ġ= Ġcontext . application Context ĊĠĠĠ Ġ( app Context . getSystem Service ( Service . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ? ĠLayoutInflater )?. let Ġ{ Ġinflater Ġ-> ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= Ġinflater . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context . resources . get Layout ( R . layout . layout _ toast _ utils ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . findViewById < LinearLayout Compat >( R . id . layout _ linear _ toast )?. let Ġ{ Ġtoast Layout Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Layout . background Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( app Context , Ġtoast Background ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ> Ġ 2 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Layout . background . set Tint ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . parse Color ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"# ${ Integer . to HexString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( app Context , Ġtoast Background Tint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Layout . background . color Filter Ġ= ĠPort er D uff Color Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context . resources . getColor ( toast Background Tint ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPort er D uff . Mode . MULTI PLY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn ĠToast Utils Response . Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNullPointerException (" findViewById Ġlayout _ linear _ toast Ġreturned Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . findViewById < ImageView >( R . id . image _ view _ toast )?. let Ġ{ ĠimageView Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image Background Ġ== Ġnull Ġ&& Ġimage Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Background ?. let Ġ{ Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . background Ġ= ĠContext Compat . get Drawable ( app Context , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage ?. let Ġ{ Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( app Context , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . findViewById < TextView >( R . id . text _ view _ toast )?. let Ġ{ ĠtextView Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setTextColor ( Context Compat . getColor ( app Context , ĠtextColor )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn ĠToast Utils Response . Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNullPointerException (" findViewById Ġtext _ view _ toast Ġreturned Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast ( app Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . view Ġ= Ġlayout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . duration Ġ= Ġif Ġ( toast Length Long ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils Response . Success ( toast ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils Response . Error ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġ?: Ġreturn ĠToast Utils Response . Error ( ĊĠĠĠĠĠĠĠ ĠNullPointerException (" LayoutInflater ĠSystem Service Ġreturned Ġnull ") ĊĠĠĠ Ġ) Ċ }