2012-08-31 Francis Lachapelle * iCalWeeklyRecurrenceCalculator.m (-recurrenceRangesWithinCalendarDateRange:): the week counter must start at 0 when there's no day mask. 2012-08-22 Francis Lachapelle * iCalWeeklyRecurrenceCalculator.m (-recurrenceRangesWithinCalendarDateRange:): fixed validation of the interval when a day mask is used on multiple days. 2012-08-21 Francis Lachapelle * iCalRepeatableEntityObject.m (-exceptionDatesWithTimeZone:): we now consider the timezone of the EXDATE, if defined. 2012-07-26 Wolfgang Sourdeau * iCalTimeZonePeriod.m (-recurrenceRule): new accessor for the "rrule" element. (-startDate): made method public. (-compare:): new method that compare two periods based on their startDate, for timezone definitions which have a "standard" or "daylight" period for more that one year. 2012-05-30 Francis Lachapelle * iCalRepeatableEntityObject.m (-exceptionDatesWithTimeZone:) (-rules:withTimeZone:): exception dates and exception rules must also be adjusted for floating all-day repeating events. 2012-05-29 Francis Lachapelle * iCalRecurrenceCalculator.m (_removeExceptionDatesFromRanges:withDates:withinRange:startingWithDate:): when removing exception dates, avoid removing dates matching the end date of the occurrence. This fixes an issue with all-day daily events. 2012-04-23 Wolfgang Sourdeau * iCalMonthlyRecurrenceCalculator.m (NGMonthDaySet_clear): make use of memset, which is expected to be faster. (-recurrenceRangesWithinCalendarDateRange:): added handling of "BYSETPOS" for "BYDAY" sets. 2012-04-20 Wolfgang Sourdeau * iCalTrigger.m (-nextAlarmDate): new method including most of the old code from -[iCalAlarm nextAlarmDate]. Added support for DATE-TIME values. * iCalAlarm.m (-nextAlarmDate): now a proxy method for -[iCalTrigger nextAlarmDate]. 2012-04-18 Wolfgang Sourdeau * iCalRecurrenceRule.m (-orderOfValueKeys): overrriden method. * NSDictionary+NGCards.m (-versitRenderInString:withKeyOrdering:asAttributes:): now takes an "ordering" parameter resulting from the methods below and reorder the dictionary keys as specified. * CardElement.m (-orderOfAttributeKeys, -orderOfValueKeys): new methods that return an ordered array of value keys, used for rendering data in a way that is acceptable to certain picky clients. 2012-04-11 Francis Lachapelle * iCalWeeklyRecurrenceCalculator.m (-recurrenceRangesWithinCalendarDateRange): we now return occurrences that intersects with the period (not only occurrences within the period). We no longer rely on NSCalendarDate to compute the number of days since the master event start date (it is bugged). 2012-03-26 Wolfgang Sourdeau * iCalDateTime.m (_setDateTime:forAllDayEntity:): set or unset the "VALUE" parameter to the date instance, depending on its the all-dayness. 2012-03-11 Wolfgang Sourdeau * iCalEvent.m (-hasDuration): returns NO when the value is present but empty. 2012-02-03 Francis Lachapelle * iCalDailyRecurrenceCalculator.m (-recurrenceRangesWithinCalendarDateRange): handle the case where the occurrence start date doesn't cover the reference period but the end date does. 2012-01-11 Wolfgang Sourdeau * NSString+NGCards.m (-asCardAttributeValues): fixed a leak by freeing "characters" at the end of the method. 2012-01-09 Wolfgang Sourdeau * NSString+NGCards.m (-vCardSubvalues): fixed allocation of parsing buffer to avoid a buffer overflow. 2011-12-30 Wolfgang Sourdeau * NGVCard.m (-initWithUid:): initialize "CLASS" and "PROFILE". * CardGroup.m (-isVoid): overriden method. (-cleanupEmptyChildren): make use of "isVoid" to detect and remove empty children. 2011-11-21 Francis Lachapelle * iCalTimeZone.m (+knownTimeZoneNames): ignore files that don't have a .ics extension. 2011-11-13 Wolfgang Sourdeau * iCalTrigger.m (-setValue:, value): removed useless accessors. * iCalAttachment.m (-setValue:, value): removed useless accessors. * iCalRecurrenceRule.m (-setRrule): now makes use of the existing parsing algorithm and get the values from the parsed element. * iCalEntityObject.m (-setCategories:): now take an array as parameter. * NSString+NGCards.m (-vCardSubvalues): new method adapted to the new CardElement data structure, replaces "vCardSubvaluesWithSeparator:", since we now know how to properly separate or escape elements. * CardElement.m (-init): "values" in now an NSMutableDictionary. (-setValues:, -values): new primitive accessors; (-setValues:atIndex:forKey:, -setSingleValue:atIndex:forKey:) (setSingleValue:forKey:): new helper setters. (-flattenedValueAtIndex:forKey:, -flattenedValues:forKey:): new "flattened" helper getters. "Flattening" meaning here that the first and/or second level array are merged with "," and ";", to support clients that badly escape(d) their output for fields taking only one value or a specific set of values. (-valuesForKey:,-valuesAtIndex:forKey:): new helper getters 2011-11-09 Wolfgang Sourdeau * NSString+NGCards.m (-escapedForCards): restored the escaping of commas, since they might be used in fields such as COMMENT/DESCRIPTION (iCalendar) or NOTE (vCards) 2011-09-20 Wolfgang Sourdeau * iCalToDo.m (-setCompleted:): (hack) when invoked with a nil argument, we set the status "back" to "IN-PROCESS" as we otherwise may end up with a "COMPLETED" task without a completion date. 2011-07-12 Francis Lachapelle * iCalCalendar.m (-addTimeZone:): now returns true if the timezone was already defined in the calendar. 2011-07-11 Francis Lachapelle * iCalDailyRecurrenceCalculator.m (-recurrenceRangesWithinCalendarDateRange:): we must return all ranges that intersect with the lookup period. * iCalRepeatableEntityObject.m (-addToExceptionDates:): drop the time part when dealing with an all-day event. 2011-03-29 Francis Lachapelle * iCalRepeatableEntityObject.m (-rules:withEventTimeZone:): new method that returns a new set of rules with their "untill dates" adjusted to the specified timezone. (-recurrenceRulesWithTimeZone:): new method that returns the recurrence rules adjusted to the specified timezone. (-exceptionRulesWithTimeZone:): new method that returns the exception rules adjusted to the specified timezone. 2011-03-23 Francis Lachapelle * iCalRepeatableEntityObject.m (-removeAllExceptionDates): don't use the method "exceptionDates" since it returns an array of strings and not CardElement instances. * iCalTimeZone.m (+knownTimeZoneNames): new class method to retrieve the timezone names. Used in replacement of the same method in NSTimeZone. 2011-03-22 Wolfgang Sourdeau * iCalEvent.m (-firstRecurrenceStartDate): new method that makes use of the new one below. * iCalRepeatableEntityObject.m (-firstRecurrenceStartDateWithEndDate:): new method that returns the first occurrence of a recurring entity. * iCalByDayMask.m (-occursOnDay:withWeekOccurrence:): fixed method to return true only when it is valid to do so... (-weekDayOccurrences): new method that returns a reference to the days ivar. 2011-03-20 Wolfgang Sourdeau * CardGroup.m (-removeChild:, -removeChildren:): new self-explanatory methods. 2011-03-15 Wolfgang Sourdeau * NSString+NGCards.m (-asCardAttributeValues): rewritten method properly in order to parse the values string by properly taking quoted, escaping and special characters into account. 2011-01-14 Francis Lachapelle * iCalTimeZone.m (-computedDateForString:): new method that returns a date adjusted with respect to this vTimeZone. (-computedDatesForStrings:): idem but for multiple dates. * iCalRepeatableEntityObject.m (-exceptionDatesWithEventTimeZone:): new method that returns the exception dates for the event, but adjusted to the event's timezone. 2011-01-13 Francis Lachapelle * iCalTimeZone.m (-computedDateForDate:): Was _computedDateTimeForDate. Adjusts a date with respect to this vTimeZone. * iCalDateTime.m (-dateTimes): when there's no timezone defined (which is the case when parsing a vTimeZone!), don't fallback to the system timezone. 2010-11-18 Wolfgang Sourdeau * NGVCard.m (-setVName, vName): removed useless and non-standard methods. 2010-11-08 Francis Lachapelle * NSString+NGCards.m (-vCardSubvaluesWithSeparator:): now returns an empty array when the string is empty, instead of an array with an empty string. 2010-10-28 Francis Lachapelle * iCalRecurrenceRule.m (-isInfinite): a repeat count set to 0 is no longer consider a limit (ie, isInfinite will be true). 2010-10-27 Wolfgang Sourdeau * NGVCard.m (-setCategories): make use of the new method below. (-categories): make use of value 0 and of the vCardSubvaluesWithSeparator: category method. * CardElement.m (-setCommaSeparatedValues): temporary helper for versit fields that are using the comma as value separator. 2010-10-26 Wolfgang Sourdeau * NGVCard.m (-setCategories, -categories): new accessors for the "CATEGORIES" vcard property. * NGVCardPhoto.m (-type): fixed the returning of the default type. * CardElement.m (-setValues:): new method. Actual renamed version of prior setValuesAsCopy:. 2010-10-18 Wolfgang Sourdeau * iCalTimeZone.m (-dateForDateTimeString:): adjust dates since they are passed as UTC and may not match the timezone's DST switches. A bit dirty but good for now... * iCalTimeZonePeriod.m (_occurenceForDate:byRRule:): we don't need to deduct the offset from UTC from the resulting date since "tzStart" is already relative to UTC. 2010-10-13 Francis Lachapelle * NSString+NGCards.m (-vCardSubvaluesWithSeparator): properly initialized the "escaped" bool. 2010-10-08 Wolfgang Sourdeau * iCalEvent.m (-setAllDayWithStartDate:duration:): added a work-around for bug 866, by adding one hour in addition to the offset in days from the start date. * NSString+NGCards.m (-unescapedFromCard): removed obsolete method. (-componentsWithSafeSeparator:): renamed to "vCardSubvaluesWithSeparator:" with proper unescaping of versit values by scanning each character one after another. 2010-09-28 Francis Lachapelle * NSString+NGCards.m (-asCalendarDate): added handling of date that includes dashes (YYYY-MM-DD). * iCalDateTime.m (-dateTimes): new method that handles EXDATE with multiple values. * iCalRepeatableEntityObject.m (-exceptionDates): add all values from each EXDATE attribute. * iCalRepeatableEntityObject.m (-exceptionDates): idem. 2010-08-30 Wolfgang Sourdeau * iCalPerson.m, iCalWeeklyRecurrenceCalculator.m: adapted classes to use "NSInteger" and "NSUInteger" instead of "int" and "unsigned int" for compatibility with versions of GNUstep base >= 1.20. 2010-08-24 Francis Lachapelle * CardElement.m (-setNamedValue:to:): don't add the value if nil and not already defined. 2010-08-19 Wolfgang Sourdeau * iCalAlarm.m (-setComment, -setSummary, -setAction) (-setAttendees): new accessors. 2010-08-13 Wolfgang Sourdeau * iCalAlarm.m (-nextAlarmDate): new utility method split from the SOGo quick table extractor for events. 2010-08-11 Wolfgang Sourdeau * NGVCardPhoto.m (-type): returns @"JPEG" if the type is unspecified. 2010-07-21 Wolfgang Sourdeau * iCalXMLRenderer.m (_appendPaddingValues:withTag:intoString:): fixed a typo causing a crash. 2010-07-16 Wolfgang Sourdeau * NGVCardPhoto.[hm]: new class module that implement facilities for handling "PHOTO" tags in vcards. 2010-06-08 Wolfgang Sourdeau * iCalXMLRenderer.m (-[CardGroup xmlRender]): don't append empty rendering from child elements to avoid an exception. 2010-06-04 Wolfgang Sourdeau * iCalXMLRenderer.m: new class module for exporting iCalCalendar objects as XML files. * iCalUTCOffset.m: new class module for handling of the "tzoffsetfrom" and "tzoffsetto" elements. 2010-05-05 Wolfgang Sourdeau * iCalPerson.m (-setParticipationStatus:, -participationStatus): added handling of the new partstat value "iCalPersonPartStatUndefined". * iCalEntityObject.m (-resources): removed useless method. (-nonParticipants): new method returning ATTENDEE objects having their ROLE attribute set to "NON-PARTICIPANT". (-isAttendee:): new method. (-findAttendeeWithEmail): new method replacing "findParticipantWithEmail:". 2010-04-28 Wolfgang Sourdeau * iCalRecurrenceRule.m (-iCalRepresentationForWeekDay:): made method "public" in the header file. 2010-04-22 Francis Lachapelle * iCalYearlyRecurrenceCalculator.m (-recurrenceRangesWithinCalendarDateRange:): the rule interval must be reset to 1 when using the monthly calculator since the interval is related to the yearly frequency. Also fixed the month counter with respect to the recurrence interval. * iCalWeeklyRecurrenceCalculator.m (-recurrenceRangesWithinCalendarDateRange:): fixed the computation of the week number which results in a bad verification of the interval. 2010-04-19 Francis Lachapelle * iCalByDayMask.[h|m]: new class that computes complex BYDAY constraints. * iCalRecurrenceRule.m (-byDayMask): new method that returns an instance of iCalByDayMask. (-byMonth): new method that returns an array with the values of the BYMONTH constraint. (-hasByMask): new method that returns true if the rule has at least one BYxxx mask defined. * iCalDailyRecurrenceCalculator.m (-recurrenceRangesWithinCalendarDateRange:): make use of the new iCalByDayMask class. (-lastInstanceStartDate): make use of the previous method when a BYxxx mask is defined in the rule. * iCalWeeklyRecurrenceCalculator.m (-recurrenceRangesWithinCalendarDateRange:): make use of the new iCalByDayMask class. (-lastInstanceStartDate): make use of the previous method when a BYxxx mask is defined in the rule. * iCalMonthlyRecurrenceCalculator.m (-recurrenceRangesWithinCalendarDateRange:): added support for BYMONTH, negative BYMONTHDAY, and BYDAY. (-lastInstanceStartDate): make use of the previous method when a BYxxx mask is defined in the rule. * iCalYearlyRecurrenceCalculator.m (-recurrenceRangesWithinCalendarDateRange:): added support for BYxxx constraints using the iCalMonthlyRecurrenceCalculator class. (-lastInstanceStartDate): make use of the previous method when a BYxxx mask is defined in the rule. * iCalTimeZonePeriod.m (-_occurenceForDate:byRRule:): make use of the new iCalByDayMask class. 2010-04-09 Wolfgang Sourdeau * iCalEvent.m (-propertyValue:): new method that accept a key-based method invocation. 2010-03-22 Wolfgang Sourdeau * iCalTimeZonePeriod.m (_occurenceForDate:byRRule:): fixed computing of timezone switch dates for periods starting at a "negative" day of the month. 2010-03-09 Wolfgang Sourdeau * iCalTimeZone.m (-periodForDate:): the order in which daylight and standard occur is not the same in the northern and southern hemisphere. We were thus choosing the wrong period for southern areas. * iCalTimeZonePeriod.m (_occurenceForDate:byRRule:): fixed computing of timezone switch dates, which were offset by one week too early. 2010-01-06 Wolfgang Sourdeau * iCalDateTime.m (-setTimeZone:): don't modify the date in case of an all-day value, otherwise the resulting date will be recomputed. 2009-10-19 Francis Lachapelle * iCalDateTime.m (-setTimeZone:): don't add the time in case of an all-day component. 2009-10-10 Wolfgang Sourdeau * CardElement.m (-copyWithZone:): we release the "tag" and the "group" copy to avoid a leak. (-mutableCopyWithZone): same as above. 2009-09-24 Wolfgang Sourdeau * NSArray+NGCards.m (-renderedForCards): insert the non-blank values at their correct positions by inserting empty strings. 2009-09-10 Francis Lachapelle * iCalPerson.m ([iCalPerson -_valueOfMailtoAttribute:]): fixed the string range that was removing valid characters from a quoted string. * NSString+NGCards.m ([NSString -rfc822Email]): new method that returns the string without the "mailto:" prefix. 2009-09-09 Cyril Robert * NGVCard.m: Made use of NSDictionary+Utilities' userRecordAsLDIFEntry. * NGVList.m: Made use of NSDictionary+Utilities' userRecordAsLDIFEntry. * NGVCard.m (ldifString): Moved to a category in SOGo * NGVList.m (ldifString): Moved to a category in SOGo 2009-09-02 Cyril Robert * NGVCard.m (ldifString): Added, to support exporting * NGVList.m (ldifString): Added, to support exporting 2009-08-27 Wolfgang Sourdeau * iCalPerson.m (-setDelegatedTo:, -setDelegatedFrom:) (-setSentBy:): new helper methods to set the corresponding attributes, properly formatted. The getters were added too. * iCalEntityObject.m (-removeFromAttendees:): new helper method to remove a specific attendee from the list. * NSArray+NGCards.m (-renderedForCards): empty values are not returned, so as to avoid rendering attributes that do not have a value. * CardVersitRenderer.m (-renderElement:): we avoid outputting attribute keys if no non-empty value has been returned. 2009-07-17 Cyril Robert * iCalPerson.m: Lowercased MAILTO to make it work with iCal. 2009-04-21 Francis Lachapelle * iCalTrigger.m ([iCalTrigger -setRelationType:]): new method to set the "related" attribute of an alarm trigger. * NSString+NGCards.m ([NSString -durationAsTimeInterval]): added support of negative durations. 2009-03-24 Wolfgang Sourdeau * iCalWeeklyRecurrenceCalculator.m ([iCalWeeklyRecurrenceCalculator -recurrenceRangesWithinCalendarDateRange:_r]): same as below. * iCalDailyRecurrenceCalculator.m ([iCalDailyRecurrenceCalculator -recurrenceRangesWithinCalendarDateRange:_r]): autorelease currentStartDate when instantiated from a copy of firDate, to avoid a leak. 2009-03-18 Francis Lachapelle * iCalDateTime.m ([iCalDateTime -dateTime]): when not defined, the timezone is now guessed from the date of the current object. 2009-02-06 Wolfgang Sourdeau * CardElement.m ([CardElement -setParent:aParent]): no longer retain the parent passed as parameter. 2008-12-10 Wolfgang Sourdeau * iCalYearlyRecurrenceCalculator.m ([iCalYearlyRecurrenceCalculator -lastInstanceStartDate]): same as below. * iCalMonthlyRecurrenceCalculator.m ([iCalMonthlyRecurrenceCalculator -lastInstanceStartDate]): same as below. * iCalWeeklyRecurrenceCalculator.m ([iCalWeeklyRecurrenceCalculator -lastInstanceStartDate]): same as below. * iCalDailyRecurrenceCalculator.m ([iCalDailyRecurrenceCalculator -lastInstanceStartDate]): return a date based on the start date, instead of julian calculations, to avoid losing the original date timezone. 2008-08-18 Ludovic Marcotte * NSString+NGCards.m ([NSString -unescapedFromCard]): added code to correctly escape carriage returns from Outlook clients. 2008-08-04 Wolfgang Sourdeau * CardGroup.m ([CardGroup -elementWithClass:groupClass]): replaces "groupWithClass:". * CardElement.m ([CardElement -deepCopyOfArray:oldArraywithZone:aZone]): new self-explaining method. ([CardElement -deepCopyOfDictionary:oldDictionarywithZone:aZone]): new self-explaining method. ([CardElement -copyWithZone:aZone]) ([CardElement -mutableCopyWithZone:aZone]): make a deep copy of the children elements. 2008-07-17 Wolfgang Sourdeau * iCalRepeatableEntityObject.m ([iCalRepeatableEntityObject -addToExceptionDates:_rdate]): the iCalDateTime argument was replaced with NSCalendarDate. * iCalEntityObject.m ([iCalEntityObject -setOrganizer:_organizer]): now accepts a nil argument. * CardGroup.m ([CardGroup -children]): now returns an NSMutableArray. ([CardGroup -copyWithZone:aZone]) ([CardGroup -mutableCopyWithZone:aZone]): the children were not properlty cloned, we thus clone them explicitly. 2008-07-16 Wolfgang Sourdeau * iCalDateTime.m ([iCalDateTime -setDate:dateTime]): don't set date in utc. 2008-07-14 Wolfgang Sourdeau * ICalDateHolder.m: removed class module. * NSCalendarDate+ICal.m ([NSCalendarDate +calendarDateWithICalRepresentation:]): removed method. * iCalRecurrenceCalculator.m: no longer use the calendarDateWithICalRepresentation: category method (removed), use NSString's asCalendarDate category method instead. * iCalRepeatableEntityObject.m ([iCalRepeatableEntityObject -classForTag:classTag]): instances of EXDATE are of iCalDateTime class. ([iCalRepeatableEntityObject -exceptionDates]): return the dates as utc-based date strings. 2008-07-11 Wolfgang Sourdeau * iCalEntityObject.m ([iCalEntityObject -setRecurrenceId:newRecId]) ([iCalEntityObject -recurrenceId]): new accessors to handle the "RECURRENCE-ID" fields in recurrence exceptions. 2008-07-07 Wolfgang Sourdeau * CardElement.m ([CardElement -addValue:aValue]) ([CardElement -addAttribute:anAttributevalue:aValue]) ([CardElement -removeValue:aValuefromAttribute:anAttribute]) ([CardElement -setValue:anIntto:aValue]) ([CardElement -setNamedValue:aValueNameto:aValue]) ([CardElement -setValue:anIntofAttribute:anAttributeto:aValue]): if aValue is nil, set it to an empty string. 2008-07-04 Wolfgang Sourdeau * CardGroup.m ([CardGroup +parseFromSource:source]): directly return the result from [sax cards] instead of creating a new array. 2008-07-03 Wolfgang Sourdeau * iCalEvent.m ([iCalEvent -endDate]): if no DTEND is specified, returns the end date based on the start date and take the duration into account if it is specified. 2008-06-30 Wolfgang Sourdeau * iCalFreeBusy.m ([iCalFreeBusy -fillStartDate:startDateandEndDate:endDate]): new method created to avoid enlarging the code. 2008-04-02 Wolfgang Sourdeau * iCalRecurrenceCalculator.m ([iCalRecurrenceCalculator +recurrenceRangesWithinCalendarDateRange:_rfirstInstanceCalendarDateRange:_firrecurrenceRules:_rRulesexceptionRules:_exRulesexceptionDates:_exDates]): when removing dates, the decremental count of dates to remove was actually incremental, which caused an out of bound reference exception. 2008-03-26 Wolfgang Sourdeau * iCalRecurrenceRule.m ([iCalRecurrenceRule -byMonthDay]): check whether the "bymonthday" value is empty and returns an array only if not, otherwise returns nil. * iCalRecurrenceCalculator.m ([iCalRecurrenceCalculator +recurrenceRangesWithinCalendarDateRange:_rfirstInstanceCalendarDateRange:_firrecurrenceRules:_rRulesexceptionRules:_exRulesexceptionDates:_exDates]): split method in many submethods for clarity. 2008-03-10 Wolfgang Sourdeau * iCalTimeZonePeriod.m ([iCalTimeZonePeriod -dayOfWeekFromRruleDay:day]): the algorithm would never work if the day was monday. After it was changed for sunday (see below), it would return 1 instead of 0. * iCalRecurrenceRule.m ([iCalRecurrenceRule -setByDayMask:_mask]): the first day of the week is always sunday, following Apple's documentation. 2008-03-03 Wolfgang Sourdeau * NGVCardReference.[hm]: new class module that implements the base data type contained in a VLIST element. * NGVList.[hm]: new class module that implements Thunderbird-style personal mailing lists. Base mime-type is "text/x-vlist". 2008-02-08 Wolfgang Sourdeau * iCalRecurrenceRule.m ([iCalRecurrenceRule -wkst]): if no wkst parameter is specified, we supply "MO" as default value. ([iCalRecurrenceRule -weekDayFromICalRepresentation:_day]): the second letter of sunday if "u", fixed typo. * CardElement.m ([CardElement -setNamedValue:aValueNameto:aValue]): if the value is empty, we removed the named value. 2008-01-28 Wolfgang Sourdeau * iCalRecurrenceRule.m ([iCalRecurrenceRule -weekDayFromICalRepresentation:_day]): issue an error whenever the day cannot be deduced. Accept days notated with a prefix. ([iCalRecurrenceRule -byDayMask]): don't strip the represented day, feed it directly to weekDayFromICalRepresentation: since it will do the correct syntax validation. * iCalDailyRecurrenceCalculator.m ([iCalDailyRecurrenceCalculator -recurrenceRangesWithinCalendarDateRange:]): make use of << instead of exp2 to compute the mask. 2008-01-22 Wolfgang Sourdeau * iCalRecurrenceRule.m ([iCalRecurrenceRule -repeatInterval]): return 1 if the parsed value is < 1. 2007-12-20 Wolfgang Sourdeau * NSString+NGCards.m ([NSString -componentsWithSafeSeparator:separator]): new method that separated the elements of a string into an array while avoiding escaped instances of the separator passed as parameter. 2007-12-12 Wolfgang Sourdeau * iCalTimeZone.m ([iCalTimeZone -periodForDate:date]): at least one timezone period is needed so we might need to fallback on the only one present if the other does not exist. 2007-11-29 Wolfgang Sourdeau * iCalDateTime.m ([iCalDateTime -timeZone]): log a message if the corresponding timezone isn't found. 2007-11-26 Wolfgang Sourdeau * iCalCalendar.m ([iCalCalendar -versitString]): same as below, with "2.0" as value. * NGVCard.m ([NGVCard -versitString]): overriden method by forcing version to "3.0" since it's the format we comply with. 2007-11-22 Wolfgang Sourdeau * iCalEntityObject.m ([iCalEntityObject -compare:otherObject]): safely compare between objects which may be nil. 2007-11-18 Wolfgang Sourdeau * iCalPerson.m ([-rsvp]): return lowercase string. * iCalCalendar.m ([iCalCalendar -setMethod:_value]): convert method to uppercase before setting value. * CardGroup.m ([CardGroup -addChild:aChild]): don't process nil values for aChild. ([CardGroup -setUniqueChild:aChild]): same as above. ([CardGroup -setChildrenAsCopy:someChildren]): reparent the copied children. ([CardGroup -mutableCopyWithZone:aZone]): implemented NSMutableCopying protocol. * CardElement.m ([CardElement -mutableCopyWithZone:aZone]): implemented NSMutableCopying protocol. 2007-11-12 Wolfgang Sourdeau * iCalTimeZonePeriod.m ([iCalTimeZonePeriod -occurenceForDate:refDate]): added support for timezone periods which do not contain a recurrence rule, such as the one provided by iCal. 2007-11-02 Wolfgang Sourdeau * iCalDateHolder.m ([iCalDateHolder -awakeAfterUsingSaxDecoder:]): make use of cStringUsingEncoding: instead of getString:length: to retrieve the buffer content to work-around a bug in gnustep-base. 2007-11-01 Wolfgang Sourdeau * CardGroup.m ([CardGroup +parseFromSource:source]): make sure the given source is not nil, otherwise the parser will raise an exception, which we don't want. 2007-10-29 Wolfgang Sourdeau * CardElement.m ([CardElement -value:anInt]): added handling for quoted-printable, base64 and 8bit encoding attributes. 2007-08-07 Wolfgang Sourdeau * iCalRecurrenceRule.m ([iCalRecurrenceRule -valueForFrequency:value]): returns NSNotFound whenever the frequency text has a length of 0. ([iCalRecurrenceRule -byDayMask]): return an empty mask whenever the "byday" value has a length of 0. 2007-02-12 Helge Hess * iCalMonthlyRecurrenceCalculator.m: fixed byday calculation for days which overflow the number of days in a month. Should fix OGo bug #1829. (v4.7.79) 2007-07-10 Wolfgang Sourdeau * iCalToDo.m ([iCalToDo -setDue:newDueDate]): use setDateTime: instead of setDate: because the latter sets an "all day" timestamp. 2007-07-03 Wolfgang Sourdeau * iCalRecurrenceRule.m ([iCalRecurrenceRule +recurrenceRuleWithICalRepresentation:_iCalRep]): the representation is generally a series of values separated by a ";". Therefore we need to split those values and feed them one by one. ([iCalRecurrenceRule -weekDayFromICalRepresentation:_day]): return -1 instead of raising an exception if the week day could not be recognized. * CardElement.m ([CardElement -versitString]): remove the ending "\r\n". 2007-06-12 Wolfgang Sourdeau * iCalDateTime.m ([iCalDateTime -_setDateTime:dateTimeforAllDayEntity:forAllDayEntity]): take the forAllDayEntity parameter into account when the date entity has a timezone. * iCalTimeZone.m ([iCalTimeZone -dateStringForDate:date]): new method that returns dates formatted for all day events. 2007-06-07 Wolfgang Sourdeau * iCalDateTime.m ([iCalDateTime -_setDateTime:dateTimeforAllDayEntity:forAllDayEntity]): inverted the all day logic because all day dates where generated for regular dates and the other way around... * iCalEvent.m ([iCalEvent -setAllDayWithStartDate:newStartDateduration:days]): new method that sets the start and end dates in an all day fashion. ([iCalEvent -setEndDate:newEndDate]): no longer use the methods provided by the removed module CardGroup+iCal. ([-isAllDay]): reimplemented method by testing if the start day component is an all day date. * iCalEntityObject.m ([iCalEntityObject -setCreated:newCreated]) ([iCalEntityObject -created], [-setLastModified:_value]) ([iCalEntityObject -lastModified]) ([iCalEntityObject -setTimeStampAsDate:newTimeStamp]) ([iCalEntityObject -timeStampAsDate], [-setStartDate:_value]) ([iCalEntityObject -startDate]): no longer use the methods provided by the removed module CardGroup+iCal. * iCalDateTime.m ([iCalDateTime -setDate:dateTime]): take the date passed as parameter as an all day date. ([iCalDateTime -isAllDay]): new method determining whether the current value is an all day value. * NSString+NGCards.m ([NSString -isAllDayDate]): new method that determines whether the date represented in "self" is an all day date (date only) or not (date + time). * CardElement.h: moved IS_EQUAL macro from removed module "common.h". * CardGroup+iCal.[hm]: removed category module. 2007-04-27 Wolfgang Sourdeau * NGVCard.m ([NGVCard -n]): simplified method by returning the values of the element returned by uniqueChildWithTag:. 2007-03-07 Wolfgang Sourdeau * iCalEntityObject.m ([iCalEntityObject -symbolicAccessClass]): new method that parses the "CLASS" element of the card and returns an enum value. * NSString+NGCards.m ([NSString -foldedForVersitCards]): simplified method by initializing and returning folderString unconditionnally. If length < 76, the original string is appended to it. * CardGroup.m ([CardGroup +groupWithTag:aTag]): simply invoke [self elementWithTag:]. ([CardGroup +groupWithTag:aTagchildren:someChildren]): same as above. 2007-03-05 Wolfgang Sourdeau * iCalEntityObject.h (enum): added an enum with iCalAccessPublic, iCalAccessPrivate and iCalAccessConfidential values. 2007-02-15 Wolfgang Sourdeau * CardGroup.m ([CardGroup -firstChildWithTag:aTag]): new method. 2007-02-09 Wolfgang Sourdeau * CardGroup.m ([CardGroup +cardParser]): find the correct parser by requesting a parser by name instead of by mime-type. This way, any parser which would declare the same types would not enter in conflict. 2007-02-08 Wolfgang Sourdeau * CardElement.m ([CardElement -namedValue:aValueName]): use NSString's rangeOfString instead of indexOfString for compatibility with GNUstep. 2007-02-02 Wolfgang Sourdeau * NGVCard.m ([NGVCard -classForTag:classTag]): declare an entry for "FBURL". 2006-08-03 Helge Hess * NGVCardSaxHandler.m: fixed a bug with returning parsing results. Properly make a copy of the vCard array so that -clear doesn't destroy references. Thanks go to Wolfgang Sourdeau for documenting the issue! (v4.5.76) 2006-07-04 Helge Hess * use %p for pointer formats, fixed gcc 4.1 warnings (v4.5.75) 2006-05-16 Marcus Mueller * iCalDataSource.h, common.h: changed EOControl related includes into imports to enable compilation against MulleEOF (v4.5.74) 2006-04-07 Marcus Mueller * iCalEntityObject.h: added missing forward declaration for gstep-base compile (v4.5.73) 2006-04-06 Marcus Mueller * v4.5.72 * iCalEntityObject.[hm]: added "url" property - unfortunately this was missing before. Increased class version to "1". * iCalRepeatableEntityObject.m, iCalEvent.m, iCalToDo.m: adjusted super class version check. 2006-01-16 Helge Hess * iCalRecurrenceRule.m: properly include NSString+Ext.h to avoid a warning during Cocoa compilation (v4.5.71) 2005-11-17 Helge Hess * include string.h where required (v4.5.70) 2005-10-05 Helge Hess * iCalMonthlyRecurrenceCalculator.m: implemented calculation of negative byday occurrences (eg -1TH) (v4.5.69) 2005-09-22 Helge Hess * iCalRecurrenceRule.m: added direct parser support for 'interval', allow 'until' values w/o Z marker for date-only values (v4.5.68) 2005-09-22 Helge Hess * v4.5.67 * iCalMonthlyRecurrenceCalculator.m: finished 'byday' calculation * iCalRecurrenceRule.m: added support for 'bymonthday', fixed handling of occurrence1 2005-09-21 Helge Hess * v4.5.66 * iCalRecurrenceRule.m: temporarily expose byDayOccurence1 until the API is fixed * iCalMonthlyRecurrenceCalculator.m: prepared for byday/bymonthday rule specs * v4.5.65 * iCalMonthlyRecurrenceCalculator.m: fixed calculation of 'count' field * iCalRecurrenceCalculator.m: minor code cleanups * iCalRecurrenceRule.m: improved rrule parser 2005-09-20 Helge Hess * iCalMonthlyRecurrenceCalculator.m: stop calculation if a byday part was detected in the rule (v4.5.64) * iCalRecurrenceCalculator.m: moved cluster subclasses to own source files (v4.5.63) * iCalRecurrenceRule.m: added some parsing/gen support for BYDAY (v4.5.62) 2005-09-19 Helge Hess * iCalRecurrenceRule.m: minor code improvements, more tolerant on invalid iCal rrule input (v4.5.61) 2005-08-16 Helge Hess * GNUmakefile, GNUmakefile.preamble: added OSX framework compilation (v4.5.60) 2005-08-06 Helge Hess * iCalCalendar.m, NGVCardName.m: fixed gcc 4.0 warnings (v4.5.59) 2005-08-05 Helge Hess * NGVCardSaxHandler.h: fixed a gcc 4.0 warning (v4.5.58) 2005-07-18 Helge Hess * iCalPerson.m: added -partStatWithDefault method to retrieve the partstat and return NEEDS-ACTION in case none is set (v4.5.57) 2005-07-15 Marcus Mueller * iCalObject.[hm], iCalEntityObject.m, iCalToDo.m, iCalAlarm.m, iCalPerson.m, iCalCalendar.m, iCalEvent.m, iCalTrigger.m, iCalObject.m, iCalFreeBusy.m, iCalRepeatableEntityObject.m: fixed NSCopying (v4.5.56) 2005-07-15 Helge Hess * added fragile base class version checks (v4.5.55) 2005-07-15 Marcus Mueller * iCalObject.[hm], iCalEntityObject.m, iCalToDo.m, iCalAlarm.m, iCalPerson.m, iCalCalendar.m, iCalEvent.m, iCalTrigger.m, iCalObject.m, iCalFreeBusy.m, iCalRepeatableEntityObject.m: added NSCopying (v4.5.54) 2005-07-15 Helge Hess * v4.5.53 * iCalCalendar.m: added +parseCalendarFromSource: convenience method * NGVCard.m: properly reset sax driver after parsing 2005-07-15 Marcus Mueller * iCalEntityObject.[hm]: added -increaseSequence (v4.5.52) * iCalPerson.m: fixed -hasSameEmailAddress: to lowercase email addresses before attempting comparison (v4.5.51) 2005-07-15 Helge Hess * v4.5.50 * NGiCal.xmap: fixed mapping of 'method' property (is an attribute of the calendar) * iCalCalendar.m: use ASSIGNCOPY in accessors, added 'method' to -description 2005-07-14 Marcus Mueller * v4.5.49 * iCalCalendar.[hm]: added 'method' * iCalEntityObject.[hm]: added 'userComment', changed all email related comparisons to lowercase all strings before comparison * iCalEvent.h: pretty printed iVars * NGiCal.xmap: added mapping for 'comment' -> 'userComment' and 'method' -> 'method' 2005-07-13 Helge Hess * v4.5.48 * NGVCard.m: added some convenience methods to access the preferred email, tel and adr * NGVCardOrg.m: added a convenience method to access the first orgunit 2005-07-05 Marcus Mueller * NSCalendarDate+ICal.m: fixed 'gmtcalfmt' which removed seconds from format for no obvious reason (v4.5.47) 2005-05-31 Helge Hess * NGVCardSaxHandler.m: ensure that types are always uppercase, improved check for DUPs (v4.5.46) 2005-05-16 Marcus Mueller * NGiCal.xcode: reorganized ordering of headers/classes 2005-05-15 Marcus Mueller * NGiCal.xcode: added vCard related stuff 2005-05-10 Helge Hess * NGVCard.m: added support for profile, source, name (v4.5.45) 2005-05-09 Helge Hess * first version of working vCard SAX handler (v4.5.54) 2005-05-08 Helge Hess * more work on vCard parsing (v4.5.53) * work on vCard objects (incomplete) (v4.5.52) 2005-04-25 Helge Hess * iCalDateHolder.m, iCalDataSource.m: fixed gcc 4.0 warnings (v4.5.51) 2005-03-23 Marcus Mueller * v4.5.50 * iCalRenderer.h: added missing paranthesis for iVar declarations * iCalTrigger.m, iCalEntityObject.m, iCalToDo.m, iCalRecurrenceCalculator.m, iCalDateHolder.m, iCalDataSource.m, iCalPerson.m, iCalCalendar.m: numerous dealloc bugs/leaks fixed 2005-03-02 Marcus Mueller * iCalRecurrenceCalculator.m: bugfix for monthly and yearly recurrences (v4.5.49) * iCalRecurrenceCalculator.m: optimized exception date handling in complex calculation method quite a bit. Fixed bugs in all calculation methods by introducing checks on the desired range. (v4.5.48) 2005-02-28 Marcus Mueller * v4.5.47 * iCalRepeatableEntityObject.m: shifted code to iCalRecurrenceCalculator * iCalRecurrenceCalculator.[hm]: new class method to calculate complex recurrences. In SOGo this information is stored in quick fields to reduce the complexity of lookups, hence we need to offer a proper API to calculate date ranges from this information. Fixed all calculations to explicitly set timeZone for all newly created startDates - it seems the timeZone information is not properly retained by the hour:minute:second: method from NGExtensions which lead to improper DST related shifts. * iCalDateHolder.h: exposed the API * NSCalendarDate+ICal.[hm]: new convenience constructor for calendar dates from iCal representations (uses iCalDateHolder internally) * iCalRecurrenceRule.m: changed setUntil: to utilize new public NSCalendarDate+ICal category * NGiCal.h: added NSCalendarDate+ICal.h to the public headers * GNUmakefile: NSCalendarDate+ICal.h is public now 2005-02-20 Helge Hess * NGiCal.xmap: fixed a missing semicolon (did not load on MacOSX) (v.4.5.46) 2005-02-17 Helge Hess * GNUmakefile.preamble: fixed linking locations for dependencies (v4.5.45) 2005-02-17 Marcus Mueller * v4.5.44 * iCalEntityObject.[hm]: added convenience API * iCalRepeatableEntityObject.[hm]: added convenience API * iCalRecurrenceRule.m: bugfixes in -byDayList and -iCalRepresentationForWeekDay: * iCalRecurrenceCalculator.m: implemented 'BYDAY' calculations for weekly frequency. Note that 'COUNT' is still broken for this case. * iCalRenderer.m: updated rendering, now can render recurrence rules and accompanied stuff properly. 2005-02-15 Marcus Mueller * v4.5.43 * iCalRecurrenceRule.[hm]: exposed some more of the API * iCalRecurrenceCalculator.m: some bugfixes. Split the code and gave iCalWeeklyRecurrenceCalculator its own calculation - there are a number of foreseeable differences to daily calculation that make this necessary in the near future anyways. * v4.5.42 * iCalRepeatableEntityObject.[hm]: added ability to properly calculate the recurrence ranges within a specific calendar date range, taking all possible exceptions into account. * iCalEvent.[hm]: convenience wrapper for the new method found in iCalRepeatableEntityObject. 2005-02-14 Helge Hess * v4.5.41 * GNUmakefile.preamble: added missing dependency on libNGExtensions (which also adds the dependency on libDOM) * iCalRecurrenceCalculator.h: fixed missing forward declaration in header 2005-02-12 Marcus Mueller * v4.5.40 * iCalRecurrenceCalculator.[hm]: implemented all required (and simple) calculations. Added some convenience API to query some of the more obvious ranges suitable as limits for fetching/comparison. * iCalRepeatableEntityObject.[hm]: new method for calculating the last possible recurrence start date. This can be used for fetches as well. * iCalEvent.[hm]: more convenient wrapper for the new method found in iCalRepeatableEntityObject. * NSCalendarDate+ICal.[hm]: convenience methods for calculating "distances" between dates. * tests/*: updated 2005-02-11 Marcus Mueller * v4.5.39 * README: updated * iCalRepeatableEntityObject.[hm]: new base class for all other repeatable entity objects. Offers a convenience API for generating recurrence ranges and tests, taking all exceptions into account. * iCalRecurrenceRule.[hm]: an iCal recurrence rule, modeled as closely as possible to RFC2445. Please note that this is work in progress and far from being complete, yet. * iCalRecurrenceCalculator.[hm]: a controller implementing RFC2445 to properly generate recurrence ranges and accompanied functionality. * iCalEvent.[hm], iCalToDo.[hm]: now subclasses from iCalRepeatableEntityObject, thus removed code dealing with recurrences * NGiCal.h: added new headers * NGiCal.xmap: changed recurrenceRule mappings due to model change * tests/*: contains unit tests for stuff dealing with recurrences. See accompanied README for details 2004-12-17 Marcus Mueller * iCalPerson.[hm]: formalized participationStatus according to RFC2445. Provided convenience API to set status without concrete knowledge of string values involved. (v4.5.38) 2004-12-16 Marcus Mueller * v4.5.37 * iCalEvent.[hm]: Added transparency 'TRANSP'. Also multiple convenience methods provided. * NGiCal.xmap: added proper mapping for 'transp'. 2004-12-14 Marcus Mueller * NGiCal.xcode: minor changes and updated 2004-12-13 Marcus Mueller * iCalPerson.[hm]: added -cnWithoutQuotes and -rfc822Email convenience methods to simplify client code dealing with these properties (v4.5.36) 2004-11-07 Marcus Mueller * NGiCal.xcode: provide SOPE_{MAJOR,MINOR}_VERSION to the build 2004-11-06 Helge Hess * iCalRenderer.m: use SOPE version defines for iCalendar product id (v4.5.35) 2004-11-04 Helge Hess * use Version file for install directory location of sax mapping 2004-10-31 Marcus Mueller * iCalAlarm.[hm], iCalEvent.[hm], iCalToDo.[hm], NGiCal.xmap: added recurrenceRule (v4.3.34) 2004-10-20 Marcus Mueller * NGiCal.xcode: added iCalRenderer.[hm], bumped framework version 2004-10-20 Helge Hess * iCalRenderer.m: fixed some issue with Cocoa Foundation (v4.3.33) * v4.3.32 * iCalEvent.m: added -vEvent method to produce an iCalendar representation of an event * added iCalRenderer class based on the SOGo render by ZNeK 2004-10-14 Marcus Mueller * NGiCal.xmap: added "categories" mapping (v4.3.31) 2004-10-05 Marcus Mueller * iCalEntityObject.[hm]: added categories property (v4.3.30) 2004-09-22 Marcus Mueller * NGiCal.xcode: fixed several build parameters 2004-09-01 Marcus Mueller * v4.3.29 * iCalEventChanges.[hm]: new class for tracking changes between two given events * iCalEvent.[hm]: new API to generate iCalEventChanges objects. * common.h: inline function and macro for "safe" comparison of object values 2004-09-01 Helge Hess * GNUmakefile.postamble: copy sax-model to FHS_INSTALL_ROOT + /share/sope-4.3/saxmappings/ when compiling for FHS (v4.3.28) 2004-08-29 Helge Hess * added hack to install the project in FHS locations - the library, its headers, the tools and the resources will be installed in FHS_INSTALL_ROOT if specified (eg make FHS_INSTALL_ROOT=/usr/local) (v4.3.27) 2004-08-26 Marcus Mueller * NGiCal.xcode: new Xcode project 2004-08-20 Helge Hess * fixed for SOPE 3.3 directory layout (v4.3.26) * moved to sope-ical * moved to SOPE 4.3 (v4.3.25) 2004-08-14 Helge Hess * iCalEntityObject.m: changed "sequence" attribute from NSString to NSNumber (this might break some code, though some care was taken to accept NSString parameters) (v4.2.24) 2004-07-14 Helge Hess * iCalEvent.h: moved 'status' field to iCalEntityObject, because it is also available in todo objects (v4.2.23) 2004-06-30 Marcus Mueller * iCalEntityObject.m: added -removeAllAttendees and -removeAllAlarms. These are necessary in case you want to remake the contents of these collections, but keep all other attributes otherwise. (v4.2.22) 2004-06-09 Helge Hess * v4.2.21 * GNUmakefile.preamble: added prebinding * GNUmakefile: create GNUmakefile.preamble, GNUmakefile.postamble 2004-05-05 Marcus Mueller * GNUmakefile: added support for building with GNUSTEP_BUILD_DIR environment variable set for recent gnustep-make package. (v4.2.20) 2004-01-23 Helge Hess * iCalDataSource.m: added some sanity checks, improved to work better with Mozilla generated iCal files (v4.2.19) 2003-12-22 Helge Hess * iCalDateHolder.m: small fix not to print a warning for "YYYYMMDD" style dates (which are supported) (v4.2.18) 2003-12-21 Helge Hess * v4.2.17 * iCalEvent.m: added parsing of duration values and calculation of end-dates based on that (eg required for Panther iCal.app) * iCalEvent.m: added support for 'status' and 'duration' fields Thu Nov 20 16:31:15 2003 Martin Hoerning * iCalDateHolder.m: added timeless date format: YYYYMMDD (solves ogo bug 424) (v4.2.16) Wed Oct 29 22:04:32 2003 Martin Hoerning * iCalDateHolder.m, iCalObject.[m|h]: added iCalDefaultTimeZone to create date from iCalDates without timeZone. (solves OGoo bug 257) (v4.2.15) 2003-10-12 Helge Hess * GNUmakefile (libNGiCal_LIBRARIES_DEPEND_UPON): link against libSaxObjC on MacOSX (v4.2.14) Fri Jul 18 17:04:55 2003 Martin Hoerning * iCalToDo.h, iCalPerson.h, iCalEvent.h, iCalEntityObject.h: added accessor-methods to interface (v4.2.13) 2003-07-18 Helge Hess * iCalDateHolder.m: replaces and indexOfString with rangeOfString, thanks to Filip Van Raemdonck for pointing that out (v4.2.12) 2003-03-21 Helge Hess * added some method prototypes 2003-03-13 Helge Hess * moved iCalEntityObject to a separate file (v4.2.11) Mon Mar 10 18:41:10 2003 Bjoern Stierand * NGiCal.xmap: added missing attendee attributes (as dictated by mh on the phone) 2003-03-10 Helge Hess * iCalPerson.h: added some method prototypes 2003-02-24 Helge Hess * iCalObject.h: added some accessors (v4.2.10) 2003-02-12 Helge Hess * moved to skyrix-core (v4.2.9) 2003-01-13 Helge Hess * added some support for timezones to be able to parse Evolution apt creation requests (v4.2.7) 2002-10-14 Helge Hess * added iCalDateHolder for decoding xCal date values with timezone attributes to a NSCalendarDate * iCalObject.m: ignore X- keys * removed all the old stuff (v4.2.4) * ICalVEvent.m: renamed -class to -eventClass since -class conflicts with the NSObject method * started XML based iCal (v4.2.3) 2002-10-10 Helge Hess * ICalParser.m: small cleanups (v4.2.2) 2002-10-04 Helge Hess * created ChangeLog, created NGiCal library into SkyCore