Monotone-Parent: 267e6d207c2b21dd1ac48357f84bd5251da930b1

Monotone-Revision: 24cf83dbb2cb1e47afd0354cd24653a8c26a7ce1

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2007-10-31T15:55:47
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2007-10-31 15:55:47 +00:00
parent 8fd1c93ac3
commit 32e9662706
11 changed files with 181 additions and 23 deletions
+3 -3
View File
@@ -18,7 +18,10 @@ Mailer_OBJC_FILES += \
SOGoMailFolder.m \
SOGoSharedInboxFolder.m \
SOGoMailObject.m \
SOGoDraftObject.m \
SOGoMailObject+Draft.m \
SOGoSentFolder.m \
SOGoDraftsFolder.m \
SOGoTrashFolder.m \
\
SOGoMailBodyPart.m \
@@ -27,9 +30,6 @@ Mailer_OBJC_FILES += \
SOGoCalendarMailBodyPart.m \
SOGoVCardMailBodyPart.m \
\
SOGoDraftsFolder.m \
SOGoDraftObject.m \
\
SOGoMailForward.m \
\
NSData+Mail.m \
+1 -1
View File
@@ -24,7 +24,7 @@
@class SOGoDraftObject;
@interface SOGoDraftsFolder : SOGoMailFolder
@interface SOGoDraftsFolder : SOGoSpecialMailFolder
- (SOGoDraftObject *) newDraft;
- (BOOL) isInDraftsFolder;
+40 -18
View File
@@ -32,6 +32,7 @@
#import <NGExtensions/NSNull+misc.h>
#import <NGImap4/NGImap4Connection.h>
#import <SoObjects/SOGo/NSArray+Utilities.h>
#import <SoObjects/SOGo/SOGoUser.h>
#import "SOGoMailFolder.h"
@@ -163,7 +164,7 @@ static NSString *otherUsersFolderName = @""; // TODO: add English default
[folders removeObjectsInArray: additionalFolders];
[folders addObjectsFromArray: additionalFolders];
}
return folders;
}
@@ -178,13 +179,21 @@ static NSString *otherUsersFolderName = @""; // TODO: add English default
{
NSMutableArray *newFolders;
NSArray *rawFolders, *mainFolders;
NSString *realDraftsFolderName, *realSentFolderName, *realTrashFolderName;
rawFolders = [[self imap4Connection]
allFoldersForURL: [self imap4URL]];
rawFolders = [[self imap4Connection] allFoldersForURL: [self imap4URL]];
#warning FIXME: the folder names should be prefixed
mainFolders = [NSArray arrayWithObjects: inboxFolderName, draftsFolderName,
sentFolder, trashFolder, nil];
realDraftsFolderName
= [[self draftsFolderInContext: context] traversalFromMailAccount];
realSentFolderName
= [[self sentFolderInContext: context] traversalFromMailAccount];
realTrashFolderName
= [[self trashFolderInContext: context] traversalFromMailAccount];
mainFolders = [NSArray arrayWithObjects: inboxFolderName,
realDraftsFolderName,
realSentFolderName,
realTrashFolderName, nil];
newFolders = [NSMutableArray arrayWithArray: rawFolders];
[newFolders removeObjectsInArray: mainFolders];
[newFolders sortUsingSelector: @selector (caseInsensitiveCompare:)];
@@ -247,6 +256,11 @@ static NSString *otherUsersFolderName = @""; // TODO: add English default
return urlString;
}
- (NSMutableString *) traversalFromMailAccount
{
return [NSMutableString string];
}
- (NSString *) imap4Login
{
return [[self imap4URL] user];
@@ -274,15 +288,11 @@ static NSString *otherUsersFolderName = @""; // TODO: add English default
return folder;
}
- (id) lookupImap4Folder: (NSString *) _key
inContext: (id) _cx
- (id) lookupSentFolder: (NSString *) _key
inContext: (id) _ctx
{
NSString *s;
s = [_key isEqualToString: [self trashFolderNameInContext:_cx]]
? @"SOGoTrashFolder" : @"SOGoMailFolder";
return [self lookupFolder:_key ofClassNamed:s inContext:_cx];
return [self lookupFolder: _key ofClassNamed: @"SOGoSentFolder"
inContext: _ctx];
}
- (id) lookupDraftsFolder: (NSString *) _key
@@ -292,6 +302,13 @@ static NSString *otherUsersFolderName = @""; // TODO: add English default
inContext: _ctx];
}
- (id) lookupTrashFolder: (NSString *) _key
inContext: (id) _ctx
{
return [self lookupFolder: _key ofClassNamed: @"SOGoTrashFolder"
inContext: _ctx];
}
- (id) lookupFiltersFolder: (NSString *) _key inContext: (id) _ctx
{
return [self lookupFolder:_key ofClassNamed:@"SOGoSieveScriptsFolder"
@@ -308,12 +325,17 @@ static NSString *otherUsersFolderName = @""; // TODO: add English default
{
// TODO: those should be product.plist bindings? (can't be class bindings
// though because they are 'per-account')
if ([_key isEqualToString: [self draftsFolderNameInContext: _ctx]])
if ([_key isEqualToString: [self sentFolderNameInContext: _ctx]])
obj = [self lookupSentFolder: _key inContext: _ctx];
else if ([_key isEqualToString: [self draftsFolderNameInContext: _ctx]])
obj = [self lookupDraftsFolder: _key inContext: _ctx];
else if ([_key isEqualToString: [self sieveFolderNameInContext: _ctx]])
obj = [self lookupFiltersFolder: _key inContext: _ctx];
else if ([_key isEqualToString: [self trashFolderNameInContext: _ctx]])
obj = [self lookupTrashFolder: _key inContext: _ctx];
// else if ([_key isEqualToString: [self sieveFolderNameInContext: _ctx]])
// obj = [self lookupFiltersFolder: _key inContext: _ctx];
else
obj = [self lookupImap4Folder: _key inContext: _ctx];
obj = [self lookupFolder: _key ofClassNamed: @"SOGoMailFolder"
inContext: _ctx];
}
else
obj = [super lookupName: _key inContext: _ctx acquire: NO];
+1
View File
@@ -64,6 +64,7 @@
- (NSString *) relativeImap4Name;
- (NSMutableString *) imap4URLString;
- (NSMutableString *) traversalFromMailAccount;
- (NSURL *) imap4URL;
- (NSString *) imap4Login;
+10
View File
@@ -186,6 +186,16 @@ static BOOL debugOn = YES;
return [[self authenticatorInContext: context] passwordInContext: context];
}
- (NSMutableString *) traversalFromMailAccount
{
NSMutableString *currentTraversal;
currentTraversal = [container traversalFromMailAccount];
[currentTraversal appendFormat: @"/%@", [self relativeImap4Name]];
return currentTraversal;
}
- (void)flushMailCaches {
[[self mailManager] flushCachesForURL:[self imap4URL]];
}
+8
View File
@@ -67,9 +67,17 @@
- (NSArray *) subfolders;
- (BOOL) isSpecialFolder;
- (NSArray *) allFolderPaths;
- (NSArray *) allFolderURLs;
@end
@interface SOGoSpecialMailFolder : SOGoMailFolder
- (BOOL) isSpecialFolder;
@end
#endif /* __Mailer_SOGoMailFolder_H__ */
+28
View File
@@ -133,6 +133,11 @@ static NSString *defaultUserID = @"anyone";
return [[self imap4Connection] subfoldersForURL: [self imap4URL]];
}
- (BOOL) isSpecialFolder
{
return NO;
}
- (NSArray *) allFolderPaths
{
NSMutableArray *deepSubfolders;
@@ -688,3 +693,26 @@ static NSString *defaultUserID = @"anyone";
}
@end /* SOGoMailFolder */
@implementation SOGoSpecialMailFolder
- (id) initWithName: (NSString *) newName
inContainer: (id) newContainer
{
if ((self = [super initWithName: newName
inContainer: newContainer]))
{
if (![[self imap4Connection] doesMailboxExistAtURL: [self imap4URL]])
[imap4 createMailbox: [self relativeImap4Name]
atURL: [newContainer imap4URL]];
}
return self;
}
- (BOOL) isSpecialFolder
{
return YES;
}
@end
+30
View File
@@ -0,0 +1,30 @@
/*
Copyright (C) 2005 SKYRIX Software AG
This file is part of OpenGroupware.org.
OGo is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public
License along with OGo; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
#ifndef __Mailer_SOGoSentFolder_H__
#define __Mailer_SOGoSentFolder_H__
#import "SOGoMailFolder.h"
@interface SOGoSentFolder : SOGoSpecialMailFolder
@end
#endif /* __Mailer_SOGoSentFolder_H__ */
+34
View File
@@ -0,0 +1,34 @@
/*
Copyright (C) 2005 SKYRIX Software AG
This file is part of OpenGroupware.org.
OGo is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public
License along with OGo; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
#import <Foundation/NSString.h>
#import "SOGoSentFolder.h"
@implementation SOGoSentFolder
/* folder type */
- (NSString *)outlookFolderClass {
return @"IPF.Sent";
}
@end /* SOGoSentFolder */
+1 -1
View File
@@ -24,7 +24,7 @@
#import "SOGoMailFolder.h"
@interface SOGoTrashFolder : SOGoMailFolder
@interface SOGoTrashFolder : SOGoSpecialMailFolder
@end
#endif /* __Mailer_SOGoTrashFolder_H__ */