package Ġpl . dom yn o . color ful calendar Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Typed Array Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġpl . dom yn o . color ful calendar . utils . reset To Mid night Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠCalendar Properties ( val Ġcontext : ĠContext , Ġtyped Array : ĠTyped Array , Ġprivate Ġval Ġcalendar View : ĠCalendar View ) Ġ{ ĊĊĠĠĠ Ġvar Ġheader Button Tint : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getColor ( R . style able . Calendar View _ header Button Tint , ĠContext Compat . getColor ( context , Ġandroid . R . color . black )) ĊĊĠĠĠ Ġvar Ġheader TextColor : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getColor ( R . style able . Calendar View _ header TextColor , ĠContext Compat . getColor ( context , Ġandroid . R . color . black )) ĊĊĠĠĠ Ġvar Ġheader BackgroundColor : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getColor ( R . style able . Calendar View _ header BackgroundColor , ĠContext Compat . getColor ( context , Ġandroid . R . color . holo _ blue _ dark )) ĊĊĠĠĠ Ġvar Ġprevious Button Src : ĠDrawable Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . get Drawable ( R . style able . Calendar View _ previous Button Src ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġcontext . get Drawable ( R . drawable . ic _ keyboard _ arrow _ left _ 2 4 dp ) !! ĊĊĠĠĠ Ġvar Ġnext Button Src : ĠDrawable Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . get Drawable ( R . style able . Calendar View _ next Button Src ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġcontext . get Drawable ( R . drawable . ic _ keyboard _ arrow _ right _ 2 4 dp ) !! ĊĊĠĠĠ Ġvar Ġdays Labels Color : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getColor ( R . style able . Calendar View _ days Labels Color , ĠContext Compat . getColor ( context , Ġandroid . R . color . black )) ĊĊĠĠĠ Ġvar Ġtoday Label Color : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getColor ( R . style able . Calendar View _ today Label Color , ĠContext Compat . getColor ( context , Ġandroid . R . color . white )) ĊĊĠĠĠ Ġvar Ġmore Icon Tint : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getColor ( R . style able . Calendar View _ more Icon Tint , ĠContext Compat . getColor ( context , Ġandroid . R . color . black )) ĊĊĠĠĠ Ġvar ĠbackgroundColor : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getColor ( R . style able . Calendar View _ backgroundColor , ĠContext Compat . getColor ( context , Ġandroid . R . color . transparent )) ĊĊĠĠĠ Ġvar Ġseparator Color : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getColor ( R . style able . Calendar View _ separator Color , ĠContext Compat . getColor ( context , Ġandroid . R . color . black )) ĊĊĠĠĠ Ġvar Ġanother Month Alpha : ĠInt Ġ= Ġtyped Array . getColor ( R . style able . Calendar View _ another Month Alpha , ĠContext Compat . getColor ( context , ĠR . color . alpha 5 0 )) Ġor Ġ 0 x 0 0 FFFFFF ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue Ġor Ġ 0 x 0 0 FFFFFF ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Alpha Ġ= ĠColor . alpha ( field ) Ġ/ Ġ 2 5 6 f ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġon Previous Page ChangeListener : ĠCalendar View . On Page ChangeListener ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġon Next Page ChangeListener : ĠCalendar View . On Page ChangeListener ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġon Day ClickListener : ĠCalendar View . On Day ClickListener ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġselected Date : ĠCalendar ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġinternal Ġset ĊĠĠĠ Ġinternal Ġvar Ġselected View : ĠView ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġasync Ġmode ĊĠĠĠ Ġinternal Ġvar Ġis Async : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġinternal Ġvar Ġevent Load Handler : ĠAsync Calendar View . Event Load Handler ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( value Ġ!= Ġnull Ġ|| Ġfield Ġ== Ġnull ) Ġ{ Ġ" handler Ġcannot Ġbe Ġset Ġto Ġnull " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġval Ġloaded Pages : ĠMutable List < Calendar > Ġ= ĠArrayList () ĊĊĠĠĠ Ġprivate Ġval Ġfirst Date Calendar Ġ= ĠCalendar . getInstance (). reset To Mid night () ĊĠĠĠ Ġval Ġinitial Date : ĠCalendar ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfirst Date Calendar . clone () Ġas ĠCalendar ĊĊĠĠĠ Ġinternal Ġvar Ġicon Alpha : ĠFloat Ġ= ĠColor . alpha ( another Month Alpha ) Ġ/ Ġ 2 5 6 f ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġinternal Ġval Ġminimum Date Ġ= Ġinitial Date . also Ġ{ Ġit . add ( Calendar . MONTH , Ġ-( CAL END AR _ SIZE Ġ/ Ġ 2 )) Ġ} ĊĠĠĠ Ġinternal Ġval Ġmaximum Date Ġ= Ġinitial Date . also Ġ{ Ġit . add ( Calendar . MONTH , ĠCAL END AR _ SIZE Ġ/ Ġ 2 ) Ġ} ĊĊĠĠĠ Ġvar Ġicons : ĠMap < Calendar , ĠList < Drawable >> Ġ= Ġempty Map () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ġfield Ġ= Ġvalue . map Keys Ġ{ Ġ( it . key . clone () Ġas ĠCalendar ). reset To Mid night () Ġ} Ġ} ĊĊĠĠĠ Ġvar Ġday Colors : ĠMap < Calendar , ĠInt > Ġ= Ġempty Map () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ġfield Ġ= Ġvalue . map Keys Ġ{ Ġ( it . key . clone () Ġas ĠCalendar ). reset To Mid night () Ġ} Ġ} ĊĊĊĠĠĠ Ġfun Ġupdate ( cmd : ĠCalendar Properties . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . cmd () ĊĠĠĠĠĠĠĠ Ġcalendar View . refresh () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCAL END AR _ SIZE Ġ= Ġ 2 3 ĊĠĠĠ Ġ} Ċ } Ċ