+ // Process Alarm section.
+
+ ProcessAlarms();
+
+ int SeekCount = 0;
+
+ bool AlarmActionFound = false;
+
+ for (vector<vector<string>>::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++;
+
+ }
+