mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-23 20:35:24 +00:00
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:
@@ -43,6 +43,7 @@
|
||||
@protocol SOGoContactFolder <NSObject>
|
||||
|
||||
- (NSArray *) lookupContactsWithFilter: (NSString *) filter
|
||||
onCriteria: (NSString *) criteria
|
||||
sortBy: (NSString *) sortKey
|
||||
ordering: (NSComparisonResult) sortOrdering;
|
||||
- (NSDictionary *) lookupContactWithName: (NSString *) aName;
|
||||
|
||||
@@ -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];
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]))
|
||||
|
||||
Reference in New Issue
Block a user