From 03ca6830a9e6742b8873aee04d77b3e094b65d30 Mon Sep 17 00:00:00 2001 From: zautrix Date: Mon, 25 Oct 2004 15:27:39 +0000 Subject: fix of vcal crash --- (limited to 'libkcal/vcalformat.cpp') diff --git a/libkcal/vcalformat.cpp b/libkcal/vcalformat.cpp index df93209..223aa5a 100644 --- a/libkcal/vcalformat.cpp +++ b/libkcal/vcalformat.cpp @@ -289,6 +289,7 @@ VObject *VCalFormat::eventToVTodo(const Todo *anEvent) curAttendee->email().isEmpty()) kdDebug(5800) << "warning! this Event has an attendee w/o name or email!" << endl; VObject *aProp = addPropValue(vtodo, VCAttendeeProp, tmpStr.local8Bit()); + addPropValue(aProp, VCRoleProp, writeRole(curAttendee->role())); addPropValue(aProp, VCRSVPProp, curAttendee->RSVP() ? "TRUE" : "FALSE"); addPropValue(aProp, VCStatusProp, writeStatus(curAttendee->status())); } @@ -452,7 +453,8 @@ VObject* VCalFormat::eventToVEvent(const Event *anEvent) curAttendee->email().isEmpty()) kdDebug(5800) << "warning! this Event has an attendee w/o name or email!" << endl; VObject *aProp = addPropValue(vevent, VCAttendeeProp, tmpStr.local8Bit()); - addPropValue(aProp, VCRSVPProp, curAttendee->RSVP() ? "TRUE" : "FALSE");; + addPropValue(aProp, VCRoleProp, writeRole(curAttendee->role())); + addPropValue(aProp, VCRSVPProp, curAttendee->RSVP() ? "TRUE" : "FALSE"); addPropValue(aProp, VCStatusProp, writeStatus(curAttendee->status())); } } @@ -751,10 +753,12 @@ Todo *VCalFormat::VTodoToEvent(VObject *vtodo) a = new Attendee(0, tmpStr); } else { // just a name - QString email = tmpStr.replace( QRegExp(" "), "." ); - a = new Attendee(tmpStr,email); + // QString email = tmpStr.replace( QRegExp(" "), "." ); + a = new Attendee(tmpStr,0); } - + // is there a Role property? + if ((vp = isAPropertyOf(vo, VCRoleProp)) != 0) + a->setRole(readRole(vObjectStringZValue(vp))); // is there an RSVP property? if ((vp = isAPropertyOf(vo, VCRSVPProp)) != 0) a->setRSVP(vObjectStringZValue(vp)); @@ -977,10 +981,15 @@ Event* VCalFormat::VEventToEvent(VObject *vevent) a = new Attendee(0, tmpStr); } else { // just a name - QString email = tmpStr.replace( QRegExp(" "), "." ); - a = new Attendee(tmpStr,email); + //QString email = tmpStr.replace( QRegExp(" "), "." ); + a = new Attendee(tmpStr,0); } + + // is there a Role property? + if ((vp = isAPropertyOf(vo, VCRoleProp)) != 0) + a->setRole(readRole(vObjectStringZValue(vp))); + // is there an RSVP property? if ((vp = isAPropertyOf(vo, VCRSVPProp)) != 0) a->setRSVP(vObjectStringZValue(vp)); @@ -1658,7 +1667,25 @@ int VCalFormat::numFromDay(const QString &day) return -1; // something bad happened. :) } +Attendee::Role VCalFormat::readRole(const char *s) const +{ + QString statStr = s; + statStr = statStr.upper(); + Attendee::Role role = Attendee::ReqParticipant; + + if ( statStr == "OWNER") + role = Attendee::Chair; + // enum Role { ReqParticipant, OptParticipant, NonParticipant, Chair }; + + return role; +} +QCString VCalFormat::writeRole(Attendee::Role role) const +{ + if ( role == Attendee::Chair ) + return "OWNER"; + return "ATTENDEE"; +} Attendee::PartStat VCalFormat::readStatus(const char *s) const { QString statStr = s; -- cgit v0.9.0.2