X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fobjects%2Fcalendarevent%2FCalendarEvent.cpp;h=e061050cf921f8a2352ddb9b11ed27418c61d2ce;hb=0e4428e3d018004e70822dacf4260b1eed8d2c14;hp=6c1887d592a598fd2bcf8ccff2aaa5823d12d3bb;hpb=ce990a903885d5ada3cb21e3270e8da527065b22;p=xestiacalendar%2F.git diff --git a/source/objects/calendarevent/CalendarEvent.cpp b/source/objects/calendarevent/CalendarEvent.cpp index 6c1887d..e061050 100644 --- a/source/objects/calendarevent/CalendarEvent.cpp +++ b/source/objects/calendarevent/CalendarEvent.cpp @@ -8,7 +8,9 @@ CalendarObjectValidResult CalendarEventObject::ValidObject(){ bool ValidEnd = false; bool ValidDateTimeStamp = false; bool ValidUniqueID = false; + bool ValidDateTimeStart = false; int SeekCount = 0; + string PropertyName; // Look for BEGIN:VEVENT. @@ -44,8 +46,16 @@ CalendarObjectValidResult CalendarEventObject::ValidObject(){ for (vector::iterator iter = ObjectName.begin(); iter != ObjectName.end(); iter++){ - - if (ObjectName[SeekCount] == "DTSTAMP"){ + + try{ + PropertyName = ObjectName[SeekCount].substr(0,7); + } + + catch(const out_of_range& oor){ + continue; + } + + if (PropertyName == "DTSTAMP"){ if (ValidDateTimeStamp == false){ ValidDateTimeStamp = true; @@ -66,7 +76,15 @@ CalendarObjectValidResult CalendarEventObject::ValidObject(){ for (vector::iterator iter = ObjectName.begin(); iter != ObjectName.end(); iter++){ - if (ObjectName[SeekCount] == "UID"){ + try{ + PropertyName = ObjectName[SeekCount].substr(0,3); + } + + catch(const out_of_range& oor){ + continue; + } + + if (PropertyName == "UID"){ if (ValidUniqueID == false){ ValidUniqueID = true; @@ -82,6 +100,41 @@ CalendarObjectValidResult CalendarEventObject::ValidObject(){ SeekCount = 0; + // Look for DTSTART if nothing is set for METHOD.. + + if (MethodData.size() == 0){ + + for (vector::iterator iter = ObjectName.begin(); + iter != ObjectName.end(); iter++){ + + try{ + PropertyName = ObjectName[SeekCount].substr(0,7); + } + + catch(const out_of_range& oor){ + continue; + } + + if (PropertyName == "DTSTART"){ + + if (ValidDateTimeStart == false){ + ValidDateTimeStart = true; + } else { + return CALENDAROBJECTVALID_INVALIDFORMAT; + } + + } + + SeekCount++; + + } + + } else { + ValidDateTimeStart = true; + } + + SeekCount = 0; + // Look for END:VEVENT. for (vector::iterator iter = ObjectName.begin(); @@ -107,6 +160,7 @@ CalendarObjectValidResult CalendarEventObject::ValidObject(){ if (ValidBegin == true && ValidEnd == true && ValidDateTimeStamp == true && + ValidDateTimeStart == true && ValidUniqueID == true){ return CALENDAROBJECTVALID_OK; @@ -129,12 +183,40 @@ void CalendarEventObject::ProcessData(){ DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "DTSTAMP"); - // Process the data. + // Process the data from DTSTAMP. if (DataReceived.begin() != DataReceived.end()){ + try { + DateTimeStampTokens = DataReceived.begin()->first.substr(8); + } + + catch(const out_of_range &oor){ + // Do nothing as there is no data. + } + DateTimeStampData = DataReceived.begin()->second; } + + // Get the Unique ID (UID). + + DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "UID"); + + // Process the data from DTSTAMP. + + if (DataReceived.begin() != DataReceived.end()){ + + try { + UniqueIDTokens = DataReceived.begin()->first.substr(4); + } + + catch(const out_of_range &oor){ + // Do nothing as there is no data. + } + + UniqueID = DataReceived.begin()->second; + + } }