-rw-r--r-- | library/datebookdb.cpp | 25 | ||||
-rw-r--r-- | library/datebookdb.h | 3 |
2 files changed, 27 insertions, 1 deletions
diff --git a/library/datebookdb.cpp b/library/datebookdb.cpp index bf7fd94..da5a797 100644 --- a/library/datebookdb.cpp +++ b/library/datebookdb.cpp @@ -456,16 +456,19 @@ QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDate &from, QValueList<EffectiveEvent> tmpList; QValueListIterator<Event> it; EffectiveEvent effEv; QDateTime dtTmp, dtEnd; for (it = eventList.begin(); it != eventList.end(); ++it ) { + if (!(*it).isValidUid()) + (*it).assignUid(); // FIXME: Hack to restore cleared uids + dtTmp = (*it).start(TRUE); dtEnd = (*it).end(TRUE); if ( dtTmp.date() >= from && dtTmp.date() <= to ) { Event tmpEv = *it; effEv.setEvent(tmpEv); effEv.setDate( dtTmp.date() ); effEv.setStart( dtTmp.time() ); @@ -498,16 +501,18 @@ QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDate &from, } dt = dt.addDays( 1 ); } } } // check for repeating events... QDateTime repeat; for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) { + if (!(*it).isValidUid()) + (*it).assignUid(); // FIXME: Hack to restore cleared uids /* create a false end date, to short circuit on hard MonthlyDay recurences */ Event dummy_event = *it; int duration = (*it).start().date().daysTo( (*it).end().date() ); QDate itDate = from.addDays(-duration); Event::RepeatPattern r = dummy_event.repeatPattern(); @@ -577,16 +582,29 @@ QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDateTime &dt) dtTmp = QDateTime( (*it).date(), (*it).start() ); // at the moment we don't have second granularity, be nice about that.. if ( QABS(dt.secsTo(dtTmp)) < 60 ) tmpList.append( *it ); } return tmpList; } +Event DateBookDB::getEvent( int uid ) { + QValueList<Event>::ConstIterator it; + + for (it = eventList.begin(); it != eventList.end(); it++) { + if ((*it).uid() == uid) return *it; + } + for (it = repeatEvents.begin(); it != repeatEvents.end(); it++) { + if ((*it).uid() == uid) return *it; + } + + qDebug("Event not found: uid=%d\n", uid); +} + void DateBookDB::addEvent( const Event &ev, bool doalarm ) { // write to the journal... saveJournalEntry( ev, ACTION_ADD, -1, false ); addJFEvent( ev, doalarm ); d->clean = false; } @@ -610,37 +628,42 @@ void DateBookDB::editEvent( const Event &old, Event &editedEv ) // write to the journal... if ( oldHadRepeat ) { if ( origRepeat( old, orig ) ) // should work always... oldIndex = repeatEvents.findIndex( orig ); } else oldIndex = eventList.findIndex( old ); saveJournalEntry( editedEv, ACTION_REPLACE, oldIndex, oldHadRepeat ); + // Delete old event if ( old.hasAlarm() ) delEventAlarm( old ); if ( oldHadRepeat ) { - if ( oldHadRepeat && editedEv.hasRepeat() ) { + if ( editedEv.hasRepeat() ) { // This mean that origRepeat was run above and + // orig is initialized // assumption, when someone edits a repeating event, they // want to change them all, maybe not perfect, but it works // for the moment... repeatEvents.remove( orig ); } else removeRepeat( old ); } else { QValueList<Event>::Iterator it = eventList.find( old ); if ( it != eventList.end() ) eventList.remove( it ); } + + // Add new event if ( editedEv.hasAlarm() ) addEventAlarm( editedEv ); if ( editedEv.hasRepeat() ) repeatEvents.append( editedEv ); else eventList.append( editedEv ); + d->clean = false; } void DateBookDB::removeEvent( const Event &ev ) { // write to the journal... saveJournalEntry( ev, ACTION_REMOVE, -1, false ); removeJFEvent( ev ); diff --git a/library/datebookdb.h b/library/datebookdb.h index aadb397..e4c251c 100644 --- a/library/datebookdb.h +++ b/library/datebookdb.h @@ -39,16 +39,17 @@ public: // very depreciated now!!! QValueList<Event> getEvents( const QDate &from, const QDate &to ); QValueList<Event> getEvents( const QDateTime &start ); // USE THESE!!! QValueList<EffectiveEvent> getEffectiveEvents( const QDate &from, const QDate &to ); QValueList<EffectiveEvent> getEffectiveEvents( const QDateTime &start ); + Event getEvent( int uid ); QValueList<Event> getRawRepeats() const; QValueList<Event> getNonRepeatingEvents( const QDate &from, const QDate &to ) const; // Use these when dealing with adding removing events... void addEvent( const Event &ev, bool doalarm=TRUE ); void removeEvent( const Event &ev ); @@ -73,13 +74,15 @@ private: // function.. bool saveJournalEntry( const Event &ev, journal_action action, int key/* = -1*/, bool origHadRepeat = false ); QValueList<Event> eventList; // non-repeating events... QValueList<Event> repeatEvents; // the repeating events... DateBookDBPrivate *d; QFile journalFile; + + int recordIdMax; // ADDITION }; /* helper functions, also useful to other apps. */ bool nextOccurance( const Event &e, const QDate &from, QDateTime &next); #endif |