Monotone-Parent: 1ed4bccebed155143bf812c74cb29f69ccb51f7d

Monotone-Revision: 38830b89dba3fbe47ce03c0a4617768116eda22b

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-10-26T20:19:37
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2010-10-26 20:19:37 +00:00
parent 90a40362af
commit 00fe3ec6dd
25 changed files with 62 additions and 55 deletions
+1
View File
@@ -43,6 +43,7 @@
@protocol SOGoContactFolder <NSObject>
- (NSArray *) lookupContactsWithFilter: (NSString *) filter
onCriteria: (NSString *) criteria
sortBy: (NSString *) sortKey
ordering: (NSComparisonResult) sortOrdering;
- (NSDictionary *) lookupContactWithName: (NSString *) aName;
+23 -10
View File
@@ -169,21 +169,33 @@ static NSArray *folderListingFields = nil;
}
- (EOQualifier *) _qualifierForFilter: (NSString *) filter
onCriteria: (NSString *) criteria
{
NSString *qs;
EOQualifier *qualifier;
if (filter && [filter length] > 0)
if ([filter length] > 0)
{
filter = [[filter stringByReplacingString: @"\\" withString: @"\\\\"]
stringByReplacingString: @"'" withString: @"\\'\\'"];
qs = [NSString stringWithFormat:
@"(c_sn isCaseInsensitiveLike: '%%%@%%') OR "
@"(c_givenname isCaseInsensitiveLike: '%%%@%%') OR "
@"(c_cn isCaseInsensitiveLike: '%%%@%%') OR "
@"(c_mail isCaseInsensitiveLike: '%%%@%%')",
filter, filter, filter, filter];
qualifier = [EOQualifier qualifierWithQualifierFormat: qs];
stringByReplacingString: @"'" withString: @"\\'\\'"];
if ([criteria isEqualToString: @"name_or_address"])
qs = [NSString stringWithFormat:
@"(c_sn isCaseInsensitiveLike: '%%%@%%') OR "
@"(c_givenname isCaseInsensitiveLike: '%%%@%%') OR "
@"(c_cn isCaseInsensitiveLike: '%%%@%%') OR "
@"(c_mail isCaseInsensitiveLike: '%%%@%%')",
filter, filter, filter, filter];
else if ([criteria isEqualToString: @"category"])
qs = [NSString stringWithFormat:
@"(c_categories isCaseInsensitiveLike: '%%%@%%')",
filter];
else
qs = @"(1 == 0)";
if (qs)
qualifier = [EOQualifier qualifierWithQualifierFormat: qs];
else
qualifier = nil;
}
else
qualifier = nil;
@@ -264,6 +276,7 @@ static NSArray *folderListingFields = nil;
}
- (NSArray *) lookupContactsWithFilter: (NSString *) filter
onCriteria: (NSString *) criteria
sortBy: (NSString *) sortKey
ordering: (NSComparisonResult) sortOrdering
{
@@ -271,7 +284,7 @@ static NSArray *folderListingFields = nil;
EOQualifier *qualifier;
EOSortOrdering *ordering;
qualifier = [self _qualifierForFilter: filter];
qualifier = [self _qualifierForFilter: filter onCriteria: criteria];
dbRecords = [[self ocsFolder] fetchFields: folderListingFields
matchingQualifier: qualifier];
+2 -1
View File
@@ -243,6 +243,7 @@
}
- (NSArray *) lookupContactsWithFilter: (NSString *) filter
onCriteria: (NSString *) criteria
sortBy: (NSString *) sortKey
ordering: (NSComparisonResult) sortOrdering
{
@@ -251,7 +252,7 @@
result = nil;
if (filter && [filter length] > 0)
if ([filter length] > 0 && [criteria isEqualToString: @"name_or_address"])
{
records = [source fetchContactsMatching: filter];
[childRecords setObjects: records
+3 -2
View File
@@ -100,8 +100,9 @@
{
currentFilter = [filters objectAtIndex: count];
contacts = [[(id<SOGoContactFolder>)self lookupContactsWithFilter: [[currentFilter allValues] lastObject]
sortBy: @"c_givenname"
ordering: NSOrderedDescending]
onCriteria: @"name_or_address"
sortBy: @"c_givenname"
ordering: NSOrderedDescending]
objectEnumerator];
while ((contact = [contacts nextObject]))