From 57f174e2f0d04ea6f8b58ad02cb163a05d5836d8 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 6 Nov 2007 21:22:10 +0000 Subject: [PATCH] Monotone-Parent: 166aef5ba4c5699c0bde50ef5dddb543641e5c67 Monotone-Revision: e5f7bc9b668fc4dd36afd650762d96297397bacf Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-11-06T21:22:10 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ UI/MailerUI/UIxMailToSelection.m | 30 ++++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5e1697b8e..a379bb64b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2007-11-06 Wolfgang Sourdeau + * UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection + -getAddressesFromFormValues:_dict]): take NSString and NSArray + values. Ignore addresses with a length of 0. + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): we now fetch the accounts from the user defaults and create default values if missing. diff --git a/UI/MailerUI/UIxMailToSelection.m b/UI/MailerUI/UIxMailToSelection.m index ef5c141bc..cdcc83bf0 100644 --- a/UI/MailerUI/UIxMailToSelection.m +++ b/UI/MailerUI/UIxMailToSelection.m @@ -285,11 +285,31 @@ static NSArray *headers = nil; /* handling requests */ +- (void) _fillAddresses: (NSMutableArray *) addresses + withObject: (id) object +{ + NSEnumerator *list; + NSString *currentAddress; + + if ([object isKindOfClass: [NSString class]]) + [addresses addObject: object]; + else if ([object isKindOfClass: [NSArray class]]) + { + list = [object objectEnumerator]; + while ((currentAddress + = [[list nextObject] stringByTrimmingSpaces])) + if ([currentAddress length]) + [addresses addObject: currentAddress]; + } +} + - (void) getAddressesFromFormValues: (NSDictionary *) _dict { NSMutableArray *rawTo, *rawCc, *rawBcc; + NSString *idx, *popupKey, *popupValue; NSArray *keys; unsigned i, count; + id addr; rawTo = [NSMutableArray arrayWithCapacity:4]; rawCc = [NSMutableArray arrayWithCapacity:4]; @@ -304,18 +324,16 @@ static NSArray *headers = nil; key = [keys objectAtIndex:i]; if ([key hasPrefix:@"addr_"]) { - NSString *idx, *addr, *popupKey, *popupValue; - - addr = [[_dict objectForKey:key] lastObject]; + addr = [_dict objectForKey:key]; idx = [self getIndexFromIdentifier:key]; popupKey = [NSString stringWithFormat:@"popup_%@", idx]; popupValue = [[_dict objectForKey:popupKey] lastObject]; if([popupValue isEqualToString:@"0"]) - [rawTo addObject:addr]; + [self _fillAddresses: rawTo withObject: addr]; else if([popupValue isEqualToString:@"1"]) - [rawCc addObject:addr]; + [self _fillAddresses: rawCc withObject: addr]; else - [rawBcc addObject:addr]; + [self _fillAddresses: rawBcc withObject: addr]; } }