diff --git a/ChangeLog b/ChangeLog index 5de9ce4ee..e371fb7c0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,19 @@ 2007-08-15 Wolfgang Sourdeau + * SoObjects/SOGo/SOGoUser.m ([-fullEmail]): removed method. + ([-primaryEmail]): removed method. + ([SOGoUser -primaryIMAP4AccountString]): removed method. + ([SOGoUser -mailAccounts]): new method that returns an array + containing description dictionaries for all the user mail + accounts. Each account also contain the user's identities for that + account. + ([SOGoUser -allIdentities]): new utility method that returns all + the user identities on all accounts. + ([SOGoUser -primaryIdentity]): new method return the first + identity of the first account. + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder -httpURLForAdvisoryToUser:uid]): + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount -isInDraftsFolder]): returns NO. ([-preferredIdentity]): removed method, replaced with -[SOGoUser diff --git a/SoObjects/SOGo/SOGoUser.h b/SoObjects/SOGo/SOGoUser.h index 7d6816424..5d4bd9ad3 100644 --- a/SoObjects/SOGo/SOGoUser.h +++ b/SoObjects/SOGo/SOGoUser.h @@ -58,6 +58,7 @@ extern NSString *SOGoWeekStartFirstFullWeek; NSUserDefaults *userSettings; NSTimeZone *userTimeZone; SOGoDateFormatter *dateFormatter; + NSMutableArray *mailAccounts; } + (SOGoUser *) userWithLogin: (NSString *) login @@ -67,11 +68,11 @@ extern NSString *SOGoWeekStartFirstFullWeek; /* properties */ -- (NSString *) fullEmail; +// - (NSString *) fullEmail; -- (NSString *) primaryEmail; -- (NSString *) systemEmail; -- (NSArray *) allEmails; +// - (NSString *) primaryEmail; +// - (NSString *) systemEmail; +// - (NSArray *) allEmails; - (BOOL) hasEmail: (NSString *) email; @@ -82,7 +83,7 @@ extern NSString *SOGoWeekStartFirstFullWeek; /* shares and identities */ -- (NSString *) primaryIMAP4AccountString; +// - (NSString *) primaryIMAP4AccountString; // - (NSString *) primaryIMAP4AccountString; // - (NSString *) primaryMailServer; @@ -99,6 +100,10 @@ extern NSString *SOGoWeekStartFirstFullWeek; - (NSTimeZone *) timeZone; - (NSTimeZone *) serverTimeZone; +- (NSArray *) mailAccounts; +- (NSArray *) allIdentities; +- (NSDictionary *) primaryIdentity; + /* folders */ - (id) homeFolderInContext: (id) _ctx; diff --git a/SoObjects/SOGo/SOGoUser.m b/SoObjects/SOGo/SOGoUser.m index d212d2c1e..3dc5273a5 100644 --- a/SoObjects/SOGo/SOGoUser.m +++ b/SoObjects/SOGo/SOGoUser.m @@ -23,6 +23,7 @@ #import #import #import +#import #import #import #import @@ -189,17 +190,25 @@ NSString *SOGoWeekStartFirstFullWeek = @"FirstFullWeek"; /* properties */ -- (NSString *) fullEmail -{ - return [[LDAPUserManager sharedUserManager] getFullEmailForUID: login]; -} +// - (NSString *) fullEmail +// { +// return [[LDAPUserManager sharedUserManager] getFullEmailForUID: login]; +// } -- (NSString *) primaryEmail +// - (NSString *) primaryEmail +// { +// if (!allEmails) +// [self _fetchAllEmails]; + +// return [allEmails objectAtIndex: 0]; +// } + +- (NSArray *) allEmails { if (!allEmails) [self _fetchAllEmails]; - return [allEmails objectAtIndex: 0]; + return allEmails; } - (NSString *) systemEmail @@ -210,14 +219,6 @@ NSString *SOGoWeekStartFirstFullWeek = @"FirstFullWeek"; return [allEmails lastObject]; } -- (NSArray *) allEmails -{ - if (!allEmails) - [self _fetchAllEmails]; - - return allEmails; -} - - (BOOL) hasEmail: (NSString *) email { if (!allEmails) @@ -234,11 +235,6 @@ NSString *SOGoWeekStartFirstFullWeek = @"FirstFullWeek"; return cn; } -- (NSString *) primaryIMAP4AccountString -{ - return [NSString stringWithFormat: @"%@@%@", login, fallbackIMAP4Server]; -} - // - (NSString *) primaryMailServer // { // return [[self userManager] getServerForUID: [self login]]; @@ -347,6 +343,115 @@ NSString *SOGoWeekStartFirstFullWeek = @"FirstFullWeek"; return serverTimeZone; } +/* mail */ +- (NSArray *) mailAccounts +{ +#warning should be implemented with the user defaults interfaces + NSMutableDictionary *mailAccount, *identity; + NSMutableArray *identities; + NSString *name, *fullName; + + if (!mailAccounts) + { + mailAccount = [NSMutableDictionary dictionary]; + name = [NSString stringWithFormat: @"%@@%@", login, fallbackIMAP4Server]; + [mailAccount setObject: login forKey: @"userName"]; + [mailAccount setObject: fallbackIMAP4Server forKey: @"serverName"]; + [mailAccount setObject: name forKey: @"name"]; + + identity = [NSMutableDictionary dictionary]; + fullName = [self cn]; + if (![fullName length]) + fullName = login; + [identity setObject: fullName forKey: @"fullName"]; + [identity setObject: [self systemEmail] forKey: @"email"]; + [identity setObject: [NSNumber numberWithBool: YES] forKey: @"isDefault"]; + + identities = [NSMutableArray array]; + [identities addObject: identity]; + [mailAccount setObject: identities forKey: @"identities"]; + + mailAccounts = [NSMutableArray new]; + [mailAccounts addObject: mailAccount]; + } + + return mailAccounts; +} + +/* +@interface SOGoMailIdentity : NSObject +{ + NSString *name; + NSString *email; + NSString *replyTo; + NSString *organization; + NSString *signature; + NSString *vCard; + NSString *sentFolderName; + NSString *sentBCC; + NSString *draftsFolderName; + NSString *templatesFolderName; + struct + { + int composeHTML:1; + int reserved:31; + } idFlags; +} + +- (void) setName: (NSString *) _value; +- (NSString *) name; + +- (void) setEmail: (NSString *) _value; +- (NSString *) email; + +- (void) setReplyTo: (NSString *) _value; +- (NSString *) replyTo; + +- (void) setOrganization: (NSString *) _value; +- (NSString *) organization; + +- (void) setSignature: (NSString *) _value; +- (NSString *) signature; +- (BOOL) hasSignature; + +- (void) setVCard: (NSString *) _value; +- (NSString *) vCard; +- (BOOL) hasVCard; + +- (void) setSentFolderName: (NSString *) _value; +- (NSString *) sentFolderName; + +- (void) setSentBCC: (NSString *) _value; +- (NSString *) sentBCC; + +- (void) setDraftsFolderName: (NSString *) _value; +- (NSString *) draftsFolderName; + +- (void) setTemplatesFolderName: (NSString *) _value; +- (NSString *) templatesFolderName; + +@end */ + +- (NSArray *) allIdentities +{ + NSArray *identities; + + [self mailAccounts]; + identities = [mailAccounts objectsForKey: @"identities"]; + + return [identities flattenedArray]; +} + +- (NSDictionary *) primaryIdentity +{ + NSDictionary *defaultAccount; + + [self mailAccounts]; + defaultAccount = [mailAccounts objectAtIndex: 0]; + + return [[defaultAccount objectForKey: @"identities"] objectAtIndex: 0]; +} + /* folders */ // TODO: those methods should check whether the traversal stack in the context