diff options
author | Ken Grigsby <grigsby@thursby.com> | 2013-04-19 17:29:04 -0500 |
---|---|---|
committer | Ken Grigsby <grigsby@thursby.com> | 2013-04-19 17:29:04 -0500 |
commit | 59caeaf0bdde0619d5b9f3e81a08971c2a0dbbfb (patch) | |
tree | d9b553d6e2a0bee00d77548bf5b6dcb121f5e3eb | |
parent | 11c1a0e319f3d360726f02c45d6724468b7917ed (diff) |
Implemented Address::RFC822StringForAddresses and Address::nonEncodedRFC822StringForAddresses and ObjC counterparts
-rw-r--r-- | src/core/abstract/MCAddress.cc | 26 | ||||
-rw-r--r-- | src/core/abstract/MCAddress.h | 3 | ||||
-rw-r--r-- | src/core/renderer/MCAddressDisplay.cpp | 10 | ||||
-rw-r--r-- | src/objc/abstract/MCOAddress.h | 15 | ||||
-rw-r--r-- | src/objc/abstract/MCOAddress.mm | 14 | ||||
-rw-r--r-- | tests/test-all.mm | 19 |
6 files changed, 75 insertions, 12 deletions
diff --git a/src/core/abstract/MCAddress.cc b/src/core/abstract/MCAddress.cc index 4f6fc303..dce52cff 100644 --- a/src/core/abstract/MCAddress.cc +++ b/src/core/abstract/MCAddress.cc @@ -206,6 +206,32 @@ Array * Address::addressesWithNonEncodedRFC822String(String * string) return result; } +String * Address::RFC822StringForAddresses(Array * addresses) +{ + String * result = String::string(); + for(unsigned int i = 0 ; i < addresses->count() ; i ++) { + Address * address = (Address *) addresses->objectAtIndex(i); + if (i != 0) { + result->appendString(MCSTR(", ")); + } + result->appendString(address->RFC822String()); + } + return result; +} + +String * Address::nonEncodedRFC822StringForAddresses(Array * addresses) +{ + String * result = String::string(); + for(unsigned int i = 0 ; i < addresses->count() ; i ++) { + Address * address = (Address *) addresses->objectAtIndex(i); + if (i != 0) { + result->appendString(MCSTR(", ")); + } + result->appendString(address->nonEncodedRFC822String()); + } + return result; +} + String * Address::description() { String * result = String::string(); diff --git a/src/core/abstract/MCAddress.h b/src/core/abstract/MCAddress.h index 4c132ed3..ad8a36f6 100644 --- a/src/core/abstract/MCAddress.h +++ b/src/core/abstract/MCAddress.h @@ -21,6 +21,9 @@ namespace mailcore { static Array * addressesWithRFC822String(String * string); static Array * addressesWithNonEncodedRFC822String(String * string); + static String * RFC822StringForAddresses(Array * addresses); + static String * nonEncodedRFC822StringForAddresses(Array * addresses); + virtual void setDisplayName(String * displayName); virtual String * displayName(); diff --git a/src/core/renderer/MCAddressDisplay.cpp b/src/core/renderer/MCAddressDisplay.cpp index 842dd0df..4a0fe44b 100644 --- a/src/core/renderer/MCAddressDisplay.cpp +++ b/src/core/renderer/MCAddressDisplay.cpp @@ -56,15 +56,7 @@ String * AddressDisplay::veryShortDisplayStringForAddress(Address * address) String * AddressDisplay::displayStringForAddresses(Array * addresses) { - String * result = String::string(); - for(unsigned int i = 0 ; i < addresses->count() ; i ++) { - Address * address = (Address *) addresses->objectAtIndex(i); - if (i != 0) { - result->appendString(MCSTR(", ")); - } - result->appendString(displayStringForAddress(address)); - } - return result; + return Address::nonEncodedRFC822StringForAddresses(addresses); } String * AddressDisplay::shortDisplayStringForAddresses(Array * addresses) diff --git a/src/objc/abstract/MCOAddress.h b/src/objc/abstract/MCOAddress.h index 33f2c545..4680edd6 100644 --- a/src/objc/abstract/MCOAddress.h +++ b/src/objc/abstract/MCOAddress.h @@ -61,4 +61,19 @@ @end +@interface NSArray (MCONSArray) + +// The receiver is an NSArray of MCOAddress. +// Returns an NSArray of NSString objects separated by commas that contain the +// RFC822 encoding of the addresses. +// For example: @[ @"DINH Vi=C3=AAt Ho=C3=A0 <hoa@etpan.org>" ] +- (NSString *) RFC822String; + +// Returns an NSArray of NSString objects separated by commas that contain the +// non-MIME-encoded RFC822 form of the addresses. +// For example: @[ "DINH Viêt Hoà <hoa@etpan.org>" ] +- (NSString *) nonEncodedRFC822String; + +@end + #endif diff --git a/src/objc/abstract/MCOAddress.mm b/src/objc/abstract/MCOAddress.mm index 6676e1a2..a6fbb728 100644 --- a/src/objc/abstract/MCOAddress.mm +++ b/src/objc/abstract/MCOAddress.mm @@ -149,3 +149,17 @@ MCO_OBJC_SYNTHESIZE_STRING(setMailbox, mailbox) } @end + +@implementation NSArray (MCONSArray) + +- (NSString *) RFC822String +{ + return [NSString mco_stringWithMCString:mailcore::Address::RFC822StringForAddresses([self mco_mcArray])]; +} + +- (NSString *) nonEncodedRFC822String +{ + return [NSString mco_stringWithMCString:mailcore::Address::nonEncodedRFC822StringForAddresses([self mco_mcArray ])]; +} + +@end diff --git a/tests/test-all.mm b/tests/test-all.mm index 97de53fd..6107730e 100644 --- a/tests/test-all.mm +++ b/tests/test-all.mm @@ -272,6 +272,19 @@ static void testAsyncPOP() [[NSRunLoop currentRunLoop] run]; } +static void testAddresses() +{ + mailcore::Address *addr = mailcore::Address::addressWithNonEncodedRFC822String(MCSTR("DINH Viêt Hoà <hoa@etpan.org>")); + MCLog("%s %s", MCUTF8DESC(addr->nonEncodedRFC822String()), MCUTF8DESC(addr->RFC822String())); + + mailcore::Array *addresses = mailcore::Address::addressesWithNonEncodedRFC822String(MCSTR("My Email1 <email1@gmail.com>, DINH Viêt Hoà <hoa@etpan.org>,\"Email3, My\" <my.email@gmail.com>")); + MCLog("%s", MCUTF8DESC(addresses)); + mailcore::String *str = mailcore::Address::nonEncodedRFC822StringForAddresses(addresses); + MCLog("%s", MCUTF8DESC(str)); + str = mailcore::Address::RFC822StringForAddresses(addresses); + MCLog("%s", MCUTF8DESC(str)); +} + void testObjC() { MCOIMAPSession *session = [[MCOIMAPSession alloc] init]; @@ -317,7 +330,7 @@ void testAll() displayName = MCSTR("My Email"); mailcore::AutoreleasePool * pool = new mailcore::AutoreleasePool(); - + mailcore::logEnabled = true; mailstream_debug = 1; //mailcore::Data * data = testMessageBuilder(); @@ -328,8 +341,8 @@ void testAll() //testAsyncSMTP(data); //testAsyncIMAP(); //testAsyncPOP(); - - testObjC(); + testAddresses(); + //testObjC(); MCLog("pool release"); pool->release(); |