Monotone-Parent: a08ab23d521b24b5495493a2b4c03707186b438e

Monotone-Revision: ad2d3271fb0e1e8ef38a2f6ed2d28f749a5f3623

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2007-07-30T18:01:25
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2007-07-30 18:01:25 +00:00
parent 4e6586bf4a
commit b6f2db5256
2 changed files with 100 additions and 81 deletions

View File

@@ -1,5 +1,9 @@
2007-07-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount -inboxFolderInContext:_ctx])
([-sentFolderInContext:], [-trashFolderInContext:]): folder keys
all starts with "folder".
* SoObjects/SOGo/SOGoObject.m ([SOGoObject +initialize]): no
longer declare security info from here.

View File

@@ -33,6 +33,8 @@ static NSArray *rootFolderNames = nil;
static NSString *inboxFolderName = @"INBOX";
static NSString *draftsFolderName = @"Drafts";
static NSString *sieveFolderName = @"Filters";
static NSString *sentFolderName = nil;
static NSString *trashFolderName = nil;
static NSString *sharedFolderName = @""; // TODO: add English default
static NSString *otherUsersFolderName = @""; // TODO: add English default
static BOOL useAltNamespace = NO;
@@ -43,9 +45,23 @@ static BOOL useAltNamespace = NO;
useAltNamespace = [ud boolForKey:@"SOGoSpecialFoldersInRoot"];
sharedFolderName = [ud stringForKey:@"SOGoSharedFolderName"];
sharedFolderName = [ud stringForKey:@"SOGoSharedFolderName"];
otherUsersFolderName = [ud stringForKey:@"SOGoOtherUsersFolderName"];
cfgDraftsFolderName = [ud stringForKey:@"SOGoDraftsFolderName"];
if (!sentFolderName)
{
sentFolderName = [ud stringForKey: @"SOGoSentFolderName"];
if (!sentFolderName)
sentFolderName = @"Sent";
[sentFolderName retain];
}
if (!trashFolderName)
{
trashFolderName = [ud stringForKey: @"SOGoTrashFolderName"];
if (!trashFolderName)
trashFolderName = @"Trash";
[trashFolderName retain];
}
if ([cfgDraftsFolderName length] > 0)
{
ASSIGN (draftsFolderName, cfgDraftsFolderName);
@@ -267,100 +283,99 @@ static BOOL useAltNamespace = NO;
/* special folders */
- (NSString *)inboxFolderNameInContext:(id)_ctx {
- (NSString *) inboxFolderNameInContext: (id)_ctx
{
return inboxFolderName; /* cannot be changed in Cyrus ? */
}
- (NSString *)draftsFolderNameInContext:(id)_ctx {
- (NSString *) draftsFolderNameInContext: (id) _ctx
{
return draftsFolderName; /* SOGo managed folder */
}
- (NSString *)sieveFolderNameInContext:(id)_ctx {
- (NSString *) sieveFolderNameInContext: (id) _ctx
{
return sieveFolderName; /* SOGo managed folder */
}
- (NSString *)sentFolderNameInContext:(id)_ctx {
/* OGo issue #1225 */
static NSString *s = nil;
if (s == nil) {
NSUserDefaults *ud;
ud = [NSUserDefaults standardUserDefaults];
s = [[ud stringForKey:@"SOGoSentFolderName"] copy];
if ([s length] == 0) s = @"Sent";
[self logWithFormat:@"Note: using SOGoSentFolderName: '%@'", s];
}
return s;
}
- (NSString *)trashFolderNameInContext:(id)_ctx {
/* OGo issue #1225 */
static NSString *s = nil;
if (s == nil) {
NSUserDefaults *ud;
ud = [NSUserDefaults standardUserDefaults];
s = [[ud stringForKey:@"SOGoTrashFolderName"] copy];
if ([s length] == 0) s = @"Trash";
NSLog(@"Note: using SOGoTrashFolderName: '%@'", s);
}
return s;
- (NSString *) sentFolderNameInContext:(id)_ctx
{
return sentFolderName;
}
- (SOGoMailFolder *)inboxFolderInContext:(id)_ctx {
- (NSString *) trashFolderNameInContext:(id)_ctx
{
return trashFolderName;
}
- (SOGoMailFolder *) inboxFolderInContext: (id) _ctx
{
NSString *folderName;
// TODO: use some profile to determine real location, use a -traverse lookup
SOGoMailFolder *folder;
if (inboxFolder != nil)
return inboxFolder;
folder = [self lookupName:[self inboxFolderNameInContext:_ctx]
inContext:_ctx acquire:NO];
if ([folder isKindOfClass:[NSException class]]) return folder;
return ((inboxFolder = [folder retain]));
if (!inboxFolder)
{
folderName = [NSString stringWithFormat: @"folder%@",
[self inboxFolderNameInContext: _ctx]];
inboxFolder = [self lookupName: folderName inContext: _ctx acquire: NO];
[inboxFolder retain];
}
return inboxFolder;
}
- (SOGoMailFolder *)sentFolderInContext:(id)_ctx {
- (SOGoMailFolder *) sentFolderInContext: (id) _ctx
{
NSString *folderName;
SOGoMailFolder *lookupFolder;
// TODO: use some profile to determine real location, use a -traverse lookup
SOGoMailFolder *folder;
if (sentFolder != nil)
return sentFolder;
folder = useAltNamespace ? (id)self : [self inboxFolderInContext:_ctx];
if ([folder isKindOfClass:[NSException class]]) return folder;
folder = [folder lookupName:[self sentFolderNameInContext:_ctx]
inContext:_ctx acquire:NO];
if ([folder isKindOfClass:[NSException class]]) return folder;
if (![folder isNotNull]) {
return [NSException exceptionWithHTTPStatus:404 /* not found */
reason:@"did not find Sent folder!"];
}
return ((sentFolder = [folder retain]));
if (!sentFolder)
{
lookupFolder = (useAltNamespace
? (id) self
: [self inboxFolderInContext:_ctx]);
if (![lookupFolder isKindOfClass: [NSException class]])
{
folderName = [NSString stringWithFormat: @"folder%@",
[self sentFolderNameInContext:_ctx]];
sentFolder = [lookupFolder lookupName: folderName
inContext: _ctx acquire: NO];
}
if (![sentFolder isNotNull])
sentFolder = [NSException exceptionWithHTTPStatus: 404 /* not found */
reason: @"did not find Sent folder!"];
[sentFolder retain];
}
return sentFolder;
}
- (SOGoMailFolder *)trashFolderInContext:(id)_ctx {
// TODO: use some profile to determine real location
SOGoMailFolder *folder;
if (trashFolder != nil)
return trashFolder;
folder = useAltNamespace ? (id)self : [self inboxFolderInContext:_ctx];
if ([folder isKindOfClass:[NSException class]]) return folder;
folder = [folder lookupName:[self trashFolderNameInContext:_ctx]
inContext:_ctx acquire:NO];
if ([folder isKindOfClass:[NSException class]]) return folder;
if (![folder isNotNull]) {
return [NSException exceptionWithHTTPStatus:404 /* not found */
reason:@"did not find Trash folder!"];
}
return ((trashFolder = [folder retain]));
- (SOGoMailFolder *) trashFolderInContext: (id) _ctx
{
NSString *folderName;
SOGoMailFolder *lookupFolder;
// TODO: use some profile to determine real location, use a -traverse lookup
if (!trashFolder)
{
lookupFolder = (useAltNamespace
? (id) self
: [self inboxFolderInContext:_ctx]);
if (![lookupFolder isKindOfClass: [NSException class]])
{
folderName = [NSString stringWithFormat: @"folder%@",
[self trashFolderNameInContext:_ctx]];
trashFolder = [lookupFolder lookupName: folderName
inContext: _ctx acquire: NO];
}
if (![trashFolder isNotNull])
trashFolder = [NSException exceptionWithHTTPStatus: 404 /* not found */
reason: @"did not find Trash folder!"];
[trashFolder retain];
}
return trashFolder;
}
/* WebDAV */