summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/datebookdb.cpp25
-rw-r--r--library/datebookdb.h3
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
@@ -460,8 +460,11 @@ QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDate &from,
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 ) {
@@ -502,8 +505,10 @@ QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDate &from,
}
// 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;
@@ -581,8 +586,21 @@ QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDateTime &dt)
}
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...
@@ -614,12 +632,14 @@ void DateBookDB::editEvent( const Event &old, Event &editedEv )
} 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 );
@@ -629,14 +649,17 @@ void DateBookDB::editEvent( const Event &old, Event &editedEv )
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 )
diff --git a/library/datebookdb.h b/library/datebookdb.h
index aadb397..e4c251c 100644
--- a/library/datebookdb.h
+++ b/library/datebookdb.h
@@ -43,8 +43,9 @@ public:
// 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;
@@ -77,8 +78,10 @@ private:
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);