X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fobjects%2Fcalendarobject%2FCalendarObject.cpp;h=4ea498450acb6a83378cb4f860ad11a435adfd3d;hb=88dffe0d504b26f4831bc20c8be0ec23d59dd981;hp=f5fc97ea697f1b957ec32aae494c04c6862c3a64;hpb=05cb5a22fed320ecea905b58db671e0bf7a43b04;p=xestiacalendar%2F.git diff --git a/source/objects/calendarobject/CalendarObject.cpp b/source/objects/calendarobject/CalendarObject.cpp index f5fc97e..4ea4984 100644 --- a/source/objects/calendarobject/CalendarObject.cpp +++ b/source/objects/calendarobject/CalendarObject.cpp @@ -189,9 +189,13 @@ CalendarObjectLoadResult CalendarObject::LoadString(std::string *LoadStringData) CalendarObjectValidResult CalendarObject::ValidBaseObject(){ bool ValidBegin = false; + bool ValidAlarmBegin = false; bool ValidVersion = false; bool ValidEnd = false; int SeekCount = 0; + vector DeleteLines; + vector AlarmObjectName; + vector AlarmObjectData; // Check that the first line contains BEGIN:VCALENDAR // and it only appears once. @@ -216,6 +220,58 @@ CalendarObjectValidResult CalendarObject::ValidBaseObject(){ return CALENDAROBJECTVALID_INVALIDFORMAT; + } else if (ObjectName[SeekCount] == "END" && + ObjectData[SeekCount] == "VALARM" && + ValidAlarmBegin == false){ + + return CALENDAROBJECTVALID_INVALIDFORMAT; + + } else if (ObjectName[SeekCount] == "END" && + ObjectData[SeekCount] == "VCALENDAR" && + ValidAlarmBegin == true){ + + return CALENDAROBJECTVALID_INVALIDFORMAT; + + } + + // Look for any VALARM sections. + + if (ValidAlarmBegin == true){ + + AlarmObjectName.push_back(ObjectName[SeekCount]); + AlarmObjectData.push_back(ObjectData[SeekCount]); + DeleteLines.push_back(SeekCount); + + } + + if (ObjectName[SeekCount] == "END" && + ObjectData[SeekCount] == "VALARM" && + ValidAlarmBegin == true){ + + EventAlarmName.push_back(AlarmObjectName); + EventAlarmData.push_back(AlarmObjectData); + + AlarmObjectName.clear(); + AlarmObjectData.clear(); + + ValidAlarmBegin = false; + + } + + if (ObjectName[SeekCount] == "BEGIN" && + ObjectData[SeekCount] == "VALARM" && + ValidBegin == true){ + + if (ValidAlarmBegin == false){ + ValidAlarmBegin = true; + } else { + return CALENDAROBJECTVALID_INVALIDFORMAT; + } + + AlarmObjectName.push_back(ObjectName[SeekCount]); + AlarmObjectData.push_back(ObjectData[SeekCount]); + DeleteLines.push_back(SeekCount); + } SeekCount++; @@ -268,10 +324,22 @@ CalendarObjectValidResult CalendarObject::ValidBaseObject(){ } + // Remove lines that aren't needed as they have + // been moved to the EventAlarm section. + + for (vector::reverse_iterator deliter = DeleteLines.rbegin(); + deliter != DeleteLines.rend(); deliter++){ + + ObjectName.erase(ObjectName.begin()+(*deliter)); + ObjectData.erase(ObjectData.begin()+(*deliter)); + + } + if (ValidBegin == true && ValidEnd == true && - ValidVersion == true){ - + ValidVersion == true && + ValidAlarmBegin == false){ + return CALENDAROBJECTVALID_OK; } else {