From d87f064d32e861ee1ddfe9d869c06c24dc7d6fcc Mon Sep 17 00:00:00 2001 From: helge Date: Mon, 9 May 2005 23:33:03 +0000 Subject: [PATCH] added some properties git-svn-id: http://svn.opengroupware.org/SOPE/trunk@808 e4a50df8-12e2-0310-a44c-efbce7f8a7e3 --- sope-ical/NGiCal/ChangeLog | 4 ++++ sope-ical/NGiCal/NGVCard.h | 9 +++++++ sope-ical/NGiCal/NGVCard.m | 24 +++++++++++++++++++ sope-ical/NGiCal/NGVCardSaxHandler.m | 36 ++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+) diff --git a/sope-ical/NGiCal/ChangeLog b/sope-ical/NGiCal/ChangeLog index c63ba004..8f20a7fd 100644 --- a/sope-ical/NGiCal/ChangeLog +++ b/sope-ical/NGiCal/ChangeLog @@ -1,3 +1,7 @@ +2005-05-10 Helge Hess + + * NGVCard.m: added support for profile, source, name (v4.5.45) + 2005-05-09 Helge Hess * first version of working vCard SAX handler (v4.5.54) diff --git a/sope-ical/NGiCal/NGVCard.h b/sope-ical/NGiCal/NGVCard.h index a5d8a402..82e689e1 100644 --- a/sope-ical/NGiCal/NGVCard.h +++ b/sope-ical/NGiCal/NGVCard.h @@ -64,6 +64,9 @@ NSString *version; NSString *vClass; NSString *prodID; + NSString *profile; + NSString *source; + NSString *vName; // TODO: 'rev' (datetime) NSString *fn; @@ -101,8 +104,14 @@ - (void)setVClass:(NSString *)_s; - (NSString *)vClass; +- (void)setVName:(NSString *)_s; +- (NSString *)vName; - (void)setProdID:(NSString *)_s; - (NSString *)prodID; +- (void)setProfile:(NSString *)_s; +- (NSString *)profile; +- (void)setSource:(NSString *)_s; +- (NSString *)source; - (void)setFn:(NSString *)_fn; - (NSString *)fn; diff --git a/sope-ical/NGiCal/NGVCard.m b/sope-ical/NGiCal/NGVCard.m index 2aace43a..783918cf 100644 --- a/sope-ical/NGiCal/NGVCard.m +++ b/sope-ical/NGiCal/NGVCard.m @@ -77,6 +77,9 @@ static NGVCardSaxHandler *sax = nil; // THREAD } - (void)dealloc { + [self->profile release]; + [self->source release]; + [self->vName release]; [self->n release]; [self->org release]; [self->nickname release]; @@ -121,6 +124,13 @@ static NGVCardSaxHandler *sax = nil; // THREAD return self->vClass; } +- (void)setVName:(NSString *)_value { + ASSIGNCOPY(self->vName, _value); +} +- (NSString *)vName { + return self->vName; +} + - (void)setProdID:(NSString *)_prodID { ASSIGNCOPY(self->prodID, _prodID); } @@ -128,6 +138,20 @@ static NGVCardSaxHandler *sax = nil; // THREAD return self->prodID; } +- (void)setProfile:(NSString *)_value { + ASSIGNCOPY(self->profile, _value); +} +- (NSString *)profile { + return self->profile; +} + +- (void)setSource:(NSString *)_value { + ASSIGNCOPY(self->source, _value); +} +- (NSString *)source { + return self->source; +} + - (void)setFn:(NSString *)_fn { ASSIGNCOPY(self->fn, _fn); } diff --git a/sope-ical/NGiCal/NGVCardSaxHandler.m b/sope-ical/NGiCal/NGVCardSaxHandler.m index aec3c3d4..b169e2ed 100644 --- a/sope-ical/NGiCal/NGVCardSaxHandler.m +++ b/sope-ical/NGiCal/NGVCardSaxHandler.m @@ -548,6 +548,29 @@ andAddTo:self->fburl]; } +/* OGo?? tags */ + +- (void)startProfile:(id)_attrs { + [self startCollectingContent]; +} +- (void)endProfile { + [self->vCard setProfile:[self finishCollectingContent]]; +} + +- (void)startSource:(id)_attrs { + [self startCollectingContent]; +} +- (void)endSource { + [self->vCard setSource:[self finishCollectingContent]]; +} + +- (void)startName:(id)_attrs { + [self startCollectingContent]; +} +- (void)endName { + [self->vCard setVName:[self finishCollectingContent]]; +} + /* element events */ @@ -598,6 +621,13 @@ [self startFN:_attrs]; else if (c0 == 'g' && [_localName isEqualToString:@"geo"]) [self startGeo]; + // TODO: following are generated by LSAddress, but not in spec? + else if (c0 == 'P' && [_localName isEqualToString:@"PROFILE"]) + [self startProfile:_attrs]; + else if (c0 == 'S' && [_localName isEqualToString:@"SOURCE"]) + [self startSource:_attrs]; + else if (c0 == 'N' && [_localName isEqualToString:@"NAME"]) + [self startName:_attrs]; else { if (self->vcs.isInN || self->vcs.isInOrg || self->vcs.isInAdr || self->vcs.isInGeo) @@ -655,6 +685,12 @@ [self endFN]; else if (c0 == 'g' && [_localName isEqualToString:@"geo"]) [self endGeo]; + else if (c0 == 'P' && [_localName isEqualToString:@"PROFILE"]) + [self endProfile]; + else if (c0 == 'S' && [_localName isEqualToString:@"SOURCE"]) + [self endSource]; + else if (c0 == 'N' && [_localName isEqualToString:@"NAME"]) + [self endName]; else { if (self->vcs.isInN || self->vcs.isInOrg || self->vcs.isInAdr || self->vcs.isInGeo) -- 2.39.2