package Ġio . github . pel men star 1 . range calendar Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . icu . text . DateFormat Symbols Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Typed Value Ċ import Ġandroidx . annotation . Attr Res Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġio . github . pel men star 1 . range calendar . utils . dark er Color Ċ import Ġio . github . pel men star 1 . range calendar . utils . getLocale Compat Ċ import Ġio . github . pel men star 1 . range calendar . utils . getText Bounds Array Ċ Ċ internal Ġclass ĠCalendar Resources ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġval Ġh Padding : ĠFloat ĊĠĠĠ Ġval Ġcell Size : ĠFloat ĊĠĠĠ Ġval Ġy Cell Margin : ĠFloat ĊĊĠĠĠ Ġval Ġcolor Primary : ĠInt ĊĠĠĠ Ġval Ġcolor Primary Dark : ĠInt ĊĠĠĠ Ġval Ġhover Color : ĠInt ĊĠĠĠ Ġval ĠtextColor : ĠInt ĊĠĠĠ Ġval Ġout Month TextColor : ĠInt ĊĠĠĠ Ġval Ġdisabled TextColor : ĠInt ĊĊĠĠĠ Ġval Ġweek day Text Size : ĠFloat ĊĠĠĠ Ġval Ġweek days : ĠArray < String > ĊĊĠĠĠ Ġval Ġday Number Text Size : ĠFloat ĊĊĠĠĠ Ġ// ĠCan Ġonly Ġbe Ġused Ġwhen Ġtext Ġsize Ġis Ġdefault Ġone Ġ( day Number Text Size ) ĊĠĠĠ Ġval Ġdefault Day Number Sizes : ĠPacked Size Array ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠThese Ġare Ġpre computed Ġvalues Ġfor Ġdefault Ġweek day Text Size Ġand Ġcannot Ġbe Ġused Ġfor Ġanother Ġtext Ġsize . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdefault Week day Widths : ĠFloat Array ĊĠĠĠ Ġval Ġdefault Short Week day Row Height : ĠFloat ĊĠĠĠ Ġval Ġdefault N arrow Week day Row Height : ĠFloat ĊĠĠĠ Ġ/* Ġ----- Ġ*/ ĊĊĠĠĠ Ġval Ġweek day Row Margin Bottom : ĠFloat ĊĠĠĠ Ġval Ġcolor Control Normal : ĠColor State List ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġcontext . resources ĊĊĠĠĠĠĠĠĠ Ġcolor Primary Ġ= Ġget Color Primary ( context ) ĊĠĠĠĠĠĠĠ Ġcolor Primary Dark Ġ= Ġcolor Primary . dark er Color ( 0 . 4 f ) ĊĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġget TextColor ( context ) ĊĠĠĠĠĠĠĠ Ġcolor Control Normal Ġ= Ġget Color State List From Attribute ( context , ĠR . attr . color Control Normal ) ĊĠĠĠĠĠĠĠ Ġout Month TextColor Ġ= Ġcolor Control Normal . getColor For State ( ENABLED _ STATE , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġdisabled TextColor Ġ= Ġcolor Control Normal . getColor For State ( EMPTY _ STATE , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġhover Color Ġ= Ġget Hover Color ( context ) ĊĊĠĠĠĠĠĠĠ Ġh Padding Ġ= Ġres . get Dimension ( R . dim en . range Calendar _ padding H ) ĊĠĠĠĠĠĠĠ Ġweek day Text Size Ġ= Ġres . get Dimension ( R . dim en . range Calendar _ weekday Text Size ) ĊĠĠĠĠĠĠĠ Ġday Number Text Size Ġ= Ġres . get Dimension ( R . dim en . range Calendar _ day Number Text Size ) ĊĠĠĠĠĠĠĠ Ġcell Size Ġ= Ġres . get Dimension ( R . dim en . range Calendar _ cell Size ) ĊĠĠĠĠĠĠĠ Ġy Cell Margin Ġ= Ġres . get Dimension ( R . dim en . range Calendar _ y Cell Margin ) ĊĠĠĠĠĠĠĠ Ġweek day Row Margin Bottom Ġ= Ġres . get Dimension ( R . dim en . range Calendar _ weekday Row Margin Bottom ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCompute Ġtext Ġsize Ġof Ġnumbers Ġin Ġ[ 0 ; Ġ 3 1 ] ĊĠĠĠĠĠĠĠ Ġdefault Day Number Sizes Ġ= ĠgetText Bounds Array ( DAYS , Ġday Number Text Size ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFirst Ġelement Ġin Ġget Short Week Days () Ġis Ġempty Ġand Ġactual Ġitems Ġstart Ġfrom Ġ 1 ĊĠĠĠĠĠĠĠ Ġ// ĠIt 's Ġbetter Ġto Ġcopy Ġthem Ġto Ġanother Ġarray Ġwhere Ġelements Ġstart Ġfrom Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġlocale Ġ= Ġcontext . getLocale Compat () ĊĠĠĠĠĠĠĠ Ġval Ġshort Week days : ĠArray < String > ĊĠĠĠĠĠĠĠ Ġvar Ġnarrow Week days : ĠArray < String >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsymbols Ġ= ĠDate Format Symbols . getInstance ( locale ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshort Week days Ġ= Ġsymbols . short Week days ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnarrow Week days Ġ= Ġsymbols . get Week days ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDate Format Symbols . FORMAT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDate Format Symbols . N ARROW ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshort Week days Ġ= Ġjava . text . DateFormat Symbols . getInstance ( locale ). short Week days ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġweek days Length Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 4 ) Ġ 1 4 Ġelse Ġ 7 ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġweek days Ġ= ĠarrayOf Null s < String ? >( week days Length ) Ġas ĠArray < String > ĊĠĠĠĠĠĠĠ ĠSystem . arraycopy ( short Week days , Ġ 1 , Ġweek days , Ġ 0 , Ġ 7 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( narrow Week days Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( narrow Week days , Ġ 1 , Ġweek days , Ġ 7 , Ġ 7 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdefault Week day Widths Ġ= ĠFloat Array ( week days Length ) ĊĠĠĠĠĠĠĠ Ġdefault Short Week day Row Height Ġ= Ġcompute Week day Width And Max Height ( SHORT _ WEEK DAYS _ OFFSET ) ĊĠĠĠĠĠĠĠ Ġdefault N arrow Week day Row Height Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompute Week day Width And Max Height ( N ARROW _ WEEK DAYS _ OFFSET ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠFloat . NaN ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompute Week day Width And Max Height ( offset : ĠInt ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠmaxHeight Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠ ĠgetText Bounds Array ( week days , Ġoffset , Ġoffset Ġ+ Ġ 7 , Ġweek day Text Size , Ġtype face Ġ= Ġnull ) Ġ{ Ġi , Ġsize Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġsize . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( height Ġ> ĠmaxHeight ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxHeight Ġ= Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Week day Widths [ i Ġ+ Ġoffset ] Ġ= Ġsize . width . toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠmaxHeight . toFloat () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠDAY S Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 ", Ġ" 2 ", Ġ" 3 ", Ġ" 4 ", Ġ" 5 ", Ġ" 6 ", Ġ" 7 ", Ġ" 8 ", Ġ" 9 ", Ġ" 1 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 1 ", Ġ" 1 2 ", Ġ" 1 3 ", Ġ" 1 4 ", Ġ" 1 5 ", Ġ" 1 6 ", Ġ" 1 7 ", Ġ" 1 8 ", Ġ" 1 9 ", Ġ" 2 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 1 ", Ġ" 2 2 ", Ġ" 2 3 ", Ġ" 2 4 ", Ġ" 2 5 ", Ġ" 2 6 ", Ġ" 2 7 ", Ġ" 2 8 ", Ġ" 2 9 ", Ġ" 3 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 3 1 " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠS INGLE _ INT _ ARRAY Ġ= ĠInt Array ( 1 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠH OVER _ STATE Ġ= Ġint ArrayOf ( android . R . attr . state _ hover ed , Ġandroid . R . attr . state _ enabled ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠENABLE D _ STATE Ġ= Ġint ArrayOf ( android . R . attr . state _ enabled ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEMPTY _ STATE Ġ= ĠInt Array ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSH ORT _ WEEK DAYS _ OFFSET Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠN ARROW _ WEEK DAYS _ OFFSET Ġ= Ġ 7 ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Day Text ( day : ĠInt ) Ġ= ĠDAY S [ day Ġ- Ġ 1 ] ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Color Primary ( context : ĠContext ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Color From Attribute ( context , ĠR . attr . color Primary ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Private Resource ") ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget TextColor ( context : ĠContext ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtheme Ġ= Ġcontext . theme ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġtheme . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style . TextAppearance _ AppCompat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . TextAppearance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor List Ġ= Ġarray . getColor State List ( R . style able . TextAppearance _ android _ textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray . recycle () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcolor List !!. getColor For State ( ENABLED _ STATE , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Hover Color ( context : ĠContext ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhover List Ġ= Ġget Color State List From Attribute ( context , ĠR . attr . color Control Highlight ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhover List . getColor For State ( HO VER _ STATE , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Color From Attribute ( context : ĠContext , Ġ@ Attr Res Ġres Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtyped Value Ġ= ĠTyped Value () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtheme Ġ= Ġcontext . theme ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( theme . resolve Attribute ( res Id , Ġtyped Value , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġtyped Value . type ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( type Ġin ĠTyped Value . TYPE _ FIRST _ COLOR _ INT .. Typed Value . TYPE _ LAST _ COLOR _ INT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Value . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResources Compat . getColor ( context . resources , Ġtyped Value . resourceId , Ġtheme ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Attribute Ġ$ res Id Ġisn 't Ġdefined ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Color State List From Attribute ( context : ĠContext , Ġ@ Attr Res Ġres Id : ĠInt ): ĠColor State List Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS INGLE _ INT _ ARRAY [ 0 ] Ġ= Ġres Id ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġcontext . obtain Styled Attributes ( SINGLE _ INT _ ARRAY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġarray . getColor State List ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray . recycle () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlist !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }