/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġandroidx . gl ance . app widget Ċ Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Typed Value . COMPLEX _ UNIT _ DIP Ċ import Ġandroid . util . Typed Value . COMPLEX _ UNIT _ PX Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup . LayoutParams . MATCH _ PARENT Ċ import Ġandroid . view . ViewGroup . LayoutParams . WRAP _ CONTENT Ċ import Ġandroid . widget . Remote Views Ċ import Ġandroidx . annotation . DoNot Inline Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . compose . ui . graphics . to Argb Ċ import Ġandroidx . core . widget . setText View Height Ċ import Ġandroidx . core . widget . setText View Width Ċ import Ġandroidx . core . widget . setView BackgroundColor Ċ import Ġandroidx . core . widget . setView BackgroundColor Resource Ċ import Ġandroidx . core . widget . setView Background Resource Ċ import Ġandroidx . core . widget . setView Clip To Outline Ċ import Ġandroidx . gl ance . Android Resource Image Provider Ċ import Ġandroidx . gl ance . Background Modifier Ċ import Ġandroidx . gl ance . Gl ance Modifier Ċ import Ġandroidx . gl ance . Visibility Ċ import Ġandroidx . gl ance . Visibility Modifier Ċ import Ġandroidx . gl ance . action . Action Ċ import Ġandroidx . gl ance . action . Action Modifier Ċ import Ġandroidx . gl ance . action . Launch Activity Action Ċ import Ġandroidx . gl ance . action . Launch Activity Class Action Ċ import Ġandroidx . gl ance . action . Launch Activity Component Action Ċ import Ġandroidx . gl ance . action . Run Callback Action Ċ import Ġandroidx . gl ance . app widget . action . Launch Activity Intent Action Ċ import Ġandroidx . gl ance . app widget . layout . Corner Radius Modifier Ċ import Ġandroidx . gl ance . app widget . unit . Day Night Color Provider Ċ import Ġandroidx . gl ance . layout . Height Modifier Ċ import Ġandroidx . gl ance . layout . Padding Modifier Ċ import Ġandroidx . gl ance . layout . Width Modifier Ċ import Ġandroidx . gl ance . unit . Dimension Ċ import Ġandroidx . gl ance . unit . Fixed Color Provider Ċ import Ġandroidx . gl ance . unit . Resource Color Provider Ċ Ċ internal Ġfun Ġapply Modifiers ( ĊĠĠĠ Ġtranslation Context : ĠTranslation Context , ĊĠĠĠ Ġrv : ĠRemote Views , ĊĠĠĠ Ġmodifiers : ĠGl ance Modifier , ĊĠĠĠ Ġview Def : ĠInsert ed View Info , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġcontext Ġ= Ġtranslation Context . context ĊĠĠĠ Ġvar Ġwidth Modifier : ĠWidth Modifier ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġheight Modifier : ĠHeight Modifier ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġpadding Modifiers : ĠPadding Modifier ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġcorner Radius : ĠDimension ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġvisibility Ġ= ĠVisibility . Visible ĊĠĠĠ Ġmodifiers . fold In ( Unit ) Ġ{ Ġ_, Ġmodifier Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( modifier ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction Modifier Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Action ( translation Context , Ġrv , Ġmodifier . action , Ġview Def . main View Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠWidth Modifier Ġ-> Ġwidth Modifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHeight Modifier Ġ-> Ġheight Modifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBackground Modifier Ġ-> Ġapply Background Modifier ( context , Ġrv , Ġmodifier , Ġview Def ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPadding Modifier Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Modifiers Ġ= Ġpadding Modifiers ?. let Ġ{ Ġit Ġ+ Ġmodifier Ġ} Ġ?: Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVisibility Modifier Ġ-> Ġvisibility Ġ= Ġmodifier . visibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCor ner Radius Modifier Ġ-> Ġcorner Radius Ġ= Ġmodifier . radius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( Gl ance App Widget Tag , Ġ" Unknown Ġmodifier Ġ'$ modifier ', Ġnothing Ġdone .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġapply Size Modifiers ( translation Context , Ġrv , Ġwidth Modifier , Ġheight Modifier , Ġview Def ) ĊĠĠĠ Ġcorner Radius ?. let Ġ{ Ġapply Rounded C orners ( rv , Ġview Def . main View Id , Ġit ) Ġ} ĊĠĠĠ Ġpadding Modifiers ?. let Ġ{ Ġpadding Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġabsolute Padding Ġ= Ġpadding . to Dp ( context . resources ). to Absolute ( translation Context . is R tl ) ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Metrics Ġ= Ġcontext . resources . display Metrics ĊĠĠĠĠĠĠĠ Ġrv . setView Padding ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Def . main View Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabsolute Padding . left . to Pixels ( display Metrics ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabsolute Padding . top . to Pixels ( display Metrics ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabsolute Padding . right . to Pixels ( display Metrics ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabsolute Padding . bottom . to Pixels ( display Metrics ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġrv . setView Visibility ( view Def . main View Id , Ġvisibility . to View Visibility ()) Ċ } Ċ Ċ private Ġfun ĠVisibility . to View Visibility () Ġ= ĊĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ ĠVisibility . Visible Ġ-> ĠView . VISIBLE ĊĠĠĠĠĠĠĠ ĠVisibility . In visible Ġ-> ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ ĠVisibility . G one Ġ-> ĠView . GONE ĊĠĠĠ Ġ} Ċ Ċ private Ġfun Ġapply Action ( ĊĠĠĠ Ġtranslation Context : ĠTranslation Context , ĊĠĠĠ Ġrv : ĠRemote Views , ĊĠĠĠ Ġaction : ĠAction , ĊĠĠĠ Ġ@ Id Res Ġview Id : ĠInt Ċ ) Ġ{ ĊĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠLaunch Activity Action Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLaunch Activity Component Action Ġ-> ĠIntent (). set Component ( action . component Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLaunch Activity Class Action Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( translation Context . context , Ġaction . activity Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLaunch Activity Intent Action Ġ-> Ġaction . intent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Action Ġtype Ġnot Ġdefined Ġin Ġapp Ġwidget Ġpackage : Ġ$ action ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpending Intent : ĠPending Intent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . getActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation Context . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ MUT ABLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv . setOn Click Pending Intent ( view Id , Ġpending Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠRun Callback Action Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction Callback Broadcast Receiver . create Pending Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation Context . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . callback Class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation Context . app Widget Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv . setOn Click Pending Intent ( view Id , Ġpending Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGl ance App Widget Tag , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Unrecognized Ġaction Ġtype : Ġ${ action . java Class . canonical Name } ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġapply Size Modifiers ( ĊĠĠĠ Ġtranslation Context : ĠTranslation Context , ĊĠĠĠ Ġrv : ĠRemote Views , ĊĠĠĠ Ġwidth Modifier : ĠWidth Modifier ?, ĊĠĠĠ Ġheight Modifier : ĠHeight Modifier ?, ĊĠĠĠ Ġview Def : ĠInsert ed View Info Ċ ) Ġ{ ĊĠĠĠ Ġval Ġcontext Ġ= Ġtranslation Context . context ĊĠĠĠ Ġif Ġ( view Def . is Simple ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwidth Modifier ?. let Ġ{ Ġapply Simple Width Modifier ( context , Ġrv , Ġit , Ġview Def . main View Id ) Ġ} ĊĠĠĠĠĠĠĠ Ġheight Modifier ?. let Ġ{ Ġapply Simple Height Modifier ( context , Ġrv , Ġit , Ġview Def . main View Id ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcheck ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . S ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" There Ġis Ġcurrently Ġno Ġvalid Ġuse Ġcase Ġwhere Ġa Ġcomplex Ġview Ġis Ġused Ġon ĠAndroid ĠS " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġwidth Ġ= Ġwidth Modifier ?. width ĊĠĠĠ Ġval Ġheight Ġ= Ġheight Modifier ?. height ĊĊĠĠĠ Ġif Ġ(!( width . is Fixed Ġ|| Ġheight . is Fixed )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġs izing Ġview Ġis Ġonly Ġpresent Ġand Ġneeded Ġfor Ġsetting Ġfixed Ġdimensions . ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġuse Match Size Width Ġ= Ġwidth Ġis ĠDimension . Fill Ġ|| Ġwidth Ġis ĠDimension . Expand ĊĠĠĠ Ġval Ġuse Match Size Height Ġ= Ġheight Ġis ĠDimension . Fill Ġ|| Ġheight Ġis ĠDimension . Expand ĊĠĠĠ Ġval Ġsize View Layout Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġuse Match Size Width Ġ&& Ġuse Match Size Height Ġ-> ĠR . layout . size _ match _ match ĊĠĠĠĠĠĠĠ Ġuse Match Size Width Ġ-> ĠR . layout . size _ match _ wrap ĊĠĠĠĠĠĠĠ Ġuse Match Size Height Ġ-> ĠR . layout . size _ wrap _ match ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . layout . size _ wrap _ wrap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġsize Target View Id Ġ= Ġrv . inflate View Stub ( translation Context , ĠR . id . size View Stub , Ġsize View Layout ) ĊĊĠĠĠ Ġfun ĠDimension . Dp . to Pixels () Ġ= Ġdp . to Pixels ( context ) ĊĠĠĠ Ġfun ĠDimension . Resource . to Pixels () Ġ= Ġcontext . resources . get Dimension Pixel Size ( res ) ĊĠĠĠ Ġwhen Ġ( width ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠDimension . Dp Ġ-> Ġrv . setText View Width ( size Target View Id , Ġwidth . to Pixels ()) ĊĠĠĠĠĠĠĠ Ġis ĠDimension . Resource Ġ-> Ġrv . setText View Width ( size Target View Id , Ġwidth . to Pixels ()) ĊĠĠĠĠĠĠĠ ĠDimension . Expand , ĠDimension . Fill , ĠDimension . Wrap , Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. let Ġ{} ĊĠĠĠ Ġwhen Ġ( height ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠDimension . Dp Ġ-> Ġrv . setText View Height ( size Target View Id , Ġheight . to Pixels ()) ĊĠĠĠĠĠĠĠ Ġis ĠDimension . Resource Ġ-> Ġrv . setText View Height ( size Target View Id , Ġheight . to Pixels ()) ĊĠĠĠĠĠĠĠ ĠDimension . Expand , ĠDimension . Fill , ĠDimension . Wrap , Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. let Ġ{} Ċ } Ċ Ċ internal Ġfun Ġapply Simple Width Modifier ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġrv : ĠRemote Views , ĊĠĠĠ Ġmodifier : ĠWidth Modifier , ĊĠĠĠ Ġview Id : ĠInt , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġwidth Ġ= Ġmodifier . width ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . S ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠPri or Ġto ĠAndroid ĠS , Ġthese Ġlayouts Ġalready Ġhave Ġthe Ġappropriate Ġattribute Ġin Ġthe Ġxml , Ġso ĊĠĠĠĠĠĠĠ Ġ// Ġno Ġaction Ġis Ġneeded . ĊĠĠĠĠĠĠĠ Ġif Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth . resolve Dimension ( context ) Ġin ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDimension . Wrap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDimension . Fill , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDimension . Expand ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Using Ġa Ġwidth Ġof Ġ$ width Ġrequires Ġa Ġcomplex Ġlayout Ġbefore ĠAPI Ġ 3 1 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠWrap Ġand ĠExpand Ġare Ġdone Ġin ĠXML Ġon ĠAndroid ĠS + ĊĠĠĠ Ġif Ġ( width Ġin ĠlistOf ( Dimension . Wrap , ĠDimension . Expand )) Ġreturn ĊĠĠĠ ĠApply Modifiers Api 3 1 Impl . setView Width ( rv , Ġview Id , Ġwidth ) Ċ } Ċ Ċ internal Ġfun Ġapply Simple Height Modifier ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġrv : ĠRemote Views , ĊĠĠĠ Ġmodifier : ĠHeight Modifier , ĊĠĠĠ Ġview Id : ĠInt , Ċ ) Ġ{ ĊĠĠĠ Ġ// ĠThese Ġlayouts Ġalready Ġhave Ġthe Ġappropriate Ġattribute Ġin Ġthe Ġxml , Ġso Ġno Ġaction Ġis Ġneeded . ĊĠĠĠ Ġval Ġheight Ġ= Ġmodifier . height ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . S ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠPri or Ġto ĠAndroid ĠS , Ġthese Ġlayouts Ġalready Ġhave Ġthe Ġappropriate Ġattribute Ġin Ġthe Ġxml , Ġso ĊĠĠĠĠĠĠĠ Ġ// Ġno Ġaction Ġis Ġneeded . ĊĠĠĠĠĠĠĠ Ġif Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight . resolve Dimension ( context ) Ġin ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDimension . Wrap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDimension . Fill , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDimension . Expand ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Using Ġa Ġheight Ġof Ġ$ height Ġrequires Ġa Ġcomplex Ġlayout Ġbefore ĠAPI Ġ 3 1 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠWrap Ġand ĠExpand Ġare Ġdone Ġin ĠXML Ġon ĠAndroid ĠS + ĊĠĠĠ Ġif Ġ( height Ġin ĠlistOf ( Dimension . Wrap , ĠDimension . Expand )) Ġreturn ĊĠĠĠ ĠApply Modifiers Api 3 1 Impl . setView Height ( rv , Ġview Id , Ġheight ) Ċ } Ċ Ċ private Ġfun Ġapply Background Modifier ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġrv : ĠRemote Views , ĊĠĠĠ Ġmodifier : ĠBackground Modifier , ĊĠĠĠ Ġview Def : ĠInsert ed View Info Ċ ) Ġ{ ĊĠĠĠ Ġval Ġview Id Ġ= Ġview Def . main View Id ĊĠĠĠ Ġval Ġimage Provider Ġ= Ġmodifier . image Provider ĊĠĠĠ Ġif Ġ( image Provider Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( image Provider Ġis ĠAndroid Resource Image Provider ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv . setView Background Resource ( view Id , Ġimage Provider . res Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠOtherwise , Ġthe Ġbackground Ġhas Ġbeen Ġtransformed Ġand Ġshould Ġbe Ġignored ĊĠĠĠĠĠĠĠ Ġ// Ġ( re moving Ġmodifiers Ġis Ġnot Ġreally Ġpossible ). ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġwhen Ġ( val Ġcolor Provider Ġ= Ġmodifier . color Provider ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠFixed Color Provider Ġ-> Ġrv . setView BackgroundColor ( view Id , Ġcolor Provider . color . to Argb ()) ĊĠĠĠĠĠĠĠ Ġis ĠResource Color Provider Ġ-> Ġrv . setView BackgroundColor Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Provider . res Id ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġis ĠDay Night Color Provider Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 3 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv . setView BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Provider . day . to Argb (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Provider . night . to Argb () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv . setView BackgroundColor ( view Id , Ġcolor Provider . resolve ( context ). to Argb ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLog . w ( Gl ance App Widget Tag , Ġ" Unexpected Ġbackground Ġcolor Ġmodifier : Ġ$ color Provider ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠDimension ?. is Fixed : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠDimension . Dp , Ġis ĠDimension . Resource Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ ĠDimension . Expand , ĠDimension . Fill , ĠDimension . Wrap , Ġnull Ġ-> Ġfalse ĊĠĠĠ Ġ} Ċ Ċ private Ġfun Ġapply Rounded C orners ( rv : ĠRemote Views , Ġview Id : ĠInt , Ġradius : ĠDimension ) Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . S ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApply Modifiers Api 3 1 Impl . apply Rounded C orners ( rv , Ġview Id , Ġradius ) ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ ĠLog . w ( Gl ance App Widget Tag , Ġ" Cannot Ġset Ġthe Ġrounded Ġcorner Ġof Ġviews Ġbefore ĠApi Ġ 3 1 .") Ċ } Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . S ) Ċ private Ġobject ĠApply Modifiers Api 3 1 Impl Ġ{ ĊĠĠĠ Ġ@ DoNot Inline ĊĠĠĠ Ġfun Ġset View Width ( rv : ĠRemote Views , Ġview Id : ĠInt , Ġwidth : ĠDimension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDimension . Wrap Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv . setView Layout Width ( view Id , ĠWR AP _ CONTENT . toFloat (), ĠCOMP LEX _ UNIT _ PX ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDimension . Expand Ġ-> Ġrv . setView Layout Width ( view Id , Ġ 0 f , ĠCOMP LEX _ UNIT _ PX ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDimension . Dp Ġ-> Ġrv . setView Layout Width ( view Id , Ġwidth . dp . value , ĠCOMP LEX _ UNIT _ DIP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDimension . Resource Ġ-> Ġrv . setView Layout Width Dim en ( view Id , Ġwidth . res ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDimension . Fill Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv . setView Layout Width ( view Id , ĠMATCH _ PARENT . toFloat (), ĠCOMP LEX _ UNIT _ PX ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DoNot Inline ĊĠĠĠ Ġfun Ġset View Height ( rv : ĠRemote Views , Ġview Id : ĠInt , Ġheight : ĠDimension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDimension . Wrap Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv . setView Layout Height ( view Id , ĠWR AP _ CONTENT . toFloat (), ĠCOMP LEX _ UNIT _ PX ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDimension . Expand Ġ-> Ġrv . setView Layout Height ( view Id , Ġ 0 f , ĠCOMP LEX _ UNIT _ PX ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDimension . Dp Ġ-> Ġrv . setView Layout Height ( view Id , Ġheight . dp . value , ĠCOMP LEX _ UNIT _ DIP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDimension . Resource Ġ-> Ġrv . setView Layout Height Dim en ( view Id , Ġheight . res ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDimension . Fill Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv . setView Layout Height ( view Id , ĠMATCH _ PARENT . toFloat (), ĠCOMP LEX _ UNIT _ PX ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DoNot Inline ĊĠĠĠ Ġfun Ġapply Rounded C orners ( rv : ĠRemote Views , Ġview Id : ĠInt , Ġradius : ĠDimension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrv . setView Clip To Outline ( view Id , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( radius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDimension . Dp Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv . setView Outline Preferred Radius ( view Id , Ġradius . dp . value , ĠCOMP LEX _ UNIT _ DIP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDimension . Resource Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv . setView Outline Preferred Radius Dim en ( view Id , Ġradius . res ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Rounded Ġcorners Ġshould Ġnot Ġbe Ġ${ radius . java Class . canonical Name }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ