Ejemplo n.º 1
0
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();
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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());

}