package Ġcom . alex styl . special dates . daily reminder Ċ Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . text . Sp ann able Ċ import Ġandroid . text . Sp ann able String Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . text . style . ForegroundColor Span Ċ import Ġandroid . text . style . Style Span Ċ import Ġcom . alex styl . resources . Colors Ċ import Ġcom . alex styl . special dates . Strings Ċ import Ġcom . alex styl . special dates . contact . Contact Ċ import Ġcom . alex styl . special dates . date . Contact Event Ċ import Ġcom . alex styl . special dates . date . Date Ċ import Ġcom . alex styl . special dates . events . bank h olidays . Bank H oliday Ċ import Ġcom . alex styl . special dates . events . name days . Names In AD ate Ċ import Ġcom . alex styl . special dates . events . people events . Standard EventType Ċ import Ġcom . alex styl . special dates . util . Natural Language Utils Ċ import Ġjava . net . URI Ċ Ċ class ĠAndroid Daily Reminder ViewModel Factory ( private Ġval Ġstrings : ĠStrings , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġto days Date : ĠDate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcolors : ĠColors ) ĊĠĠĠ Ġ: ĠDaily Reminder ViewModel Factory Ġ{ ĊĊĊĠĠĠ Ġoverride Ġfun Ġsummary Of ( view Models : ĠList < Contact Event Notification ViewModel >): ĠSummary Notification ViewModel Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontacts Ġ= Ġview Models . fold ( emptyList < Contact >(), Ġ{ Ġlist , ĠviewModel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+ ĠviewModel . contact ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠNatural Language Utils . join Contacts ( strings , Ġcontacts , ĠMAX _ CONTACT S ) ĊĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġstrings . dont For get ToSend W ishes () ĊĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġarray ListOf < CharSequence >() ĊĠĠĠĠĠĠĠ Ġview Models . forEach Ġ{ Ġcontact ViewModel Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbol ded Title Ġ= ĠSp ann able String ("${ contact ViewModel . title }\ t \ t ${ contact ViewModel . label } "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Span ( Style Span ( Type face . BOLD ), Ġ 0 , Ġcontact ViewModel . title . length , ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines . add ( bol ded Title ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġimages Ġ= Ġview Models . fold ( emptyList < URI >(), Ġ{ Ġlist , ĠviewModel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+ ĠviewModel . contact . image Path ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠSummary Notification ViewModel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Constants . NOTIFICATION _ ID _ CONTACT S _ SUM MARY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle , Ġlabel , Ġlines , Ġimages ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠviewModel For ( contact : ĠContact , Ġevents : ĠList < Contact Event >): ĠContact Event Notification ViewModel Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠSp ann able StringBuilder () ĊĠĠĠĠĠĠĠ Ġevents . forEach Ġ{ Ġcontact Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolored Label Ġ= ĠSp ann able String ( contact Event . getLabel ( tod ays Date , Ġstrings ) Ġ+ Ġ" Ġ" Ġ+ Ġemoji For ( contact Event )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Span ( ForegroundColor Span ( colors . getColor For ( contact Event . type )), Ġ 0 , Ġthis . length , ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( string Builder . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( colored Label ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠContact Event Notification ViewModel ( events . hashCode (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact . displayName . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () Ġ// ĠTODO Ġfeature Ġcoming Ġfrom Ġthe Ġnotification _ actions Ġbranch ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġemoji For ( contact Event : ĠContact Event ): ĠCharSequence Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( contact Event . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStandard EventType . B IR TH DAY Ġ-> Ġ" ðŁ į° " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStandard EventType . NAME DAY Ġ-> Ġ" ðŁ İ Ī " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStandard EventType . AN NI VER S ARY Ġ-> Ġ" ðŁĴ į " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStandard EventType . OTHER Ġ-> Ġ" ðŁĮ ¸ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠviewModel For ( name days : ĠNames In AD ate ): ĠName days Notification ViewModel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠName days Notification ViewModel ( name days . date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrings . tod ays Name days ( name days . get Names (). size ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname days . get Names (). join ToString (", Ġ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠviewModel For ( bank H oliday : ĠBank H oliday ): ĠBank H oliday Notification ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBank H oliday Notification ViewModel ( bank H oliday . holiday Name , Ġstrings . bank holiday Subtitle ()) ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMAX _ CONTACT S Ġ= Ġ 3 ĊĠĠĠ Ġ} Ċ Ċ } Ċ