diff --git a/ChangeLog b/ChangeLog index 2f365e188..ca12f5eb8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2012-01-30 Wolfgang Sourdeau + * OpenChange/MAPIStoreMailFolder.m (-addProperties): overriden + method in order to intercept rename operations. + (-initWithSOGoObject:inContainer:): removed obsolete method. + + * OpenChange/MAPIStoreGCSFolder.m (-addProperties): overriden + method in order to intercept rename operations. + * SoObjects/Mailer/SOGoMailFolder.m (-renameTo:): new method, implementing most of the code from [UIxMailFolderActions renameFolderAction]. diff --git a/OpenChange/MAPIStoreGCSFolder.m b/OpenChange/MAPIStoreGCSFolder.m index 69f1d3d6c..47e7ce24f 100644 --- a/OpenChange/MAPIStoreGCSFolder.m +++ b/OpenChange/MAPIStoreGCSFolder.m @@ -72,6 +72,26 @@ [super dealloc]; } +- (void) addProperties: (NSDictionary *) newProperties +{ + NSString *newDisplayName; + NSMutableDictionary *propsCopy; + NSNumber *key; + + key = MAPIPropertyKey (PR_DISPLAY_NAME_UNICODE); + newDisplayName = [newProperties objectForKey: key]; + if (newDisplayName) + { + [sogoObject renameTo: newDisplayName]; + propsCopy = [newProperties mutableCopy]; + [propsCopy removeObjectForKey: key]; + [propsCopy autorelease]; + newProperties = propsCopy; + } + + [super addProperties: newProperties]; +} + - (NSArray *) messageKeysMatchingQualifier: (EOQualifier *) qualifier andSortOrderings: (NSArray *) sortOrderings { diff --git a/OpenChange/MAPIStoreMailFolder.h b/OpenChange/MAPIStoreMailFolder.h index 300a5dc3a..8a5a51ec2 100644 --- a/OpenChange/MAPIStoreMailFolder.h +++ b/OpenChange/MAPIStoreMailFolder.h @@ -37,13 +37,8 @@ @interface MAPIStoreMailFolder : MAPIStoreFolder { SOGoMAPIFSMessage *versionsMessage; - BOOL usesAltNameSpace; } -/* subclasses */ -- (SOGoMailFolder *) specialFolderFromAccount: (SOGoMailAccount *) account - inContext: (WOContext *) woContext; - /* synchronisation & versioning */ - (BOOL) synchroniseCache; - (NSNumber *) modseqFromMessageChangeNumber: (NSNumber *) changeNum; diff --git a/OpenChange/MAPIStoreMailFolder.m b/OpenChange/MAPIStoreMailFolder.m index c9391c3ff..0541c6beb 100644 --- a/OpenChange/MAPIStoreMailFolder.m +++ b/OpenChange/MAPIStoreMailFolder.m @@ -77,15 +77,11 @@ static Class SOGoMailFolderK; [MAPIStoreAppointmentWrapper class]; } -- (id) initWithSOGoObject: (id) newSOGoObject - inContainer: (MAPIStoreObject *) newContainer +- (id) init { - // NSString *urlString; - - if ((self = [super initWithSOGoObject: newSOGoObject inContainer: newContainer])) + if ((self = [super init])) { - usesAltNameSpace = NO; - // urlString = [[self url] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; + versionsMessage = nil; } return self; @@ -104,12 +100,25 @@ static Class SOGoMailFolderK; [super dealloc]; } -- (SOGoMailFolder *) specialFolderFromAccount: (SOGoMailAccount *) accountFolder - inContext: (WOContext *) woContext -{ - [self subclassResponsibility: _cmd]; - return nil; +- (void) addProperties: (NSDictionary *) newProperties +{ + NSString *newDisplayName; + NSMutableDictionary *propsCopy; + NSNumber *key; + + key = MAPIPropertyKey (PR_DISPLAY_NAME_UNICODE); + newDisplayName = [newProperties objectForKey: key]; + if (newDisplayName) + { + [(SOGoMailFolder *) sogoObject renameTo: newDisplayName]; + propsCopy = [newProperties mutableCopy]; + [propsCopy removeObjectForKey: key]; + [propsCopy autorelease]; + newProperties = propsCopy; + } + + [super addProperties: newProperties]; } - (MAPIStoreMessageTable *) messageTable