mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-10 05:55:25 +00:00
Monotone-Parent: 4e23e038f2b0b7eddf8b30700b8c9a8910768f98
Monotone-Revision: 9235e5dc4d151a3cba8ad842ac39e1b2d18c8201 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-01-29T19:55:21 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -77,57 +77,6 @@ static Class SOGoMailFolderK;
|
||||
[MAPIStoreAppointmentWrapper class];
|
||||
}
|
||||
|
||||
- (id) initWithURL: (NSURL *) newURL
|
||||
inContext: (MAPIStoreContext *) newContext
|
||||
{
|
||||
SOGoUserFolder *userFolder;
|
||||
SOGoMailAccounts *accountsFolder;
|
||||
SOGoMailAccount *accountFolder;
|
||||
SOGoFolder *currentContainer;
|
||||
WOContext *woContext;
|
||||
|
||||
if ((self = [super initWithURL: newURL
|
||||
inContext: newContext]))
|
||||
{
|
||||
woContext = [newContext woContext];
|
||||
userFolder = [SOGoUserFolder objectWithName: [newURL user]
|
||||
inContainer: MAPIApp];
|
||||
[parentContainersBag addObject: userFolder];
|
||||
[woContext setClientObject: userFolder];
|
||||
|
||||
accountsFolder = [userFolder lookupName: @"Mail"
|
||||
inContext: woContext
|
||||
acquire: NO];
|
||||
[parentContainersBag addObject: accountsFolder];
|
||||
[woContext setClientObject: accountsFolder];
|
||||
|
||||
accountFolder = [accountsFolder lookupName: @"0"
|
||||
inContext: woContext
|
||||
acquire: NO];
|
||||
[[accountFolder imap4Connection]
|
||||
enableExtension: @"QRESYNC"];
|
||||
|
||||
[parentContainersBag addObject: accountFolder];
|
||||
[woContext setClientObject: accountFolder];
|
||||
|
||||
sogoObject = [self specialFolderFromAccount: accountFolder
|
||||
inContext: woContext];
|
||||
[sogoObject retain];
|
||||
currentContainer = [sogoObject container];
|
||||
while (currentContainer != (SOGoFolder *) accountFolder)
|
||||
{
|
||||
[parentContainersBag addObject: currentContainer];
|
||||
currentContainer = [currentContainer container];
|
||||
}
|
||||
|
||||
ASSIGN (versionsMessage,
|
||||
[SOGoMAPIFSMessage objectWithName: @"versions.plist"
|
||||
inContainer: propsFolder]);
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id) initWithSOGoObject: (id) newSOGoObject
|
||||
inContainer: (MAPIStoreObject *) newContainer
|
||||
{
|
||||
@@ -135,15 +84,20 @@ static Class SOGoMailFolderK;
|
||||
|
||||
if ((self = [super initWithSOGoObject: newSOGoObject inContainer: newContainer]))
|
||||
{
|
||||
usesAltNameSpace = NO;
|
||||
// urlString = [[self url] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
|
||||
ASSIGN (versionsMessage,
|
||||
[SOGoMAPIFSMessage objectWithName: @"versions.plist"
|
||||
inContainer: propsFolder]);
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) setupVersionsMessage
|
||||
{
|
||||
ASSIGN (versionsMessage,
|
||||
[SOGoMAPIFSMessage objectWithName: @"versions.plist"
|
||||
inContainer: propsFolder]);
|
||||
}
|
||||
|
||||
- (void) dealloc
|
||||
{
|
||||
[versionsMessage release];
|
||||
@@ -166,7 +120,6 @@ static Class SOGoMailFolderK;
|
||||
|
||||
- (NSString *) createFolder: (struct SRow *) aRow
|
||||
withFID: (uint64_t) newFID
|
||||
inContainer: (id) subfolderParent
|
||||
{
|
||||
NSString *folderName, *nameInContainer;
|
||||
SOGoMailFolder *newFolder;
|
||||
@@ -188,7 +141,7 @@ static Class SOGoMailFolderK;
|
||||
nameInContainer = [NSString stringWithFormat: @"folder%@",
|
||||
[folderName asCSSIdentifier]];
|
||||
newFolder = [SOGoMailFolderK objectWithName: nameInContainer
|
||||
inContainer: subfolderParent];
|
||||
inContainer: sogoObject];
|
||||
if (![newFolder create])
|
||||
nameInContainer = nil;
|
||||
}
|
||||
@@ -196,13 +149,6 @@ static Class SOGoMailFolderK;
|
||||
return nameInContainer;
|
||||
}
|
||||
|
||||
- (NSString *) createFolder: (struct SRow *) aRow
|
||||
withFID: (uint64_t) newFID
|
||||
{
|
||||
return [self createFolder: aRow withFID: newFID
|
||||
inContainer: sogoObject];
|
||||
}
|
||||
|
||||
- (int) getPrContentUnread: (void **) data
|
||||
inMemCtx: (TALLOC_CTX *) memCtx
|
||||
{
|
||||
@@ -896,7 +842,7 @@ _parseCOPYUID (NSString *line, NSArray **destUIDsP)
|
||||
wantCopy: wantCopy];
|
||||
|
||||
/* Conversion of mids to IMAP uids */
|
||||
mapping = [[self context] mapping];
|
||||
mapping = [self mapping];
|
||||
uids = [NSMutableArray arrayWithCapacity: midCount];
|
||||
oldMessageURLs = [NSMutableArray arrayWithCapacity: midCount];
|
||||
for (count = 0; count < midCount; count++)
|
||||
@@ -1060,172 +1006,3 @@ _parseCOPYUID (NSString *line, NSArray **destUIDsP)
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation MAPIStoreInboxFolder : MAPIStoreMailFolder
|
||||
|
||||
- (id) initWithURL: (NSURL *) newURL
|
||||
inContext: (MAPIStoreContext *) newContext
|
||||
{
|
||||
NSDictionary *list, *response;
|
||||
NGImap4Client *client;
|
||||
|
||||
if ((self = [super initWithURL: newURL
|
||||
inContext: newContext]))
|
||||
{
|
||||
client = [[(SOGoMailFolder *) sogoObject imap4Connection] client];
|
||||
list = [client list: @"" pattern: @"INBOX"];
|
||||
response = [[list objectForKey: @"RawResponse"] objectForKey: @"list"];
|
||||
usesAltNameSpace = [[response objectForKey: @"flags"] containsObject: @"noinferiors"];
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (SOGoMailFolder *) specialFolderFromAccount: (SOGoMailAccount *) accountFolder
|
||||
inContext: (WOContext *) woContext
|
||||
{
|
||||
return [accountFolder inboxFolderInContext: woContext];
|
||||
}
|
||||
|
||||
- (NSString *) createFolder: (struct SRow *) aRow
|
||||
withFID: (uint64_t) newFID
|
||||
{
|
||||
id subfolderParent;
|
||||
|
||||
if (usesAltNameSpace)
|
||||
subfolderParent = [(SOGoMailFolder *) sogoObject mailAccountFolder];
|
||||
else
|
||||
subfolderParent = sogoObject;
|
||||
|
||||
return [self createFolder: aRow withFID: newFID
|
||||
inContainer: subfolderParent];
|
||||
}
|
||||
|
||||
- (NSMutableString *) _imapFolderNameRepresentation: (NSString *) subfolderName
|
||||
{
|
||||
NSMutableString *representation;
|
||||
|
||||
if (usesAltNameSpace)
|
||||
{
|
||||
/* with "altnamespace", the subfolders are NEVER subfolders of INBOX... */;
|
||||
if (![subfolderName hasPrefix: @"folder"])
|
||||
abort ();
|
||||
representation
|
||||
= [NSMutableString stringWithString:
|
||||
[subfolderName substringFromIndex: 6]];
|
||||
}
|
||||
else
|
||||
representation = [super _imapFolderNameRepresentation: subfolderName];
|
||||
|
||||
return representation;
|
||||
}
|
||||
|
||||
- (NSArray *) folderKeysMatchingQualifier: (EOQualifier *) qualifier
|
||||
andSortOrderings: (NSArray *) sortOrderings
|
||||
{
|
||||
NSMutableArray *subfolderKeys;
|
||||
SOGoMailAccount *account;
|
||||
|
||||
if (usesAltNameSpace)
|
||||
{
|
||||
if (qualifier)
|
||||
[self errorWithFormat: @"qualifier is not used for folders"];
|
||||
if (sortOrderings)
|
||||
[self errorWithFormat: @"sort orderings are not used for folders"];
|
||||
|
||||
account = [(SOGoMailFolder *) sogoObject mailAccountFolder];
|
||||
subfolderKeys
|
||||
= [[account toManyRelationshipKeysWithNamespaces: NO]
|
||||
mutableCopy];
|
||||
[subfolderKeys removeObject: @"folderINBOX"];
|
||||
|
||||
[self _cleanupSubfolderKeys: subfolderKeys];
|
||||
}
|
||||
else
|
||||
subfolderKeys = [[super folderKeysMatchingQualifier: qualifier
|
||||
andSortOrderings: sortOrderings]
|
||||
mutableCopy];
|
||||
|
||||
/* TODO: remove special folders */
|
||||
|
||||
[subfolderKeys autorelease];
|
||||
|
||||
return subfolderKeys;
|
||||
}
|
||||
|
||||
- (id) lookupFolder: (NSString *) childKey
|
||||
{
|
||||
MAPIStoreMailFolder *childFolder = nil;
|
||||
SOGoMailAccount *account;
|
||||
SOGoMailFolder *sogoFolder;
|
||||
WOContext *woContext;
|
||||
|
||||
if (usesAltNameSpace)
|
||||
{
|
||||
if ([[self folderKeys] containsObject: childKey])
|
||||
{
|
||||
woContext = [[self context] woContext];
|
||||
account = [(SOGoMailFolder *) sogoObject mailAccountFolder];
|
||||
sogoFolder = [account lookupName: childKey inContext: woContext
|
||||
acquire: NO];
|
||||
[sogoFolder setContext: woContext];
|
||||
childFolder = [MAPIStoreMailFolder mapiStoreObjectWithSOGoObject: sogoFolder
|
||||
inContainer: self];
|
||||
}
|
||||
}
|
||||
else
|
||||
childFolder = [super lookupFolder: childKey];
|
||||
|
||||
return childFolder;
|
||||
}
|
||||
|
||||
- (BOOL) supportsSubFolders
|
||||
{
|
||||
return !usesAltNameSpace;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation MAPIStoreSentItemsFolder : MAPIStoreMailFolder
|
||||
|
||||
- (SOGoMailFolder *) specialFolderFromAccount: (SOGoMailAccount *) accountFolder
|
||||
inContext: (WOContext *) woContext
|
||||
{
|
||||
return [accountFolder sentFolderInContext: woContext];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation MAPIStoreDraftsFolder : MAPIStoreMailFolder
|
||||
|
||||
- (SOGoMailFolder *) specialFolderFromAccount: (SOGoMailAccount *) accountFolder
|
||||
inContext: (WOContext *) woContext
|
||||
{
|
||||
return [accountFolder draftsFolderInContext: woContext];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
// @implementation MAPIStoreDeletedItemsFolder : MAPIStoreMailFolder
|
||||
|
||||
// - (SOGoMailFolder *) specialFolderFromAccount: (SOGoMailAccount *) accountFolder
|
||||
// inContext: (WOContext *) woContext
|
||||
// {
|
||||
// return [accountFolder trashFolderInContext: woContext];
|
||||
// }
|
||||
|
||||
// @end
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
@implementation MAPIStoreOutboxFolder : MAPIStoreMailFolder
|
||||
|
||||
- (SOGoMailFolder *) specialFolderFromAccount: (SOGoMailAccount *) accountFolder
|
||||
inContext: (WOContext *) woContext
|
||||
{
|
||||
return [accountFolder draftsFolderInContext: woContext];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user