summaryrefslogtreecommitdiffabout
path: root/libkcal
authorzautrix <zautrix>2004-10-25 15:27:39 (UTC)
committer zautrix <zautrix>2004-10-25 15:27:39 (UTC)
commit03ca6830a9e6742b8873aee04d77b3e094b65d30 (patch) (side-by-side diff)
tree170ab278ffeb371aae783815101f64275cd30c53 /libkcal
parent62e92aa86b6281b4e4c2a2bdb57f3ceb5a87f4e3 (diff)
downloadkdepimpi-03ca6830a9e6742b8873aee04d77b3e094b65d30.zip
kdepimpi-03ca6830a9e6742b8873aee04d77b3e094b65d30.tar.gz
kdepimpi-03ca6830a9e6742b8873aee04d77b3e094b65d30.tar.bz2
fix of vcal crash
Diffstat (limited to 'libkcal') (more/less context) (show whitespace changes)
-rw-r--r--libkcal/vcalformat.cpp39
-rw-r--r--libkcal/vcalformat.h3
-rw-r--r--libkcal/versit/vcc.c1
3 files changed, 36 insertions, 7 deletions
diff --git a/libkcal/vcalformat.cpp b/libkcal/vcalformat.cpp
index df93209..223aa5a 100644
--- a/libkcal/vcalformat.cpp
+++ b/libkcal/vcalformat.cpp
@@ -288,8 +288,9 @@ VObject *VCalFormat::eventToVTodo(const Todo *anEvent)
else if (curAttendee->name().isEmpty() &&
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()));
}
}
@@ -451,9 +452,10 @@ VObject* VCalFormat::eventToVEvent(const Event *anEvent)
else if (curAttendee->name().isEmpty() &&
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()));
}
}
@@ -750,12 +752,14 @@ Todo *VCalFormat::VTodoToEvent(VObject *vtodo)
// just an email address
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));
// is there a status property?
@@ -976,12 +980,17 @@ Event* VCalFormat::VEventToEvent(VObject *vevent)
// just an email address
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));
// is there a status property?
@@ -1657,9 +1666,27 @@ int VCalFormat::numFromDay(const QString &day)
if (day == "SU ") return 6;
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;
statStr = statStr.upper();
diff --git a/libkcal/vcalformat.h b/libkcal/vcalformat.h
index 5bef7ed..c7df017 100644
--- a/libkcal/vcalformat.h
+++ b/libkcal/vcalformat.h
@@ -94,9 +94,10 @@ class VCalFormat : public CalFormat {
* i.e. MO, TU, WE, etc. */
const char *dayFromNum(int day);
/** the reverse of the above function. */
int numFromDay(const QString &day);
-
+ Attendee::Role VCalFormat::readRole(const char *s) const;
+ QCString writeRole(Attendee::Role role) const;
Attendee::PartStat readStatus(const char *s) const;
QCString writeStatus(Attendee::PartStat status) const;
private:
diff --git a/libkcal/versit/vcc.c b/libkcal/versit/vcc.c
index 9be752d..5413813 100644
--- a/libkcal/versit/vcc.c
+++ b/libkcal/versit/vcc.c
@@ -1761,8 +1761,9 @@ static char* lexGetWord() {
int c;
lexSkipWhite();
lexClearToken();
c = lexLookahead();
+ // LR while (c != EOF && !strchr("\t\n ;:=",c)) {
while (c != EOF && !strchr("\t\n ;:=",c)) {
lexAppendc(c);
lexSkipLookahead();
c = lexLookahead();