X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fobjects%2Fcalendarevent%2FCalendarEvent.cpp;h=ab88fe4343f060850eeee02fdecfdc78166add5c;hb=284c77ac5ae39b716dca3b88b365dc335759af22;hp=32b0a6fd4a54a1b3e81a6e66a41fa78c885f6fc8;hpb=0cfd3d8c640fecbe912a8666b8b8dc8771cec825;p=xestiacalendar%2F.git diff --git a/source/objects/calendarevent/CalendarEvent.cpp b/source/objects/calendarevent/CalendarEvent.cpp index 32b0a6f..ab88fe4 100644 --- a/source/objects/calendarevent/CalendarEvent.cpp +++ b/source/objects/calendarevent/CalendarEvent.cpp @@ -1454,16 +1454,91 @@ void CalendarEventObject::ProcessData(){ } + // Process Alarm section. + + ProcessAlarms(); + + int SeekCount = 0; + + bool AlarmActionFound = false; + + for (vector>::iterator iter = EventAlarmName.begin(); + iter != EventAlarmName.end(); iter++){ + + CalendarAlarmDataStruct NewAlarmData; + + // Process the data from ACTION. + + bool AlarmActionFound = false; + bool AlarmTriggerFound = false; + + DataReceived = ProcessTextVectors(&EventAlarmName[SeekCount], + &EventAlarmData[SeekCount], false, "ACTION"); + + if (DataReceived.begin() != DataReceived.end()){ + + try { + NewAlarmData.AlarmActionTokens = DataReceived.begin()->first.substr(7); + } + + catch(const out_of_range &oor){ + // Do nothing as there is no data. + } + + NewAlarmData.AlarmAction = DataReceived.begin()->second; + AlarmActionFound = true; + + } + + // Check if a value was set for AlarmAction, otherwise + // process the next VALARM section. + + if (NewAlarmData.AlarmAction.size() < 1){ + + SeekCount++; + continue; + + } + + // Check if AlarmAction is DISPLAY, AUDIO or EMAIL. + // Process the next VALARM section if not. + + if (NewAlarmData.AlarmAction == "AUDIO"){ + + NewAlarmData.AlarmType = CALENDARALARM_AUDIO; + + } else if (NewAlarmData.AlarmAction == "DISPLAY"){ + + NewAlarmData.AlarmType = CALENDARALARM_DISPLAY; + + } else if (NewAlarmData.AlarmAction == "EMAIL"){ + + NewAlarmData.AlarmType = CALENDARALARM_EMAIL; + + } else { + + SeekCount++; + continue; + + } + + if (NewAlarmData.AlarmType == CALENDARALARM_AUDIO && + AlarmActionFound == true){ + + CalendarAlarmData.push_back(NewAlarmData); + + } + + SeekCount++; + + } + ObjectSeekCount = 0; // Process data from X-* for(vector::iterator iter = ObjectName.begin(); iter != ObjectName.end(); ++iter){ - - RequestStatusTokens.push_back(""); - RequestStatusLanguage.push_back(""); - RequestStatusData.push_back(""); bool TokenData = false; string PropertyTokens; @@ -1481,3 +1556,64 @@ void CalendarEventObject::ProcessData(){ } } + +void CalendarEventObject::ProcessAlarms(){ + + int SeekCount = 0; + + bool TZMode = false; // False = STANDARD, True = DAYLIGHT. + bool ValidBegin = false; + vector EventObjectName; + vector EventObjectData; + + for (vector::iterator iter = ObjectName.begin(); + iter != ObjectName.end(); iter++){ + + // Check if the current name is BEGIN and + // data is either STANDARD or DAYLIGHT. + + if (ObjectName[SeekCount] == "BEGIN" && + ObjectData[SeekCount] == "VALARM"){ + + if (ValidBegin == false){ + ValidBegin = true; + EventObjectName.clear(); + EventObjectData.clear(); + } else { + + } + + SeekCount++; + continue; + + } + + // Check if current name is END and + // data is either STANDARD or DAYLIGHT. + + if (ObjectName[SeekCount] == "END" && + ObjectData[SeekCount] == "VALARM" && + ValidBegin == true){ + + EventAlarmName.push_back(EventObjectName); + EventAlarmData.push_back(EventObjectData); + + EventObjectName.clear(); + EventObjectData.clear(); + + ValidBegin = false; + + } + + if (ValidBegin == true){ + + EventObjectName.push_back(ObjectName[SeekCount]); + EventObjectData.push_back(ObjectData[SeekCount]); + + } + + SeekCount++; + + } + +} \ No newline at end of file