summaryrefslogtreecommitdiffabout
path: root/libkcal
Unidiff
Diffstat (limited to 'libkcal') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/event.cpp1
-rw-r--r--libkcal/icalformatimpl.cpp24
-rw-r--r--libkcal/incidence.cpp63
-rw-r--r--libkcal/incidence.h5
-rw-r--r--libkcal/kincidenceformatter.cpp4
-rw-r--r--libkcal/vcalformat.cpp4
-rw-r--r--libkcal/vcalformat.h2
7 files changed, 67 insertions, 36 deletions
diff --git a/libkcal/event.cpp b/libkcal/event.cpp
index ad66639..0766fd9 100644
--- a/libkcal/event.cpp
+++ b/libkcal/event.cpp
@@ -175,2 +175,3 @@ bool Event::matchTime(QDateTime*startDT, QDateTime* endDT)
175{ 175{
176 if ( cancelled() ) return false;
176 if ( ! doesRecur() ) { 177 if ( ! doesRecur() ) {
diff --git a/libkcal/icalformatimpl.cpp b/libkcal/icalformatimpl.cpp
index 4794bc9..f349681 100644
--- a/libkcal/icalformatimpl.cpp
+++ b/libkcal/icalformatimpl.cpp
@@ -374,14 +374,11 @@ void ICalFormatImpl::writeIncidence(icalcomponent *parent,Incidence *incidence)
374 // recurrence rule stuff 374 // recurrence rule stuff
375 Recurrence *recur = incidence->recurrence(); 375 if (incidence->doesRecur()) {
376 if (recur->doesRecur()) { 376 icalcomponent_add_property(parent,writeRecurrenceRule(incidence->recurrence()));
377 377 // recurrence excpetion dates
378 icalcomponent_add_property(parent,writeRecurrenceRule(recur)); 378 DateList dateList = incidence->exDates();
379 } 379 DateList::ConstIterator exIt;
380 380 for(exIt = dateList.begin(); exIt != dateList.end(); ++exIt) {
381 // recurrence excpetion dates 381 icalcomponent_add_property(parent,icalproperty_new_exdate(
382 DateList dateList = incidence->exDates(); 382 writeICalDate(*exIt)));
383 DateList::ConstIterator exIt; 383 }
384 for(exIt = dateList.begin(); exIt != dateList.end(); ++exIt) {
385 icalcomponent_add_property(parent,icalproperty_new_exdate(
386 writeICalDate(*exIt)));
387 } 384 }
@@ -1297,3 +1294,4 @@ void ICalFormatImpl::readIncidence(icalcomponent *parent,Incidence *incidence)
1297 // Cancel backwards compatibility mode for subsequent changes by the application 1294 // Cancel backwards compatibility mode for subsequent changes by the application
1298 incidence->recurrence()->setCompatVersion(); 1295 if ( readrec )
1296 incidence->recurrence()->setCompatVersion();
1299 1297
diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp
index e4bcc5e..4643a3a 100644
--- a/libkcal/incidence.cpp
+++ b/libkcal/incidence.cpp
@@ -35,3 +35,3 @@ Incidence::Incidence() :
35{ 35{
36 mRecurrence = new Recurrence(this); 36 mRecurrence = 0;//new Recurrence(this);
37 mCancelled = false; 37 mCancelled = false;
@@ -80,3 +80,6 @@ Incidence::Incidence( const Incidence &i ) : IncidenceBase( i )
80 mRecurrenceID = i.mRecurrenceID; 80 mRecurrenceID = i.mRecurrenceID;
81 mRecurrence = new Recurrence( *(i.mRecurrence), this ); 81 if ( i.mRecurrence )
82 mRecurrence = new Recurrence( *(i.mRecurrence), this );
83 else
84 mRecurrence = 0;
82 mHoliday = i.mHoliday ; 85 mHoliday = i.mHoliday ;
@@ -95,3 +98,4 @@ Incidence::~Incidence()
95 if (relatedTo()) relatedTo()->removeRelation(this); 98 if (relatedTo()) relatedTo()->removeRelation(this);
96 delete mRecurrence; 99 if ( mRecurrence )
100 delete mRecurrence;
97 101
@@ -210,6 +214,20 @@ bool KCal::operator==( const Incidence& i1, const Incidence& i2 )
210 } 214 }
211 if (!( *i1.recurrence() == *i2.recurrence()) ) { 215 if ( i1.mRecurrence != 0 && i2.mRecurrence != 0 ) {
212 qDebug("recurrence is NOT equal "); 216 if (!( *i1.mRecurrence == *i2.mRecurrence) ) {
213 return false; 217 //qDebug("recurrence is NOT equal ");
218 return false;
219 }
220 } else {
221 // one ( or both ) recurrence is 0
222 if ( i1.mRecurrence == 0 ) {
223 if ( i2.mRecurrence != 0 && i2.mRecurrence->doesRecur() != Recurrence::rNone )
224 return false;
225 } else {
226 // i1.mRecurrence != 0
227 // i2.mRecurrence == 0
228 if ( i1.mRecurrence->doesRecur() != Recurrence::rNone )
229 return false;
230 }
214 } 231 }
232
215 return 233 return
@@ -281,3 +299,4 @@ void Incidence::setReadOnly( bool readOnly )
281 IncidenceBase::setReadOnly( readOnly ); 299 IncidenceBase::setReadOnly( readOnly );
282 recurrence()->setRecurReadOnly( readOnly); 300 if ( mRecurrence )
301 mRecurrence->setRecurReadOnly( readOnly);
283} 302}
@@ -332,3 +351,5 @@ void Incidence::setDtStart(const QDateTime &dtStart)
332 QDateTime dt = getEvenTime(dtStart); 351 QDateTime dt = getEvenTime(dtStart);
333 recurrence()->setRecurStart( dt); 352
353 if ( mRecurrence )
354 mRecurrence->setRecurStart( dt);
334 IncidenceBase::setDtStart( dt ); 355 IncidenceBase::setDtStart( dt );
@@ -506,3 +527,3 @@ bool Incidence::recursOn(const QDate &qd) const
506{ 527{
507 if (recurrence()->recursOnPure(qd) && !isException(qd)) return true; 528 if (mRecurrence && mRecurrence->recursOnPure(qd) && !isException(qd)) return true;
508 else return false; 529 else return false;
@@ -514,3 +535,2 @@ void Incidence::setExDates(const DateList &exDates)
514 mExDates = exDates; 535 mExDates = exDates;
515
516 recurrence()->setRecurExDatesCount(mExDates.count()); 536 recurrence()->setRecurExDatesCount(mExDates.count());
@@ -700,5 +720,10 @@ bool Incidence::isAlarmEnabled() const
700} 720}
701 721#include <stdlib.h>
702Recurrence *Incidence::recurrence() const 722Recurrence *Incidence::recurrence()
703{ 723{
724 if ( ! mRecurrence ) {
725 mRecurrence = new Recurrence(this);
726 qDebug("creating new recurence ");
727 //abort();
728 }
704 return mRecurrence; 729 return mRecurrence;
@@ -707,4 +732,5 @@ void Incidence::setRecurrence( Recurrence * r)
707{ 732{
708 delete mRecurrence; 733 if ( mRecurrence )
709 mRecurrence = r; 734 delete mRecurrence;
735 mRecurrence = r;
710} 736}
@@ -722,2 +748,7 @@ QString Incidence::location() const
722} 748}
749QString Incidence::recurrenceText() const
750{
751 if ( mRecurrence ) return mRecurrence->recurrenceText();
752 return i18n("No");
753}
723 754
@@ -735,3 +766,3 @@ QDateTime Incidence::getNextOccurence( const QDateTime& dt, bool* ok ) const
735 bool last; 766 bool last;
736 recurrence()->getPreviousDateTime( incidenceStart , &last ); 767 mRecurrence->getPreviousDateTime( incidenceStart , &last );
737 int count = 0; 768 int count = 0;
@@ -740,3 +771,3 @@ QDateTime Incidence::getNextOccurence( const QDateTime& dt, bool* ok ) const
740 ++count; 771 ++count;
741 incidenceStart = recurrence()->getNextDateTime( incidenceStart, &last ); 772 incidenceStart = mRecurrence->getNextDateTime( incidenceStart, &last );
742 if ( recursOn( incidenceStart.date() ) ) { 773 if ( recursOn( incidenceStart.date() ) ) {
diff --git a/libkcal/incidence.h b/libkcal/incidence.h
index d4af9f0..8519f01 100644
--- a/libkcal/incidence.h
+++ b/libkcal/incidence.h
@@ -251,3 +251,3 @@ class Incidence : public IncidenceBase
251 */ 251 */
252 Recurrence *recurrence() const; 252 Recurrence *recurrence();
253 void setRecurrence(Recurrence * r); 253 void setRecurrence(Recurrence * r);
@@ -280,2 +280,3 @@ class Incidence : public IncidenceBase
280 QDateTime lastModifiedSub(); 280 QDateTime lastModifiedSub();
281 QString recurrenceText() const;
281 void setLastModifiedSubInvalid(); 282 void setLastModifiedSubInvalid();
@@ -283,2 +284,3 @@ class Incidence : public IncidenceBase
283 284
285 Recurrence *mRecurrence;
284protected: 286protected:
@@ -311,3 +313,2 @@ protected:
311 //QPtrList<Alarm> mAlarms; 313 //QPtrList<Alarm> mAlarms;
312 Recurrence *mRecurrence;
313 314
diff --git a/libkcal/kincidenceformatter.cpp b/libkcal/kincidenceformatter.cpp
index 9359fad..f8f40f1 100644
--- a/libkcal/kincidenceformatter.cpp
+++ b/libkcal/kincidenceformatter.cpp
@@ -107,3 +107,3 @@ void KIncidenceFormatter::setEvent(Event *event)
107 107
108 if (event->recurrence()->doesRecur()) { 108 if (event->doesRecur()) {
109 109
@@ -218,3 +218,3 @@ void KIncidenceFormatter::setTodo(Todo *event )
218 218
219 if (event->recurrence()->doesRecur()) { 219 if (event->doesRecur()) {
220 220
diff --git a/libkcal/vcalformat.cpp b/libkcal/vcalformat.cpp
index 8efc1ea..2e19740 100644
--- a/libkcal/vcalformat.cpp
+++ b/libkcal/vcalformat.cpp
@@ -394,3 +394,3 @@ VObject *VCalFormat::eventToVTodo(const Todo *anEvent)
394 394
395VObject* VCalFormat::eventToVEvent(const Event *anEvent) 395VObject* VCalFormat::eventToVEvent(Event *anEvent)
396{ 396{
@@ -461,3 +461,3 @@ VObject* VCalFormat::eventToVEvent(const Event *anEvent)
461 // recurrence rule stuff 461 // recurrence rule stuff
462 if (anEvent->recurrence()->doesRecur()) { 462 if (anEvent->doesRecur()) {
463 // some more variables 463 // some more variables
diff --git a/libkcal/vcalformat.h b/libkcal/vcalformat.h
index c7df017..6dae3d2 100644
--- a/libkcal/vcalformat.h
+++ b/libkcal/vcalformat.h
@@ -76,3 +76,3 @@ class VCalFormat : public CalFormat {
76 /** translate a Event into a VObject and returns a pointer to it. */ 76 /** translate a Event into a VObject and returns a pointer to it. */
77 VObject* eventToVEvent(const Event *anEvent); 77 VObject* eventToVEvent(Event *anEvent);
78 78