mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-04-23 05:49:31 +00:00
Address formatter returns metadata as a dictionary
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
*/
|
||||
|
||||
#import <Foundation/NSArray.h>
|
||||
#import <Foundation/NSDictionary.h>
|
||||
|
||||
#import <NGExtensions/NSNull+misc.h>
|
||||
#import <NGExtensions/NSObject+Logs.h>
|
||||
@@ -81,30 +82,64 @@ static Class StrClass = Nil;
|
||||
return [_address stringValue];
|
||||
}
|
||||
|
||||
- (NSDictionary *) dictionaryForEnvelopeAddress: (NGImap4EnvelopeAddress *)_address {
|
||||
NSMutableDictionary *meta;
|
||||
NSString *s;
|
||||
|
||||
meta = [NSMutableDictionary dictionary];
|
||||
|
||||
s = [_address baseEMail];
|
||||
if (s) [meta setObject: s forKey: @"address"];
|
||||
|
||||
s = [_address personalName];
|
||||
if (s) [meta setObject: s forKey: @"name"];
|
||||
|
||||
return meta;
|
||||
}
|
||||
|
||||
|
||||
- (NSString *)stringForArray:(NSArray *)_addresses {
|
||||
NSMutableString *ms;
|
||||
unsigned i, count;
|
||||
|
||||
|
||||
if ((count = [_addresses count]) == 0)
|
||||
return nil;
|
||||
|
||||
|
||||
if (count == 1)
|
||||
return [self stringForObjectValue:[_addresses objectAtIndex:0]];
|
||||
|
||||
|
||||
ms = [NSMutableString stringWithCapacity:16 * count];
|
||||
for (i = 0; i < count && [ms length] < [self maxLength]; i++) {
|
||||
NSString *s;
|
||||
|
||||
|
||||
s = [self stringForObjectValue:[_addresses objectAtIndex:i]];
|
||||
if (s == nil)
|
||||
continue;
|
||||
|
||||
|
||||
if ([ms length] > 0) [ms appendString:[self separator]];
|
||||
[ms appendString:s];
|
||||
}
|
||||
return ms;
|
||||
}
|
||||
|
||||
- (NSArray *)dictionariesForArray:(NSArray *)_addresses {
|
||||
NSMutableArray *a;
|
||||
id address;
|
||||
unsigned i, count;
|
||||
|
||||
if ((count = [_addresses count]) == 0)
|
||||
return nil;
|
||||
|
||||
a = [NSMutableArray arrayWithCapacity: count];
|
||||
for (i = 0; i < count; i++) {
|
||||
address = [_addresses objectAtIndex: i];
|
||||
if ([address isKindOfClass:EnvAddrClass])
|
||||
[a addObject: [self dictionaryForEnvelopeAddress: address]];
|
||||
}
|
||||
|
||||
return a;
|
||||
}
|
||||
|
||||
/* formatter entry function */
|
||||
|
||||
- (NSString *)stringForObjectValue:(id)_address {
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
Formatters which render various mail related fields.
|
||||
*/
|
||||
|
||||
@class NSData, NSString, NSCalendarDate, NSTimeZone;
|
||||
@class NSData, NSString, NSCalendarDate, NSTimeZone, NGImap4EnvelopeAddress;
|
||||
|
||||
@interface UIxMailFormatter : NSFormatter
|
||||
{
|
||||
@@ -76,6 +76,8 @@
|
||||
- (id)initWithMaxLength:(unsigned int)_max generateFullEMail:(BOOL)_genFull;
|
||||
|
||||
- (NSString *)stringForArray:(NSArray *)_addresses;
|
||||
- (NSDictionary *)dictionaryForEnvelopeAddress: (NGImap4EnvelopeAddress *)_address;
|
||||
- (NSArray *)dictionariesForArray: (NSArray *)_addresses;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user