package Ġcom . simple mobile tools . calendar . activities Ċ Ċ import Ġandroid . app . DatePicker Dialog Ċ import Ġandroid . app . Time Picker Dialog Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . WindowManager Ċ import Ġcom . simple mobile tools . calendar . R Ċ import Ġcom . simple mobile tools . calendar . dialogs . Event Reminder Dialog Ċ import Ġcom . simple mobile tools . calendar . dialogs . Event Repeat Interval Dialog Ċ import Ġcom . simple mobile tools . calendar . dialogs . Select EventType Dialog Ċ import Ġcom . simple mobile tools . calendar . extensions . config Ċ import Ġcom . simple mobile tools . calendar . extensions . get Appro priate Theme Ċ import Ġcom . simple mobile tools . calendar . extensions . get Reminder Text Ċ import Ġcom . simple mobile tools . calendar . extensions . seconds Ċ import Ġcom . simple mobile tools . calendar . helpers .* Ċ import Ġcom . simple mobile tools . calendar . models . Event Ċ import Ġcom . simple mobile tools . commons . dialogs . Confirmation Dialog Ċ import Ġcom . simple mobile tools . commons . extensions .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ event .* Ċ import Ġorg . joda . time . DateTime Ċ Ċ class ĠEvent Activity Ġ: ĠSimple Activity (), ĠDB Helper . Event Update Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Was EndDate Set Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Was EndTime Set Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Reminder 1 Minutes Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Reminder 2 Minutes Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Reminder 3 Minutes Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Repeat Interval Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Repeat Limit Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm EventType Id Ġ= ĠDB Helper . REG ULAR _ EVENT _ ID ĊĠĠĠ Ġprivate Ġvar Ġm Dialog Theme Ġ= Ġ 0 ĊĊĠĠĠ Ġlateinit Ġvar Ġm Event Start DateTime : ĠDateTime ĊĠĠĠ Ġlateinit Ġvar Ġm Event End DateTime : ĠDateTime ĊĠĠĠ Ġlateinit Ġvar Ġm Event : ĠEvent ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ event ) ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġintent Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġm Dialog Theme Ġ= Ġget Appro priate Theme () ĊĊĠĠĠĠĠĠĠ Ġval Ġevent Id Ġ= Ġintent . getInt Extra ( EVENT _ ID , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= ĠDB Helper . newInstance ( application Context ). getEvent ( eventId ) ĊĠĠĠĠĠĠĠ Ġif Ġ( event Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Event Ġ= Ġevent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Edit Event () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Event Ġ= ĠEvent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Reminder 1 Minutes Ġ= Ġconfig . default Reminder Minutes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Reminder 2 Minutes Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Reminder 3 Minutes Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart TS Ġ= Ġintent . getInt Extra ( NEW _ EVENT _ START _ TS , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start TS Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup New Event ( Formatter . get DateTime From TS ( start TS )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcheck Reminder Texts () ĊĠĠĠĠĠĠĠ Ġupdate Re petition Text () ĊĠĠĠĠĠĠĠ Ġupdate StartDate () ĊĠĠĠĠĠĠĠ Ġupdate StartTime () ĊĠĠĠĠĠĠĠ Ġupdate EndDate () ĊĠĠĠĠĠĠĠ Ġupdate EndTime () ĊĠĠĠĠĠĠĠ Ġupdate EventType () ĊĊĠĠĠĠĠĠĠ Ġm Was EndDate Set Ġ= Ġevent Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġm Was EndTime Set Ġ= Ġevent Ġ!= Ġnull ĊĊĠĠĠĠĠĠĠ Ġevent _ start _ date . setOnClickListener Ġ{ Ġsetup StartDate () Ġ} ĊĠĠĠĠĠĠĠ Ġevent _ start _ time . setOnClickListener Ġ{ Ġsetup StartTime () Ġ} ĊĠĠĠĠĠĠĠ Ġevent _ end _ date . setOnClickListener Ġ{ Ġsetup EndDate () Ġ} ĊĠĠĠĠĠĠĠ Ġevent _ end _ time . setOnClickListener Ġ{ Ġsetup EndTime () Ġ} ĊĊĠĠĠĠĠĠĠ Ġevent _ all _ day . setOn Checked ChangeListener Ġ{ Ġcompound Button , Ġis Checked Ġ-> Ġtoggle All Day ( isChecked ) Ġ} ĊĠĠĠĠĠĠĠ Ġevent _ re petition . setOnClickListener Ġ{ Ġshow Repeat Interval Dialog () Ġ} ĊĠĠĠĠĠĠĠ Ġevent _ re petition _ limit _ holder . setOnClickListener Ġ{ Ġshow Re petition Limit Dialog () Ġ} ĊĊĠĠĠĠĠĠĠ Ġevent _ reminder _ 1 . setOnClickListener Ġ{ Ġshow Reminder 1 Dialog () Ġ} ĊĠĠĠĠĠĠĠ Ġevent _ reminder _ 2 . setOnClickListener Ġ{ Ġshow Reminder 2 Dialog () Ġ} ĊĠĠĠĠĠĠĠ Ġevent _ reminder _ 3 . setOnClickListener Ġ{ Ġshow Reminder 3 Dialog () Ġ} ĊĊĠĠĠĠĠĠĠ Ġevent _ type _ holder . setOnClickListener Ġ{ Ġshow EventType Dialog () Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Event . flags Ġand ĠFLAG _ ALL _ DAY Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent _ all _ day . toggle () ĊĊĠĠĠĠĠĠĠ Ġupdate Text Colors ( event _ scroll view ) ĊĠĠĠĠĠĠĠ Ġupdate Icon Colors () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Edit Event () Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow . set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ ALWAYS _ HIDDEN ) ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġresources . getString ( R . string . edit _ event ) ĊĠĠĠĠĠĠĠ Ġm Event Start DateTime Ġ= ĠFormatter . get DateTime From TS ( m Event . start TS ) ĊĠĠĠĠĠĠĠ Ġm Event End DateTime Ġ= ĠFormatter . get DateTime From TS ( m Event . end TS ) ĊĠĠĠĠĠĠĠ Ġevent _ title . setText ( m Event . title ) ĊĠĠĠĠĠĠĠ Ġevent _ description . setText ( m Event . description ) ĊĠĠĠĠĠĠĠ Ġm Reminder 1 Minutes Ġ= Ġm Event . reminder 1 Minutes ĊĠĠĠĠĠĠĠ Ġm Reminder 2 Minutes Ġ= Ġm Event . reminder 2 Minutes ĊĠĠĠĠĠĠĠ Ġm Reminder 3 Minutes Ġ= Ġm Event . reminder 3 Minutes ĊĠĠĠĠĠĠĠ Ġm Repeat Interval Ġ= Ġm Event . repeat Interval ĊĠĠĠĠĠĠĠ Ġm Repeat Limit Ġ= Ġm Event . repeat Limit ĊĠĠĠĠĠĠĠ Ġm EventType Id Ġ= Ġm Event . eventType ĊĠĠĠĠĠĠĠ Ġcheck Repeat Limit ( m Repeat Interval ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup New Event ( dateTime : ĠDateTime ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow . set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ VISIBLE ) ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġresources . getString ( R . string . new _ event ) ĊĠĠĠĠĠĠĠ Ġm Event Start DateTime Ġ= ĠdateTime ĊĊĠĠĠĠĠĠĠ Ġval Ġadd Hours Ġ= Ġif Ġ( intent . getBoolean Extra ( NEW _ EVENT _ SET _ HOUR _ DURATION , Ġfalse )) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġm Event End DateTime Ġ= Ġm Event Start DateTime . plus Hours ( add Hours ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Reminder 1 Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠEvent Reminder Dialog ( this , Ġm Reminder 1 Minutes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Reminder 1 Minutes Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Reminder Texts () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Reminder 2 Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠEvent Reminder Dialog ( this , Ġm Reminder 2 Minutes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Reminder 2 Minutes Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Reminder Texts () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Reminder 3 Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠEvent Reminder Dialog ( this , Ġm Reminder 3 Minutes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Reminder 3 Minutes Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Reminder Texts () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Repeat Interval Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠEvent Repeat Interval Dialog ( this , Ġm Repeat Interval ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Repeat Interval Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Re petition Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Repeat Limit ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Repeat Limit ( limit : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġevent _ re petition _ limit _ holder . be G one If ( limit Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġcheck Re petition Limit Text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Re petition Limit Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= Ġ( System . currentTimeMillis () Ġ/ Ġ 1 0 0 0 ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġrepeat Limit DateTime Ġ= ĠFormatter . get DateTime From TS ( if Ġ( m Repeat Limit Ġ!= Ġ 0 ) Ġm Repeat Limit Ġelse Ġnow ) ĊĠĠĠĠĠĠĠ ĠDate Picker Dialog ( this , Ġm Dialog Theme , Ġrepet ition Limit Date Set Listener , Ġrepeat Limit DateTime . year , Ġrepeat Limit DateTime . month OfYear Ġ- Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Limit DateTime . day OfMonth ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġrepet ition Limit Date Set Listener Ġ= ĠDate Picker Dialog . On Date Set Listener Ġ{ Ġview , Ġyear , Ġmonth OfYear , Ġday OfMonth Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġrepeat Limit DateTime Ġ= ĠDateTime (). with Date ( year , Ġmonth OfYear Ġ+ Ġ 1 , Ġday OfMonth ). with Time ( 2 3 , Ġ 5 9 , Ġ 5 9 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( repeat Limit DateTime . seconds () Ġ< Ġm Event . end TS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Repeat Limit Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Repeat Limit Ġ= Ġrepeat Limit DateTime . seconds () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcheck Re petition Limit Text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Re petition Limit Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġevent _ re petition _ limit . text Ġ= Ġif Ġ( m Repeat Limit Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . fore ver ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepeat Limit DateTime Ġ= ĠFormatter . get DateTime From TS ( m Repeat Limit ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFormatter . getDate ( application Context , Ġrepeat Limit DateTime , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow EventType Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠSelect EventType Dialog ( this , Ġm EventType Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm EventType Id Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate EventType () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Reminder Texts () Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Reminder 1 Text () ĊĠĠĠĠĠĠĠ Ġupdate Reminder 2 Text () ĊĠĠĠĠĠĠĠ Ġupdate Reminder 3 Text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Reminder 1 Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġevent _ reminder _ 1 . text Ġ= Ġget Reminder Text ( m Reminder 1 Minutes ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m Reminder 1 Minutes Ġ== ĠRE M IND ER _ OFF ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Reminder 2 Minutes Ġ= ĠRE M IND ER _ OFF ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Reminder 3 Minutes Ġ= ĠRE M IND ER _ OFF ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Reminder 2 Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġevent _ reminder _ 2 . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbe G one If ( m Reminder 1 Minutes Ġ== ĠRE M IND ER _ OFF ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Reminder 2 Minutes Ġ== ĠRE M IND ER _ OFF ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġresources . getString ( R . string . add _ another _ reminder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 0 . 4 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Reminder 3 Minutes Ġ= ĠRE M IND ER _ OFF ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġget Reminder Text ( m Reminder 2 Minutes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Reminder 3 Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġevent _ reminder _ 3 . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbe G one If ( m Reminder 2 Minutes Ġ== ĠRE M IND ER _ OFF Ġ|| Ġm Reminder 1 Minutes Ġ== ĠRE M IND ER _ OFF ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Reminder 3 Minutes Ġ== ĠRE M IND ER _ OFF ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġresources . getString ( R . string . add _ another _ reminder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 0 . 4 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġget Reminder Text ( m Reminder 3 Minutes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Re petition Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġevent _ re petition . text Ġ= Ġget Re petition ToString ( m Repeat Interval ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate EventType () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠeventType Ġ= ĠDB Helper . newInstance ( application Context ). get EventType ( m EventType Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( eventType Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent _ type . text Ġ= ĠeventType . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent _ type _ color . setBackground With Stroke ( eventType . color , Ġconfig . backgroundColor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Re petition ToString ( seconds : ĠInt ) Ġ= ĠgetString ( when Ġ( seconds ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDAY Ġ-> ĠR . string . daily ĊĠĠĠĠĠĠĠ ĠW EEK Ġ-> ĠR . string . weekly ĊĠĠĠĠĠĠĠ ĠBI WEEK Ġ-> ĠR . string . bi weekly ĊĠĠĠĠĠĠĠ ĠMON TH Ġ-> ĠR . string . monthly ĊĠĠĠĠĠĠĠ ĠYEAR Ġ-> ĠR . string . year ly ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . no _ re petition ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġfun Ġtoggle All Day ( isChecked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġevent _ start _ time . be G one If ( isChecked ) ĊĠĠĠĠĠĠĠ Ġevent _ end _ time . be G one If ( isChecked ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ event , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . cab _ delete ). isVisible Ġ= Ġm Event . id Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . cab _ delete Ġ-> Ġdelete Event () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . save Ġ-> Ġsave Event () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Event () Ġ{ ĊĠĠĠĠĠĠĠ ĠConfirm ation Dialog ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDB Helper . newInstance ( application Context , Ġthis ). delete Events ( array Of ( m Event . id . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Event () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Title Ġ= Ġevent _ title . value ĊĠĠĠĠĠĠĠ Ġif Ġ( new Title . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . title _ empty ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent _ title . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Start TS Ġ= Ġm Event Start DateTime . seconds () ĊĠĠĠĠĠĠĠ Ġval Ġnew End TS Ġ= Ġm Event End DateTime . seconds () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( new Start TS Ġ> Ġnew End TS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . end _ before _ start ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrem inders Ġ= Ġsorted Set Of ( m Reminder 1 Minutes , Ġm Reminder 2 Minutes , Ġm Reminder 3 Minutes ). filter Ġ{ Ġit Ġ!= ĠRE M IND ER _ OFF Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdb Helper Ġ= ĠDB Helper . newInstance ( application Context , Ġthis ) ĊĠĠĠĠĠĠĠ Ġval Ġnew Description Ġ= Ġevent _ description . value ĊĠĠĠĠĠĠĠ Ġm Event . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart TS Ġ= Ġnew Start TS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend TS Ġ= Ġnew End TS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġnew Title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġnew Description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreminder 1 Minutes Ġ= Ġrem inders . elementAt OrElse ( 0 ) Ġ{ ĠRE M IND ER _ OFF Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreminder 2 Minutes Ġ= Ġrem inders . elementAt OrElse ( 1 ) Ġ{ ĠRE M IND ER _ OFF Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreminder 3 Minutes Ġ= Ġrem inders . elementAt OrElse ( 2 ) Ġ{ ĠRE M IND ER _ OFF Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Interval Ġ= Ġm Repeat Interval ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= Ġif Ġ( event _ all _ day . isChecked ) Ġ( m Event . flags Ġor ĠFLAG _ ALL _ DAY ) Ġelse Ġ( m Event . flags . remove Flag ( FLAG _ ALL _ DAY )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Limit Ġ= Ġif Ġ( repeat Interval Ġ== Ġ 0 ) Ġ 0 Ġelse Ġm Repeat Limit ĊĠĠĠĠĠĠĠĠĠĠĠ ĠeventType Ġ= Ġm EventType Id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Event . id Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper . insert ( m Event ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper . update ( m Event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate StartDate () Ġ{ ĊĠĠĠĠĠĠĠ Ġevent _ start _ date . text Ġ= ĠFormatter . getDate ( application Context , Ġm Event Start DateTime ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate StartTime () Ġ{ ĊĠĠĠĠĠĠĠ Ġevent _ start _ time . text Ġ= ĠFormatter . getTime ( this , Ġm Event Start DateTime ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate EndDate () Ġ{ ĊĠĠĠĠĠĠĠ Ġevent _ end _ date . text Ġ= ĠFormatter . getDate ( application Context , Ġm Event End DateTime ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate EndTime () Ġ{ ĊĠĠĠĠĠĠĠ Ġevent _ end _ time . text Ġ= ĠFormatter . getTime ( this , Ġm Event End DateTime ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup StartDate () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠ Ġconfig . backgroundColor . get Contrast Color () ĊĠĠĠĠĠĠĠ ĠDate Picker Dialog ( this , Ġm Dialog Theme , ĠstartDate Set Listener , Ġm Event Start DateTime . year , Ġm Event Start DateTime . month OfYear Ġ- Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Event Start DateTime . day OfMonth ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup StartTime () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠ ĠTime Picker Dialog ( this , Ġm Dialog Theme , ĠstartTime Set Listener , Ġm Event Start DateTime . hour OfDay , Ġm Event Start DateTime . minute Of Hour , Ġtrue ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup EndDate () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠ ĠDate Picker Dialog ( this , Ġm Dialog Theme , ĠendDate Set Listener , Ġm Event End DateTime . year , Ġm Event End DateTime . month OfYear Ġ- Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Event End DateTime . day OfMonth ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup EndTime () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠ ĠTime Picker Dialog ( this , Ġm Dialog Theme , ĠendTime Set Listener , Ġm Event End DateTime . hour OfDay , Ġm Event End DateTime . minute Of Hour , Ġtrue ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠstartDate Set Listener Ġ= ĠDate Picker Dialog . On Date Set Listener Ġ{ Ġview , Ġyear , Ġmonth OfYear , Ġday OfMonth Ġ-> ĊĠĠĠĠĠĠĠ Ġdate Set ( year , Ġmonth OfYear , Ġday OfMonth , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Was EndDate Set ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Set ( year , Ġmonth OfYear , Ġday OfMonth , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠstartTime Set Listener Ġ= ĠTime Picker Dialog . On Time Set Listener Ġ{ Ġview , Ġhour OfDay , Ġminute Ġ-> ĊĠĠĠĠĠĠĠ Ġtime Set ( hour OfDay , Ġminute , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Was EndTime Set ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Set ( hour OfDay , Ġminute , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠendDate Set Listener Ġ= ĠDate Picker Dialog . On Date Set Listener Ġ{ Ġview , Ġyear , Ġmonth OfYear , Ġday OfMonth Ġ-> Ġdate Set ( year , Ġmonth OfYear , Ġday OfMonth , Ġfalse ) Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠendTime Set Listener Ġ= ĠTime Picker Dialog . On Time Set Listener Ġ{ Ġview , Ġhour OfDay , Ġminute Ġ-> Ġtime Set ( hour OfDay , Ġminute , Ġfalse ) Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdate Set ( year : ĠInt , Ġmonth : ĠInt , Ġday : ĠInt , Ġis Start : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Event Start DateTime Ġ= Ġm Event Start DateTime . with Date ( year , Ġmonth Ġ+ Ġ 1 , Ġday ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate StartDate () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Event End DateTime Ġ= Ġm Event End DateTime . with Date ( year , Ġmonth Ġ+ Ġ 1 , Ġday ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate EndDate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Was EndDate Set Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtime Set ( hours : ĠInt , Ġminutes : ĠInt , Ġis Start : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Event Start DateTime Ġ= Ġm Event Start DateTime . with Hour OfDay ( hours ). with Minute Of Hour ( minutes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate StartTime () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Event End DateTime Ġ= Ġm Event End DateTime . with Hour OfDay ( hours ). with Minute Of Hour ( minutes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate EndTime () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Was EndTime Set Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Icon Colors () Ġ{ ĊĠĠĠĠĠĠĠ Ġevent _ time _ image . setColor Filter ( config . textColor , ĠPort er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠ Ġevent _ re petition _ image . setColor Filter ( config . textColor , ĠPort er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠ Ġevent _ reminder _ image . setColor Filter ( config . textColor , ĠPort er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠ Ġevent _ type _ image . setColor Filter ( config . textColor , ĠPort er D uff . Mode . SRC _ IN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġevent Inserted ( event : ĠEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( DateTime . now (). is After ( m Event Start DateTime . millis )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . past _ event _ added ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . event _ added ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġevent Updated ( event : ĠEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoast ( R . string . event _ updated ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġevents Deleted ( cnt : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgot Events ( events : ĠMutable List < Event >) Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ