package Ġcom . github . vm iron ov . jet pack . resources Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . app . Fragment Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . View Ċ import Ġkotlin . properties . ReadOnly Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠAny . bind Resource ( id : ĠInt ): ĠReadOnly Property < Any , ĠT > Ġ{ ĊĠ Ġreturn ĠResources Val ( T :: class . java , Ġthis , Ġid ) Ċ } Ċ Ċ interface ĠResources Aware Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġinvoke ( factory : Ġ() Ġ-> ĠResources ): ĠResources Aware Ġ= Ġobject Ġ: ĠResources Aware Ġ{ ĊĠĠĠĠĠ Ġoverride Ġval Ġresources : ĠResources Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfactory () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġval Ġresources : ĠResources Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ", Ġ" USE LESS _ CAST ") Ġclass ĠResources Val < T Ġ: ĠAny , ĠV Ġ: ĠAny >( ĊĠĠĠ Ġprivate Ġval Ġclazz : ĠClass < V >, ĊĠĠĠ Ġprivate Ġval Ġsource : ĠAny , ĊĠĠĠ Ġprivate Ġval Ġid : ĠInt Ċ ) Ġ: ĠReadOnly Property < T , ĠV > Ġ{ ĊĠ Ġprivate Ġvar Ġvalue : ĠAny ? Ġ= ĠUnit ĊĊĠ Ġoverride Ġoperator Ġfun ĠgetValue ( this Ref : ĠT , Ġproperty : ĠK Property < *> ): ĠV Ġ{ ĊĠĠĠ Ġif Ġ( value Ġ=== ĠUnit ) Ġ{ ĊĠĠĠĠĠ Ġvalue Ġ= Ġon Lazy GetValue ( when Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Ġis ĠResources Aware Ġ-> Ġsource . resources ĊĠĠĠĠĠĠĠ Ġsource Ġis ĠContext Ġ-> Ġsource . resources ĊĠĠĠĠĠĠĠ Ġsource Ġis ĠFragment Ġ-> Ġsource . activity . resources ĊĠĠĠĠĠĠĠ Ġsource Ġis ĠResources Ġ-> Ġsource Ġas ĠResources ĊĠĠĠĠĠĠĠ Ġsource Ġis ĠView Ġ-> Ġsource . resources ĊĠĠĠĠĠĠĠ ĠSupport Helper . is Fragment ( source ) Ġ-> ĠSupport Fragment Helper . getResources ( source ) ĊĠĠĠĠĠĠĠ ĠSupport Helper . is Holder ( source ) Ġ-> ĠSupport Recycler Helper . getResources ( source ) ĊĠĠĠĠĠĠĠ Ġsource Ġis ĠDialog Ġ-> Ġsource . context . resources ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unable Ġto Ġfind Ġresources Ġon Ġtype Ġ${ source . java Class . simple Name }") ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġvalue Ġas ĠV ĊĠ Ġ} ĊĊĠ Ġ@ Suppress (" PLATFORM _ CLASS _ MAP PED _ TO _ K OT LIN ", Ġ" DEPRECATED _ SYMBOL _ WITH _ MESSAGE ", Ġ" IMP LICIT _ CAST _ TO _ ANY ", Ġ" DE PREC ATION ") ĊĠ Ġprivate Ġfun Ġon Lazy GetValue ( resources : ĠResources ): ĠV Ġ{ ĊĠĠĠ Ġval Ġtype Ġ= Ġresources . getResource TypeName ( id ) ĊĠĠĠ Ġval Ġtyped Ġ= Ġ{ Ġdesired Type : ĠString , Ġdesired Class : ĠClass < *> Ġ-> ĊĠĠĠĠĠ Ġdesired Type Ġ== Ġtype Ġ&& Ġdesired Class . isAssignableFrom ( clazz ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠ Ġtyped (" drawable ", ĠDrawable :: class . java ) Ġ-> Ġresources . get Drawable ( id ) ĊĊĠĠĠĠĠ Ġtyped (" bool ", Ġkotlin . Boolean :: class . java ) Ġ-> Ġresources . getBoolean ( id ) ĊĠĠĠĠĠ Ġtyped (" bool ", Ġjava . lang . Boolean :: class . java ) Ġ-> Ġresources . getBoolean ( id ) ĊĊĠĠĠĠĠ Ġtyped (" integer ", Ġkotlin . Int :: class . java ) Ġ-> Ġresources . getInteger ( id ) ĊĠĠĠĠĠ Ġtyped (" integer ", Ġjava . lang . Integer :: class . java ) Ġ-> Ġresources . getInteger ( id ) ĊĊĠĠĠĠĠ Ġtyped (" color ", Ġkotlin . Int :: class . java ) Ġ-> Ġresources . getColor ( id ) ĊĠĠĠĠĠ Ġtyped (" color ", Ġjava . lang . Integer :: class . java ) Ġ-> Ġresources . getColor ( id ) ĊĠĠĠĠĠ Ġtyped (" color ", ĠColor State List :: class . java ) Ġ-> Ġresources . getColor State List ( id ) ĊĊĠĠĠĠĠ Ġtyped (" dim en ", Ġkotlin . Float :: class . java ) Ġ-> Ġresources . get Dimension ( id ) ĊĠĠĠĠĠ Ġtyped (" dim en ", Ġjava . lang . Float :: class . java ) Ġ-> Ġresources . get Dimension ( id ) ĊĊĠĠĠĠĠ Ġtyped (" dim en ", Ġkotlin . Int :: class . java ) Ġ-> Ġresources . get Dimension ( id ) ĊĠĠĠĠĠ Ġtyped (" dim en ", Ġjava . lang . Integer :: class . java ) Ġ-> Ġresources . get Dimension ( id ) ĊĊĠĠĠĠĠ Ġtyped (" string ", Ġkotlin . String :: class . java ) Ġ-> Ġresources . getString ( id ) ĊĠĠĠĠĠ Ġtyped (" string ", Ġjava . lang . String :: class . java ) Ġ-> Ġresources . getString ( id ) ĊĊĠĠĠĠĠ Ġtyped (" string ", Ġkotlin . CharSequence :: class . java ) Ġ-> Ġresources . getText ( id ) ĊĠĠĠĠĠ Ġtyped (" string ", Ġjava . lang . CharSequence :: class . java ) Ġ-> Ġresources . getText ( id ) ĊĊĠĠĠĠĠ Ġtyped (" array ", ĠInt Array :: class . java ) Ġ-> Ġresources . getInt Array ( id ) ĊĠĠĠĠĠ Ġtyped (" array ", ĠArray < kotlin . Int >:: class . java ) Ġ-> Ġresources . getInt Array ( id ) ĊĠĠĠĠĠ Ġtyped (" array ", ĠArray < java . lang . Integer >:: class . java ) Ġ-> Ġresources . getInt Array ( id ) ĊĊĠĠĠĠĠ Ġtyped (" array ", ĠArray < kotlin . String >:: class . java ) Ġ-> Ġresources . getString Array ( id ) ĊĠĠĠĠĠ Ġtyped (" array ", ĠArray < java . lang . String >:: class . java ) Ġ-> Ġresources . getString Array ( id ) ĊĊĠĠĠĠĠ Ġtyped (" array ", ĠArray < kotlin . CharSequence >:: class . java ) Ġ-> Ġresources . getText Array ( id ) ĊĠĠĠĠĠ Ġtyped (" array ", ĠArray < java . lang . CharSequence >:: class . java ) Ġ-> Ġresources . getText Array ( id ) ĊĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠUnsupportedOperationException (" Unsupported Ġresource Ġ( name Ġ= Ġ\" ${ resources . getResource Name ( id )}\ ", Ġtype Ġ= Ġ\" ${ clazz . canonical Name }\ ") ") ĊĠĠĠ Ġ} Ġas ĠV ĊĠ Ġ} Ċ } Ċ