2 Copyright (C) 2005 Helge Hess
4 This file is part of SOPE.
6 SOPE is free software; you can redistribute it and/or modify it under
7 the terms of the GNU Lesser General Public License as published by the
8 Free Software Foundation; either version 2, or (at your option) any
11 SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with SOPE; see the file COPYING. If not, write to the
18 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
22 #include "NGVCardOrg.h"
25 @implementation NGVCardOrg
28 return [super version] + 0 /* v0 */;
31 NSAssert2([super version] == 0,
32 @"invalid superclass (%@) version %i !",
33 NSStringFromClass([self superclass]), [super version]);
36 - (id)initWithName:(NSString *)_name units:(NSArray *)_units
37 group:(NSString *)_grp types:(NSArray *)_tps arguments:(NSDictionary *)_a
39 if ((self = [super initWithGroup:_grp types:_tps arguments:_a]) != nil) {
40 self->orgnam = [_name copy];
41 self->orgunits = [_units copy];
46 - (id)initWithGroup:(NSString *)_group types:(NSArray *)_types
47 arguments:(NSDictionary *)_a
49 return [self initWithName:nil units:nil
50 group:_group types:_types arguments:_a];
53 return [self initWithName:nil units:nil group:nil types:nil arguments:nil];
57 [self->orgnam release];
58 [self->orgunits release];
64 - (NSString *)orgnam {
67 - (NSArray *)orgunits {
68 return self->orgunits;
71 - (NSString *)orgunit {
72 return [self->orgunits count] > 0 ? [self->orgunits objectAtIndex:0] : nil;
75 /* fake being an array */
77 - (id)objectAtIndex:(unsigned)_idx {
81 return (s = [self orgnam]) ? s : (NSString *)[NSNull null];
83 return [self->orgunits objectAtIndex:(_idx - 1)];
86 return 1 + [self->orgunits count];
91 - (NSString *)stringValue {
92 return [self vCardString];
95 - (NSString *)xmlString {
100 ms = [[NSMutableString alloc] initWithCapacity:256];
101 [self appendXMLTag:@"orgnam" value:[self orgnam] to:ms];
103 for (i = 0; i < [self->orgunits count]; i++) {
104 [self appendXMLTag:@"orgunit" value:[self->orgunits objectAtIndex:i]
107 s = [[ms copy] autorelease];
112 - (NSString *)vCardString {
117 ms = [[NSMutableString alloc] initWithCapacity:64];
118 [self appendVCardValue:[self orgnam] to:ms];
119 for (i = 0; i < [self->orgunits count]; i++) {
120 [ms appendString:@";"];
121 [self appendVCardValue:[self->orgunits objectAtIndex:i] to:ms];
123 s = [[ms copy] autorelease];
128 - (NSDictionary *)asDictionary {
129 static NSString *keys[2] = { @"orgnam", @"orgunits" };
132 values[0] = [self orgnam];
133 values[1] = [self orgunits];
135 return [NSDictionary dictionaryWithObjects:values forKeys:keys
139 - (NSArray *)asArray {
140 id values[[self count] + 1];
143 for (i = 0; i < [self count]; i++)
144 values[i] = [self objectAtIndex:i];
146 return [NSArray arrayWithObjects:values count:[self count]];
151 - (void)encodeWithCoder:(NSCoder *)_coder {
152 [super encodeWithCoder:_coder];
154 [_coder encodeObject:self->orgnam];
155 [_coder encodeObject:self->orgunits];
157 - (id)initWithCoder:(NSCoder *)_coder {
158 if ((self = [super initWithCoder:_coder]) != nil) {
159 self->orgnam = [[_coder decodeObject] copy];
160 self->orgunits = [[_coder decodeObject] copy];
167 - (void)appendAttributesToDescription:(NSMutableString *)_ms {
168 if (self->orgnam) [_ms appendFormat:@" %@", self->orgnam];
169 if ([self->orgunits count] > 0) {
170 [_ms appendFormat:@" units=%@",
171 [self->orgunits componentsJoinedByString:@","]];
173 [super appendAttributesToDescription:_ms];
176 @end /* NGVCardOrg */