X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fobjects%2Fcalendarevent%2FCalendarEvent.cpp;h=ab88fe4343f060850eeee02fdecfdc78166add5c;hb=284c77ac5ae39b716dca3b88b365dc335759af22;hp=a3b357878cf242b835c1b5d97ae7276be3d8e7a9;hpb=d697e55f2d4b401d0166ba47294d7e61675a5e67;p=xestiacalendar%2F.git diff --git a/source/objects/calendarevent/CalendarEvent.cpp b/source/objects/calendarevent/CalendarEvent.cpp index a3b3578..ab88fe4 100644 --- a/source/objects/calendarevent/CalendarEvent.cpp +++ b/source/objects/calendarevent/CalendarEvent.cpp @@ -570,7 +570,7 @@ void CalendarEventObject::ProcessData(){ if (iter->first == "LANGUAGE"){ - RequestStatusLanguage = iter->second; + StatusLanguage = iter->second; } else { @@ -590,11 +590,11 @@ void CalendarEventObject::ProcessData(){ if (PropertyTokens.size() > 0){ - RequestStatusTokens = PropertyTokens; + StatusTokens = PropertyTokens; } - RequestStatusData = DataReceived.begin()->second; + StatusData = DataReceived.begin()->second; } @@ -996,5 +996,624 @@ void CalendarEventObject::ProcessData(){ ObjectSeekCount++; } + + // Process the data from CATEGORIES. + + DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "CATEGORIES"); + + ObjectSeekCount = 0; + + for(multimap::iterator iter = DataReceived.begin(); + iter != DataReceived.end(); + ++iter){ + + CategoriesListTokens.push_back(""); + CategoriesListLanguage.push_back(""); + CategoriesList.push_back(""); + + bool TokenData = false; + string PropertyTokens; + + PropertyNameData = (string*)&iter->first; + + PropertyData = SplitValues(*PropertyNameData); + + for(map::iterator dataiter = PropertyData.begin(); + dataiter != PropertyData.end(); dataiter++){ + + if (dataiter->first == "LANGUAGE"){ + + CategoriesListLanguage[ObjectSeekCount] = dataiter->second; + + } else { + + if (TokenData == false){ + TokenData = true; + } else { + PropertyTokens += ";"; + } + + PropertyTokens += dataiter->first; + PropertyTokens += "="; + PropertyTokens += dataiter->second; + + } + + } + + if (PropertyTokens.size() > 0){ + CategoriesListTokens[ObjectSeekCount] = PropertyTokens; + } + + CategoriesList[ObjectSeekCount] = iter->second; + + ObjectSeekCount++; + + } + + // Process the data from COMMENT. + + DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "COMMENT"); + + ObjectSeekCount = 0; + + for(multimap::iterator iter = DataReceived.begin(); + iter != DataReceived.end(); + ++iter){ + + CommentListTokens.push_back(""); + CommentListAltRep.push_back(""); + CommentListLanguage.push_back(""); + CommentList.push_back(""); + + bool TokenData = false; + string PropertyTokens; + + PropertyNameData = (string*)&iter->first; + + PropertyData = SplitValues(*PropertyNameData); + + for(map::iterator dataiter = PropertyData.begin(); + dataiter != PropertyData.end(); dataiter++){ + + if (dataiter->first == "ALTREP"){ + + CommentListAltRep[ObjectSeekCount] = dataiter->second; + + } else if (dataiter->first == "LANGUAGE"){ + + CommentListLanguage[ObjectSeekCount] = dataiter->second; + + } else { + + if (TokenData == false){ + TokenData = true; + } else { + PropertyTokens += ";"; + } + + PropertyTokens += dataiter->first; + PropertyTokens += "="; + PropertyTokens += dataiter->second; + + } + + } + + if (PropertyTokens.size() > 0){ + CommentListTokens[ObjectSeekCount] = PropertyTokens; + } + + CommentList[ObjectSeekCount] = iter->second; + + ObjectSeekCount++; + + } + + // Process the data from CONTACT. + + DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "CONTACT"); + + ObjectSeekCount = 0; + + for(multimap::iterator iter = DataReceived.begin(); + iter != DataReceived.end(); + ++iter){ + + ContactListTokens.push_back(""); + ContactListAltRep.push_back(""); + ContactListLanguage.push_back(""); + ContactList.push_back(""); + + bool TokenData = false; + string PropertyTokens; + + PropertyNameData = (string*)&iter->first; + + PropertyData = SplitValues(*PropertyNameData); + + for(map::iterator dataiter = PropertyData.begin(); + dataiter != PropertyData.end(); dataiter++){ + + if (dataiter->first == "ALTREP"){ + + ContactListAltRep[ObjectSeekCount] = dataiter->second; + + } else if (dataiter->first == "LANGUAGE"){ + + ContactListLanguage[ObjectSeekCount] = dataiter->second; + + } else { + + if (TokenData == false){ + TokenData = true; + } else { + PropertyTokens += ";"; + } + + PropertyTokens += dataiter->first; + PropertyTokens += "="; + PropertyTokens += dataiter->second; + + } + + } + + if (PropertyTokens.size() > 0){ + ContactListTokens[ObjectSeekCount] = PropertyTokens; + } + + ContactList[ObjectSeekCount] = iter->second; + + ObjectSeekCount++; + + } + + // Process the data from EXDATE. + + DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "EXDATE"); + + ObjectSeekCount = 0; + + for(multimap::iterator iter = DataReceived.begin(); + iter != DataReceived.end(); + ++iter){ + + ExcludeDateDataTokens.push_back(""); + ExcludeDateDataValue.push_back(""); + ExcludeDateDataTimeZoneParam.push_back(""); + ExcludeDateData.push_back(""); + + bool TokenData = false; + string PropertyTokens; + + PropertyNameData = (string*)&iter->first; + + PropertyData = SplitValues(*PropertyNameData); + + for(map::iterator dataiter = PropertyData.begin(); + dataiter != PropertyData.end(); dataiter++){ + + if (dataiter->first == "VALUE"){ + + ExcludeDateDataValue[ObjectSeekCount] = dataiter->second; + + } else if (dataiter->first == "TZID"){ + + ExcludeDateDataTimeZoneParam[ObjectSeekCount] = dataiter->second; + + } else { + + if (TokenData == false){ + TokenData = true; + } else { + PropertyTokens += ";"; + } + + PropertyTokens += dataiter->first; + PropertyTokens += "="; + PropertyTokens += dataiter->second; + + } + + } + + if (PropertyTokens.size() > 0){ + ExcludeDateDataTokens[ObjectSeekCount] = PropertyTokens; + } + + ExcludeDateData[ObjectSeekCount] = iter->second; + + ObjectSeekCount++; + + } + + // Process the data from REQUEST-STATUS. + + DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "REQUEST-STATUS"); + + ObjectSeekCount = 0; + + for(multimap::iterator iter = DataReceived.begin(); + iter != DataReceived.end(); + ++iter){ + + RequestStatusTokens.push_back(""); + RequestStatusLanguage.push_back(""); + RequestStatusData.push_back(""); + + bool TokenData = false; + string PropertyTokens; + + PropertyNameData = (string*)&iter->first; + + PropertyData = SplitValues(*PropertyNameData); + + for(map::iterator dataiter = PropertyData.begin(); + dataiter != PropertyData.end(); dataiter++){ + + if (dataiter->first == "LANGUAGE"){ + + RequestStatusLanguage[ObjectSeekCount] = dataiter->second; + + } else { + + if (TokenData == false){ + TokenData = true; + } else { + PropertyTokens += ";"; + } + + PropertyTokens += dataiter->first; + PropertyTokens += "="; + PropertyTokens += dataiter->second; + + } + + } + + if (PropertyTokens.size() > 0){ + RequestStatusTokens[ObjectSeekCount] = PropertyTokens; + } + + RequestStatusData[ObjectSeekCount] = iter->second; + + ObjectSeekCount++; + + } + + // Process the data from RELATED-TO. + + DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "RELATED-TO"); + + ObjectSeekCount = 0; + + for(multimap::iterator iter = DataReceived.begin(); + iter != DataReceived.end(); + ++iter){ + + RelatedToDataTokens.push_back(""); + RelatedToDataRelationType.push_back(""); + RelatedToData.push_back(""); + + bool TokenData = false; + string PropertyTokens; + + PropertyNameData = (string*)&iter->first; + + PropertyData = SplitValues(*PropertyNameData); + + for(map::iterator dataiter = PropertyData.begin(); + dataiter != PropertyData.end(); dataiter++){ + + if (dataiter->first == "RELTYPE"){ + + RelatedToDataRelationType[ObjectSeekCount] = dataiter->second; + + } else { + + if (TokenData == false){ + TokenData = true; + } else { + PropertyTokens += ";"; + } + + PropertyTokens += dataiter->first; + PropertyTokens += "="; + PropertyTokens += dataiter->second; + + } + + } + + if (PropertyTokens.size() > 0){ + RelatedToDataTokens[ObjectSeekCount] = PropertyTokens; + } + + RelatedToData[ObjectSeekCount] = iter->second; + + ObjectSeekCount++; + + } + + // Process the data from RESOURCES. + + DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "RESOURCES"); + + ObjectSeekCount = 0; + + for(multimap::iterator iter = DataReceived.begin(); + iter != DataReceived.end(); + ++iter){ + + ResourcesDataTokens.push_back(""); + ResourcesDataAltRep.push_back(""); + ResourcesDataLanguage.push_back(""); + ResourcesData.push_back(""); + + bool TokenData = false; + string PropertyTokens; + + PropertyNameData = (string*)&iter->first; + + PropertyData = SplitValues(*PropertyNameData); + + for(map::iterator dataiter = PropertyData.begin(); + dataiter != PropertyData.end(); dataiter++){ + + if (dataiter->first == "ALTREP"){ + + ResourcesDataAltRep[ObjectSeekCount] = dataiter->second; + + } else if (dataiter->first == "LANGUAGE"){ + + ResourcesDataLanguage[ObjectSeekCount] = dataiter->second; + + } else { + + if (TokenData == false){ + TokenData = true; + } else { + PropertyTokens += ";"; + } + + PropertyTokens += dataiter->first; + PropertyTokens += "="; + PropertyTokens += dataiter->second; + + } + + } + + if (PropertyTokens.size() > 0){ + ResourcesDataTokens[ObjectSeekCount] = PropertyTokens; + } + + ResourcesData[ObjectSeekCount] = iter->second; + + ObjectSeekCount++; + + } + + // Process the data from RDATE. + + DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "RDATE"); + + ObjectSeekCount = 0; + + for(multimap::iterator iter = DataReceived.begin(); + iter != DataReceived.end(); + ++iter){ + + RecurranceDateDataTokens.push_back(""); + RecurranceDateDataValue.push_back(""); + RecurranceDateDataTimeZoneParam.push_back(""); + RecurranceDateData.push_back(""); + + bool TokenData = false; + string PropertyTokens; + + PropertyNameData = (string*)&iter->first; + + PropertyData = SplitValues(*PropertyNameData); + + for(map::iterator dataiter = PropertyData.begin(); + dataiter != PropertyData.end(); dataiter++){ + + if (dataiter->first == "VALUE"){ + + RecurranceDateDataValue[ObjectSeekCount] = dataiter->second; + + } else if (dataiter->first == "TZID"){ + + RecurranceDateDataTimeZoneParam[ObjectSeekCount] = dataiter->second; + + } else { + + if (TokenData == false){ + TokenData = true; + } else { + PropertyTokens += ";"; + } + + PropertyTokens += dataiter->first; + PropertyTokens += "="; + PropertyTokens += dataiter->second; + + } + + } + + if (PropertyTokens.size() > 0){ + RecurranceDateDataTokens[ObjectSeekCount] = PropertyTokens; + } + + RecurranceDateData[ObjectSeekCount] = iter->second; + + ObjectSeekCount++; + + } + + // 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){ + + bool TokenData = false; + string PropertyTokens; + + if (iter->substr(0,2) == "X-" && + iter->size() > 2){ + + XTokensData.push_back(ObjectData[ObjectSeekCount]); + XTokensDataTokens.push_back(ObjectName[ObjectSeekCount]); + + } + + ObjectSeekCount++; + + } } + +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