Monotone-Parent: e160c8da7c5049a7b1bbca545d886045ba8a2f14

Monotone-Revision: b1f1b1e8d2d0e0165cffef74b543546db1110544

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2011-08-11T22:56:04
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2011-08-11 22:56:04 +00:00
parent bd78438d3c
commit 5af234e075
8 changed files with 145 additions and 8 deletions
+41 -3
View File
@@ -26,10 +26,11 @@
#import <Foundation/NSString.h>
#import <Foundation/NSURL.h>
#import <NGExtensions/NSObject+Logs.h>
#import <EOControl/EOQualifier.h>
#import "EOQualifier+MAPIFS.h"
#import "MAPIStoreFSFolderTable.h"
#import "MAPIStoreFSMessage.h"
#import "MAPIStoreFSMessageTable.h"
#import "MAPIStoreFolderTable.h"
#import "MAPIStoreTypes.h"
#import "SOGoMAPIFSFolder.h"
#import "SOGoMAPIFSMessage.h"
@@ -42,12 +43,13 @@
// #include <libmapiproxy.h>
// #include <param.h>
static Class MAPIStoreFSMessageK;
static Class EOKeyValueQualifierK, MAPIStoreFSMessageK;
@implementation MAPIStoreFSFolder
+ (void) initialize
{
EOKeyValueQualifierK = [EOKeyValueQualifier class];
MAPIStoreFSMessageK = [MAPIStoreFSMessage class];
}
@@ -75,6 +77,11 @@ static Class MAPIStoreFSMessageK;
return MAPIStoreFSMessageK;
}
- (MAPIStoreFolderTable *) folderTable
{
return [MAPIStoreFSFolderTable tableForContainer: self];
}
- (NSString *) createFolder: (struct SRow *) aRow
withFID: (uint64_t) newFID
{
@@ -117,6 +124,37 @@ static Class MAPIStoreFSMessageK;
andSortOrderings: sortOrderings];
}
- (NSArray *) folderKeysMatchingQualifier: (EOQualifier *) qualifier
andSortOrderings: (NSArray *) sortOrderings
{
NSArray *entries;
NSMutableArray *filteredEntries;
NSUInteger count, max;
MAPIStoreFSFolder *subfolder;
SOGoMAPIFSMessage *propertiesMessage;
NSString *subfolderKey;
entries = [(SOGoMAPIFSFolder *) sogoObject toManyRelationshipKeys];
if (qualifier)
{
max = [entries count];
filteredEntries = [NSMutableArray arrayWithCapacity: max];
for (count = 0; count < max; count++)
{
subfolderKey = [entries objectAtIndex: count];
subfolder = [self lookupFolder: subfolderKey];
propertiesMessage = [subfolder propertiesMessage];
if ([qualifier evaluateMAPIFSMessage: propertiesMessage])
[filteredEntries addObject: subfolderKey];
}
entries = filteredEntries;
}
if (sortOrderings)
[self errorWithFormat: @"sort orderings are not used for folders"];
return entries;
}
- (id) lookupFolder: (NSString *) childKey
{
id childObject = nil;