From b37c58e765bfd3eb95cd9b3fed5243e46e1ade74 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 17 Jun 2009 13:35:08 +0000 Subject: [PATCH] Monotone-Parent: ad0652e110056f0a30b9fa6a1efffe2bd0de832a Monotone-Revision: 9995223a0452fd05c8a2bc29a4e75bddaa07438b Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2009-06-17T13:35:08 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++ UI/MailPartViewers/UIxMailPartICalViewer.h | 1 + UI/MailPartViewers/UIxMailPartICalViewer.m | 43 +++++++++++----------- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index f4d2d5a0c..b9b642fa3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2009-06-17 Wolfgang Sourdeau + * UI/MailPartViewers/UIxMailPartICalViewer.m (-storedEventObject): + use the new "storedEventFetched" bool ivar to specify whether we + already attempted to fetch the event from the user calendars. + * SoObjects/SOGo/SOGoUser.m (-rolesForObject:inContext:): do not query the acls for the object if the current user is its owner. diff --git a/UI/MailPartViewers/UIxMailPartICalViewer.h b/UI/MailPartViewers/UIxMailPartICalViewer.h index 0728008bc..cd5650f3e 100644 --- a/UI/MailPartViewers/UIxMailPartICalViewer.h +++ b/UI/MailPartViewers/UIxMailPartICalViewer.h @@ -38,6 +38,7 @@ SOGoDateFormatter *dateFormatter; id item; SOGoAppointmentObject *storedEventObject; + BOOL storedEventFetched; iCalEvent *storedEvent; } diff --git a/UI/MailPartViewers/UIxMailPartICalViewer.m b/UI/MailPartViewers/UIxMailPartICalViewer.m index 9ac3fc026..42835f471 100644 --- a/UI/MailPartViewers/UIxMailPartICalViewer.m +++ b/UI/MailPartViewers/UIxMailPartICalViewer.m @@ -255,29 +255,30 @@ /* lookup object in the users Calendar */ SOGoAppointmentFolder *calendar; NSString *filename; - - if ([self hasCalendarAccess]) + + if (!storedEventFetched) { - if (!storedEventObject) - { - calendar = [self calendarFolder]; - if ([calendar isKindOfClass: [NSException class]]) - [self errorWithFormat:@"Did not find Calendar folder: %@", calendar]; - else - { - filename = [calendar resourceNameForEventUID:[[self inEvent] uid]]; - if (filename) - { - storedEventObject = [calendar lookupName: filename - inContext: [self context] - acquire: NO]; - if ([storedEventObject isKindOfClass: [NSException class]]) + if ([self hasCalendarAccess]) + { + calendar = [self calendarFolder]; + if ([calendar isKindOfClass: [NSException class]]) + [self errorWithFormat:@"Did not find Calendar folder: %@", calendar]; + else + { + filename = [calendar resourceNameForEventUID:[[self inEvent] uid]]; + if (filename) + { + storedEventObject = [calendar lookupName: filename + inContext: [self context] + acquire: NO]; + if ([storedEventObject isKindOfClass: [NSException class]]) storedEventObject = nil; - else - [storedEventObject retain]; - } - } - } + else + [storedEventObject retain]; + } + } + } + storedEventFetched = YES; } return storedEventObject;