From c66791413232b5a0ab380b971c2d0515e1e9f392 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 12 Apr 2012 23:44:39 +0000 Subject: [PATCH] Monotone-Parent: 5778b1ee87b79a304c367a6cb34c9823e5935f15 Monotone-Revision: a8206d668a0bdb4471047c63de86e129c3937ffa Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-04-12T23:44:39 --- ChangeLog | 4 +++ .../Appointments/SOGoAppointmentFolder.m | 12 +++++++ SoObjects/SOGo/SOGoGCSFolder.m | 31 ++++++++++++++++--- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9ca6a3a72..0ccf8e5de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2012-04-12 Wolfgang Sourdeau + * SoObjects/SOGo/SOGoGCSFolder.m (-componentSQLFilter): new + overridable method that enables passing filters for + toOneRelationshipKeys from subclasses. + * SoObjects/Appointments/SOGoAppointmentFolder.m (-davCalendarComponentSet): componentSet is now an ivar. Include VTODO only with showCalendarTasks returns YES. diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index c2d568c41..7e99e2bc7 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -499,6 +499,18 @@ static NSNumber *sharedYes = nil; return filter; } +- (NSString *) componentSQLFilter +{ + NSString *filter; + + if ([self showCalendarTasks]) + filter = nil; + else + filter = @"c_component != 'vtodo'"; + + return filter; +} + - (BOOL) _checkIfWeCanRememberRecords: (NSArray *) fields { return ([fields containsObject: @"c_name"] diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m index 5ee38847c..6a2bde8d5 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.m +++ b/SoObjects/SOGo/SOGoGCSFolder.m @@ -617,19 +617,42 @@ static NSArray *childRecordFields = nil; return filter; } +- (NSString *) componentSQLFilter +{ + return nil; +} + - (NSArray *) toOneRelationshipKeys { NSArray *records, *names; - NSString *sqlFilter; - EOQualifier *qualifier; + NSString *sqlFilter, *compFilter; + EOQualifier *aclQualifier, *componentQualifier, *qualifier; sqlFilter = [self aclSQLListingFilter]; if (sqlFilter) { if ([sqlFilter length] > 0) - qualifier = [EOQualifier qualifierWithQualifierFormat: sqlFilter]; + aclQualifier = [EOQualifier qualifierWithQualifierFormat: sqlFilter]; else - qualifier = nil; + aclQualifier = nil; + + compFilter = [self componentSQLFilter]; + if ([compFilter length] > 0) + { + componentQualifier + = [EOQualifier qualifierWithQualifierFormat: compFilter]; + if (aclQualifier) + { + qualifier = [[EOAndQualifier alloc] initWithQualifiers: + aclQualifier, + componentQualifier]; + [qualifier autorelease]; + } + else + qualifier = componentQualifier; + } + else + qualifier = aclQualifier; records = [[self ocsFolder] fetchFields: childRecordFields matchingQualifier: qualifier];