X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fobjects%2Fcalendarobject%2FCalendarObject.cpp;h=4ea498450acb6a83378cb4f860ad11a435adfd3d;hb=88dffe0d504b26f4831bc20c8be0ec23d59dd981;hp=ab21f148fb88562258d0b7820efa62f4e82a5f30;hpb=88a5b0d1ed4ffe6e7bfb2e7c41d651eb8745bcc6;p=xestiacalendar%2F.git diff --git a/source/objects/calendarobject/CalendarObject.cpp b/source/objects/calendarobject/CalendarObject.cpp index ab21f14..4ea4984 100644 --- a/source/objects/calendarobject/CalendarObject.cpp +++ b/source/objects/calendarobject/CalendarObject.cpp @@ -98,8 +98,8 @@ CalendarObjectLoadResult CalendarObject::LoadString(std::string *LoadStringData) // the lists. if (ColonFound == true){ - ObjectName.insert(ObjectName.end(), PropertyName); - ObjectData.insert(ObjectData.end(), PropertyValue); + ObjectName.push_back(PropertyName); + ObjectData.push_back(PropertyValue); } ColonFound = false; @@ -123,7 +123,13 @@ CalendarObjectLoadResult CalendarObject::LoadString(std::string *LoadStringData) // Character is the colon. Set the colon // found boolen to true. - ColonFound = true; + BufferChar = (*LoadStringData)[SeekCount]; + + if (ColonFound == true){ + PropertyValue += BufferChar; + } else { + ColonFound = true; + } } else { @@ -151,8 +157,8 @@ CalendarObjectLoadResult CalendarObject::LoadString(std::string *LoadStringData) PropertyName.size() > 0 && PropertyValue.size() > 0){ - ObjectName.insert(ObjectName.end(), PropertyName); - ObjectData.insert(ObjectData.end(), PropertyValue); + ObjectName.push_back(PropertyName); + ObjectData.push_back(PropertyValue); } @@ -183,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. @@ -210,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++; @@ -262,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 {