double // Adds # of days to given date AddDays(double date // date to which to add ,double days // number of days to add ) { DateTime theTime = DateTime::FromOADate(date); theTime = theTime.AddDays(days); return theTime.ToOADate(); }
result EditEventForm::UpdateEvent(void) { result r = E_SUCCESS; // Sets the Subject String strValue = __pSubjectEditField->GetText(); if (strValue.IsEmpty() == false) { __pCalEvent->SetSubject(strValue); } // Sets the Location __pCalEvent->SetLocation(__pLocationEditField->GetText()); // Sets the Description __pCalEvent->SetDescription(__pDescriptionEditField->GetText()); // Sets the Priority __pCalEvent->SetPriority(__selectedPriority); // Sets the Sensitivity __pCalEvent->SetSensitivity(__selectedSensitivity); // Sets the Status __pCalEvent->SetStatus(__selectedStatus); // Gets the Time zone. LocaleManager localeManager; localeManager.Construct(); TimeZone timeZone = localeManager.GetSystemTimeZone(); __pCalEvent->SetTimeZone(timeZone); DateTime startDate; DateTime endDate; __pCalEvent->SetRecurrence(null); if (__pIsAllDayButton->IsSelected() == true) { __pCalEvent->SetAllDayEvent(true); startDate = __pStartEditDate->GetDate(); endDate = __pEndEditDate->GetDate(); endDate.AddDays(1); __pCalEvent->SetStartAndEndTime(startDate, endDate); } else { __pCalEvent->SetAllDayEvent(false); startDate.SetValue(__pStartEditDate->GetYear(), __pStartEditDate->GetMonth(), __pStartEditDate->GetDay(), __pStartEditTime->GetHour(), __pStartEditTime->GetMinute(), 0); endDate.SetValue(__pEndEditDate->GetYear(), __pEndEditDate->GetMonth(), __pEndEditDate->GetDay(), __pEndEditTime->GetHour(), __pEndEditTime->GetMinute(), 0); __pCalEvent->SetStartAndEndTime(timeZone.WallTimeToUtcTime(startDate), timeZone.WallTimeToUtcTime(endDate)); } // Sets the Reminder const IList& pReminderList = __pCalEvent->GetAllReminders(); if (pReminderList.GetCount() > 0) { __pCalEvent->RemoveReminderAt(0); } strValue = __pReminderEditField->GetText(); if (strValue.IsEmpty() == false) { int timeOffset = 0; Integer::Parse(strValue, timeOffset); if (timeOffset > 0) { Reminder reminder; reminder.SetTimeOffset(__selectedReminder, timeOffset); __pCalEvent->AddReminder(reminder); } } // Sets the Recurrence if (__pRecurrence != null) { const DateTime* pUntilDate = __pRecurrence->GetUntil(); if (pUntilDate && __pCalEvent->IsAllDayEvent() == false) { DateTime utcTime = timeZone.WallTimeToUtcTime(*pUntilDate); __pRecurrence->SetUntil(&utcTime); } r = __pCalEvent->SetRecurrence(__pRecurrence); TryCatch(!IsFailed(r), , "[%s] Failed to set recurrence to event.", GetErrorMessage(r)); } r = __pCalendarbook->UpdateEvent(*__pCalEvent); TryCatch(!IsFailed(r), , "[%s] Failed to update the event.", GetErrorMessage(r)); return r; CATCH: int doModal; MessageBox messageBox; messageBox.Construct(L"Error", "Failed to edit the event.", MSGBOX_STYLE_OK, 0); messageBox.ShowAndWait(doModal); return r; }
void EditEventForm::LoadEvent(void) { result r = E_SUCCESS; // Loads the Subject __pSubjectEditField->SetText(__pCalEvent->GetSubject()); // Loads the Time DateTime startDate = __pCalEvent->GetStartTime(); DateTime endDate = __pCalEvent->GetEndTime(); if (__pCalEvent->IsAllDayEvent() == true) { __pIsAllDayButton->SetSelected(true); // Start Date __pStartEditDate->SetDate(startDate); __pStartEditTime->SetShowState(false); // End Date if(startDate < endDate) { endDate.AddDays(-1); } __pEndEditDate->SetDate(endDate); __pEndEditTime->SetShowState(false); } else { // Convert UTC time to local time LocaleManager localeManager; r = localeManager.Construct(); TryReturnVoid(!IsFailed(r), "[%s] Failed to construct localeManager.", GetErrorMessage(r)); TimeZone timeZone = localeManager.GetSystemTimeZone(); startDate = timeZone.UtcTimeToWallTime(startDate); endDate = timeZone.UtcTimeToWallTime(endDate); // Start Date __pStartEditDate->SetDate(startDate); __pStartEditTime->SetTime(startDate); // End Date __pEndEditDate->SetDate(endDate); __pEndEditTime->SetTime(endDate); } // Loads the Location __pLocationEditField->SetText(__pCalEvent->GetLocation()); // Loads the Priority __selectedPriority = __pCalEvent->GetPriority(); switch (__selectedPriority) { case EVENT_PRIORITY_LOW: __pPriorityContextButton->SetText(L"Low"); break; case EVENT_PRIORITY_NORMAL: __pPriorityContextButton->SetText(L"Normal"); break; case EVENT_PRIORITY_HIGH: __pPriorityContextButton->SetText(L"High"); break; default: break; } // Loads the Sensitivity __selectedSensitivity = __pCalEvent->GetSensitivity(); switch (__selectedSensitivity) { case SENSITIVITY_PUBLIC: __pSensitivityContextButton->SetText(L"Public"); break; case SENSITIVITY_PRIVATE: __pSensitivityContextButton->SetText(L"Private"); break; case SENSITIVITY_CONFIDENTIAL: __pSensitivityContextButton->SetText(L"Confidential"); break; default: break; } // Loads the Status __selectedStatus = __pCalEvent->GetStatus(); switch (__selectedStatus) { case EVENT_STATUS_NONE: __pStatusContextButton->SetText(L"None"); break; case EVENT_STATUS_CONFIRMED: __pStatusContextButton->SetText(L"Confirmed"); break; case EVENT_STATUS_CANCELLED: __pStatusContextButton->SetText(L"Cancelled"); break; case EVENT_STATUS_TENTATIVE: __pStatusContextButton->SetText(L"Tentative"); break; default: break; } // Loads the Reminder const IList& pReminderList = __pCalEvent->GetAllReminders(); const Reminder* pReminder = static_cast< const Reminder* >(pReminderList.GetAt(0)); if (pReminder != null) { int timeOffset = pReminder->GetTimeOffset(); switch (pReminder->GetTimeUnit()) { case REMINDER_TIME_UNIT_MINUTE: __pReminderContextButton->SetText(L"minutes(s)"); break; case REMINDER_TIME_UNIT_HOUR: __pReminderContextButton->SetText(L"hour(s)"); break; case REMINDER_TIME_UNIT_DAY: __pReminderContextButton->SetText(L"day(s)"); break; case REMINDER_TIME_UNIT_WEEK: __pReminderContextButton->SetText(L"week(s)"); break; case REMINDER_TIME_UNIT_NONE: default: break; } __pReminderEditField->SetText(Integer::ToString(timeOffset)); } // Loads the Recurrence const Recurrence* pRecurrence = __pCalEvent->GetRecurrence(); String RecurrenceValue; if (pRecurrence != null) { __pRecurrence = new (std::nothrow) Recurrence(*pRecurrence); } else { __pRecurrence = null; } __pSetRecurrenceButton->SetText(GetRecurrenceString()); // Loads the Description __pDescriptionEditField->SetText(__pCalEvent->GetDescription()); }