From: Steve Brokenshire <sbrokenshire@xestia.co.uk>
Date: Sun, 14 Feb 2016 12:03:30 +0000 (+0000)
Subject: Added code to process DISPLAY VALARMs in CalendarEventObject.
X-Git-Tag: release-0.02~366
X-Git-Url: http://Server1/repobrowser/?a=commitdiff_plain;h=f7c1cf41f2b54e66dc8534a8b1e6c6a3ee7176d2;p=xestiacalendar%2F.git

Added code to process DISPLAY VALARMs in CalendarEventObject.
---

diff --git a/source/objects/calendarevent/CalendarEvent.cpp b/source/objects/calendarevent/CalendarEvent.cpp
index b12d6c9..b88a265 100644
--- a/source/objects/calendarevent/CalendarEvent.cpp
+++ b/source/objects/calendarevent/CalendarEvent.cpp
@@ -1473,6 +1473,7 @@ void CalendarEventObject::ProcessData(){
 		bool AlarmActionFound = false;
 		bool AlarmTriggerFound = false;
 		bool AlarmDurationFound = false;
+		bool AlarmDescriptionFound = false;
 			
 		DataReceived = ProcessTextVectors(&EventAlarmName[SeekCount], 
 				&EventAlarmData[SeekCount], false, "ACTION");
@@ -1573,6 +1574,59 @@ void CalendarEventObject::ProcessData(){
 		
 		}
 		
+		// Process the data from DESCRIPTION.
+		
+		DataReceived = ProcessTextVectors(&EventAlarmName[SeekCount], &EventAlarmData[SeekCount], false, "DESCRIPTION");
+	
+		if (DataReceived.begin() != DataReceived.end() &&
+			(NewAlarmData.AlarmType == CALENDARALARM_DISPLAY ||
+			NewAlarmData.AlarmType == CALENDARALARM_EMAIL)){
+	
+			bool TokenData = false;
+			string PropertyTokens;
+		
+			PropertyNameData = (string*)&DataReceived.begin()->first;
+		
+			PropertyData = SplitValues(*PropertyNameData);
+		
+			for(map<string,string>::iterator iter = PropertyData.begin();
+				iter != PropertyData.end(); iter++){
+			
+				if (iter->first == "ALTREP"){
+				
+					NewAlarmData.DescriptionAltRep = iter->second;
+				
+				} else if (iter->first == "LANGUAGE"){
+				
+					NewAlarmData.DescriptionLanguage = iter->second;
+				
+				} else {
+				
+					if (TokenData == false){
+						TokenData = true;
+					} else {
+						PropertyTokens += ";";
+					}
+				
+					PropertyTokens += iter->first;
+					PropertyTokens += "=";
+					PropertyTokens += iter->second;
+				
+				}
+				
+			}
+		
+			if (PropertyTokens.size() > 0){
+				NewAlarmData.DescriptionTokens = PropertyTokens;
+			}
+		
+			NewAlarmData.DescriptionData = DataReceived.begin()->second;
+			AlarmDescriptionFound = true;
+		
+		}
+		
+		// TODO: Implement SUMMARY.
+		
 		// Process data from DURATION.
 		
 		DataReceived = ProcessTextVectors(&EventAlarmName[SeekCount], &EventAlarmData[SeekCount], false, "DURATION");
@@ -1643,6 +1697,13 @@ void CalendarEventObject::ProcessData(){
 		
 			CalendarAlarmData.push_back(NewAlarmData);
 			
+		} else if (NewAlarmData.AlarmType == CALENDARALARM_DISPLAY &&
+			AlarmActionFound == true &&
+			AlarmTriggerFound == true &&
+			AlarmDescriptionFound == true){
+
+			CalendarAlarmData.push_back(NewAlarmData);
+				
 		}
 			
 		SeekCount++;