package Ġcom . k iz iton wo se . calendar view sample ĊĊ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . graphics . drawable . Gradient Drawable Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . view . children Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . k iz iton wo se . calendar view . model . Calendar Day Ċ import Ġcom . k iz iton wo se . calendar view . model . Calendar Month Ċ import Ġcom . k iz iton wo se . calendar view . model . Day Owner Ċ import Ġcom . k iz iton wo se . calendar view . ui . Day Binder Ċ import Ġcom . k iz iton wo se . calendar view . ui . Month Header Footer Binder Ċ import Ġcom . k iz iton wo se . calendar view . ui . View Container Ċ import Ġcom . k iz iton wo se . calendar view . utils . pers ian .* Ċ import Ġkotlinx . android . synt hetic . main . calendar _ day _ legend .* Ċ import Ġkotlinx . android . synt hetic . main . example _ 4 _ calendar _ header . view .* Ċ import Ġkotlinx . android . synt hetic . main . example _ 8 _ calendar _ day . view .* Ċ import Ġkotlinx . android . synt hetic . main . example _ 8 _ fragment .* Ċ import Ġorg . th reet en . bp . LocalDate Ċ import Ġorg . th reet en . bp . Year Month Ċ import Ġorg . th reet en . bp . format . DateTime Formatter Ċ Ċ class ĠExample 8 Fragment Ġ: ĠBase Fragment (), ĠHas Toolbar , ĠHas Back Button Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġtoolbar : ĠToolbar ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġex E ight Toolbar ĊĊĠĠĠ Ġoverride Ġval Ġtitle Res : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġtoday Ġ= ĠLocalDate . now () ĊĊĠĠĠ Ġprivate Ġvar ĠstartDate : ĠLocalDate ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠendDate : ĠLocalDate ? Ġ= Ġnull ĊĊĊĠĠĠ Ġprivate Ġval Ġstart Background : ĠGradient Drawable Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Context (). get Drawable Compat ( R . drawable . example _ 8 _ continuous _ selected _ bg _ start ) Ġas ĠGradient Drawable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġend Background : ĠGradient Drawable Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Context (). get Drawable Compat ( R . drawable . example _ 8 _ continuous _ selected _ bg _ end ) Ġas ĠGradient Drawable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . example _ 8 _ fragment , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġset Ġthe Ġradius Ġof Ġthe Ġcontinuous Ġselection Ġbackground Ġdrawable Ġdynamically ĊĠĠĠĠĠĠĠ Ġ// Ġsince Ġthe Ġview Ġsize Ġis Ġ` match Ġparent ` Ġhence Ġwe Ġcannot Ġdetermine Ġthe Ġappropriate ĊĠĠĠĠĠĠĠ Ġ// Ġradius Ġvalue Ġwhich Ġwould Ġequal Ġhalf Ġof Ġthe Ġview 's Ġsize Ġbefore hand . ĊĠĠĠĠĠĠĠ Ġex E ight Calendar . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġradius Ġ= Ġ(( ex E ight Calendar . width Ġ/ Ġ 7 ) Ġ/ Ġ 2 ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Background . set Corner Radius ( top Left Ġ= Ġradius , Ġbottom Left Ġ= Ġradius ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Background . set Corner Radius ( top Right Ġ= Ġradius , Ġbottom Right Ġ= Ġradius ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe ĠFirst Ġday Ġof Ġweek Ġof ĠPers ian ĠLocale ĊĠĠĠĠĠĠĠ Ġval Ġdays OfWeek Ġ= Ġdays OfWeek From Locale ( Pers ian Calendar Constants . get Fa Locale ()) ĊĠĠĠĠĠĠĠ Ġdays OfWeek . reverse () ĊĊĠĠĠĠĠĠĠ Ġlegend Layout . children . forEach Indexed Ġ{ Ġindex , Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( view Ġas ĠTextView ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdays OfWeek [ index ]. get Pers ian Display First Char String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text Size ( Typed Value . COMPLEX _ UNIT _ SP , Ġ 1 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor Res ( R . color . example _ 8 _ grey ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Month Ġ= ĠYear Month . now () ĊĠĠĠĠĠĠĠ Ġex E ight Calendar . setup ( current Month , Ġcurrent Month . plus Months ( 1 2 ), Ġdays OfWeek . first ()) ĊĠĠĠĠĠĠĠ Ġex E ight Calendar . scrollTo Month ( current Month ) ĊĊĠĠĠĠĠĠĠ Ġclass ĠDay View Container ( view : ĠView ) Ġ: ĠView Container ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġday : ĠCalendar Day Ġ// ĠWill Ġbe Ġset Ġwhen Ġthis Ġcontainer Ġis Ġbound . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= Ġview . ex E ight Day Text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġround Bg View Ġ= Ġview . ex E ight Round Bg View ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( day . owner Ġ== ĠDay Owner . THIS _ MONTH Ġ&& Ġ( day . date Ġ== Ġtoday Ġ|| Ġday . date . is After ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoday ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġday . date ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( startDate Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( date Ġ< ĠstartDate Ġ|| ĠendDate Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate Ġ= Ġdate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendDate Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( date Ġ!= ĠstartDate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendDate Ġ= Ġdate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate Ġ= Ġdate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex E ight Calendar . notify Calendar Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Summary Views () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġex E ight Calendar . day Binder Ġ= Ġobject Ġ: ĠDay Binder < Day View Container > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate ( view : ĠView ) Ġ= ĠDay View Container ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind ( container : ĠDay View Container , Ġday : ĠCalendar Day ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . day Ġ= Ġday ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= Ġcontainer . textView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġround Bg View Ġ= Ġcontainer . round Bg View ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . background Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Bg View . make In Visible () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( day . owner Ġ== ĠDay Owner . THIS _ MONTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġday . pers ian Calendar . pers ian Day . toString (). pers ian Numbers () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( day . date . is Before ( today )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setTextColor Res ( R . color . example _ 8 _ grey _ past ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate Ġ== Ġday . date Ġ&& ĠendDate Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setTextColor Res ( R . color . example _ 8 _ day _ selected _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Bg View . make Visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Bg View . setBackground Resource ( R . drawable . example _ 8 _ single _ selected _ bg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday . date Ġ== ĠstartDate Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setTextColor Res ( R . color . example _ 8 _ day _ selected _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . background Ġ= Ġstart Background ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate Ġ!= Ġnull Ġ&& ĠendDate Ġ!= Ġnull Ġ&& Ġ( day . date Ġ> ĠstartDate Ġ&& Ġday . date Ġ< ĠendDate ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setTextColor Res ( R . color . example _ 8 _ day _ selected _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setBackground Resource ( R . drawable . example _ 8 _ continuous _ selected _ bg _ middle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday . date Ġ== ĠendDate Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setTextColor Res ( R . color . example _ 8 _ day _ selected _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . background Ġ= Ġend Background ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday . date Ġ== Ġtoday Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setTextColor Res ( R . color . example _ 8 _ grey ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Bg View . make Visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Bg View . setBackground Resource ( R . drawable . example _ 8 _ today _ bg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠtextView . setTextColor Res ( R . color . example _ 8 _ grey ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġpart Ġis Ġto Ġmake Ġthe Ġcolo ured Ġselection Ġbackground Ġcontinuous ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġon Ġthe Ġblank Ġin Ġand Ġout Ġdates Ġacross Ġvarious Ġmonths Ġand Ġalso Ġon Ġdates ( months ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbetween Ġthe Ġstart Ġand Ġend Ġdates Ġif Ġthe Ġselection Ġspans Ġacross Ġmultiple Ġmonths . ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= ĠstartDate ?. to Pers ian Calendar () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= ĠendDate ?. to Pers ian Calendar () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( startDate Ġ!= Ġnull Ġ&& ĠendDate Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠM imic Ġselection Ġof Ġin Dates Ġthat Ġare Ġless Ġthan Ġthe ĠstartDate . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠExample : ĠWhen Ġ 2 6 ĠFeb Ġ 2 0 1 9 Ġis ĠstartDate Ġand Ġ 5 ĠMar Ġ 2 0 1 9 Ġis ĠendDate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġmakes Ġthe Ġin Dates Ġin ĠMar Ġ 2 0 1 9 Ġfor Ġ 2 4 Ġ& Ġ 2 5 ĠFeb Ġ 2 0 1 9 Ġlook Ġselected . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( day . owner Ġ== ĠDay Owner . PREVIOUS _ MONTH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠstartDate . pers ian Month Ġ== Ġday . pers ian Calendar . pers ian Month ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠendDate . pers ian Month Ġ!= Ġday . pers ian Calendar . pers ian Month ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠM imic Ġselection Ġof Ġout Dates Ġthat Ġare Ġgreater Ġthan Ġthe ĠendDate . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠExample : ĠWhen Ġ 2 5 ĠApr Ġ 2 0 1 9 Ġis ĠstartDate Ġand Ġ 2 ĠMay Ġ 2 0 1 9 Ġis ĠendDate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġmakes Ġthe Ġout Dates Ġin ĠApr Ġ 2 0 1 9 Ġfor Ġ 3 Ġ& Ġ 4 ĠMay Ġ 2 0 1 9 Ġlook Ġselected . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( day . owner Ġ== ĠDay Owner . NEXT _ MONTH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠstartDate . pers ian Month Ġ!= Ġday . pers ian Calendar . pers ian Month ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠendDate . pers ian Month Ġ== Ġday . pers ian Calendar . pers ian Month ) Ġ|| ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠM imic Ġselection Ġof Ġin Ġand Ġout Ġdates Ġof Ġintermediate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmonths Ġif Ġthe Ġselection Ġspans Ġacross Ġmultiple Ġmonths . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( startDate Ġ< Ġday . pers ian Calendar Ġ&& ĠendDate Ġ> Ġday . pers ian Calendar ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠstartDate . pers ian Month Ġ!= Ġday . pers ian Calendar . pers ian Month ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠendDate . pers ian Month Ġ!= Ġday . pers ian Calendar . pers ian Month ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setBackground Resource ( R . drawable . example _ 8 _ continuous _ selected _ bg _ middle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclass ĠMonth View Container ( view : ĠView ) Ġ: ĠView Container ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= Ġview . ex Four Header Text ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġex E ight Calendar . month Header Binder Ġ= Ġobject Ġ: ĠMonth Header Footer Binder < Month View Container > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate ( view : ĠView ) Ġ= ĠMonth View Container ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind ( container : ĠMonth View Container , Ġmonth : ĠCalendar Month ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpers ian l Calendar Ġ= Ġmonth . year Month . pers ian l Calendar () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmonth Title Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ pers ian l Calendar . pers ian Month Name } Ġ${ pers ian l Calendar . pers ian Year . toString (). pers ian Numbers () }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . textView . text Ġ= Ġmonth Title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġex E ight Save Button . setOnClickListener Ġclick @{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= ĠstartDate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= ĠendDate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( startDate Ġ!= Ġnull Ġ&& ĠendDate Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformatter Ġ= ĠDateTime Formatter . of Pattern (" d ĠM MMM Ġy yyy ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ" Selected : Ġ${ formatter . format ( startDate )} Ġ- Ġ${ formatter . format ( endDate )}" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( require View (), Ġtext , ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire View (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" No Ġselection . ĠSearch ing Ġall ĠAir bnb Ġlist ings .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager ?. pop Back Stack () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbind Summary Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Summary Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( startDate Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate ?. to Pers ian Calendar ()?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex E ight StartDate Text . text Ġ= Ġget Header Formatted Date ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex E ight StartDate Text . setTextColor Res ( R . color . example _ 8 _ grey ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex E ight StartDate Text . text Ġ= ĠgetString ( R . string . fa _ start _ date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex E ight StartDate Text . setTextColor ( Color . GRAY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( endDate Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠendDate ?. to Pers ian Calendar ()?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex E ight EndDate Text . text Ġ= Ġget Header Formatted Date ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex E ight EndDate Text . setTextColor Res ( R . color . example _ 8 _ grey ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex E ight EndDate Text . text Ġ= ĠgetString ( R . string . fa _ end _ date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex E ight EndDate Text . setTextColor ( Color . GRAY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnable Ġsave Ġbutton Ġif Ġa Ġrange Ġis Ġselected Ġor Ġno Ġdate Ġis Ġselected Ġat Ġall , ĠAir bnb Ġstyle . ĊĠĠĠĠĠĠĠ Ġex E ight Save Button . isEnabled Ġ= ĠendDate Ġ!= Ġnull Ġ|| Ġ( startDate Ġ== Ġnull Ġ&& ĠendDate Ġ== Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Header Formatted Date ( pers ian Calendar : ĠPers ian Calendar ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetString ( R . string . header _ date _ format ). format ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpers ian Calendar . pers ian Week Day Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpers ian Calendar . pers ian Day , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpers ian Calendar . pers ian Month Name ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . example _ 4 _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġex E ight Toolbar . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠConfigure Ġmenu Ġtext Ġto Ġmatch Ġwhat Ġis Ġin Ġthe ĠAir bnb Ġapp . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex E ight Toolbar . findViewById < TextView >( R . id . menuItem Clear ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( require Context (). getColor Compat ( R . color . example _ 4 _ grey )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text Size ( Typed Value . COMPLEX _ UNIT _ SP , Ġ 1 6 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis All Caps Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== ĠR . id . menuItem Clear ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠendDate Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex E ight Calendar . notify Calendar Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind Summary Views () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġval Ġclose Indicator Ġ= Ġrequire Context (). get Drawable Compat ( R . drawable . ic _ close )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Color Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (). getColor Compat ( R . color . example _ 4 _ grey ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPort er D uff . Mode . SRC _ AT OP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ). support ActionBar ?. set Home As Up Indicator ( close Indicator ) ĊĠĠĠĠĠĠĠ Ġrequire Activity (). window . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġstatus bar Ġcolor Ġto Ġmatch Ġtoolbar Ġcolor . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Color Ġ= Ġrequire Context (). getColor Compat ( R . color . white ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecor View . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Color Ġ= ĠColor . GRAY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġrequire Activity (). window . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReset Ġstatus bar Ġcolor . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Color Ġ= Ġrequire Context (). getColor Compat ( R . color . color Primary Dark ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecor View . system Ui Visibility Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ