summaryrefslogtreecommitdiffabout
path: root/libkcal/event.cpp
Side-by-side diff
Diffstat (limited to 'libkcal/event.cpp') (more/less context) (show whitespace changes)
-rw-r--r--libkcal/event.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/libkcal/event.cpp b/libkcal/event.cpp
index 0766fd9..fdf5657 100644
--- a/libkcal/event.cpp
+++ b/libkcal/event.cpp
@@ -321,96 +321,104 @@ bool Event::isOverlapping ( Event* testEvent, QDateTime* overlapDT, QDateTime*
incidenceStart = incidenceStart.addSecs( -300 );
else
testincidenceStart = testincidenceStart.addSecs( -300 );
int count = 0;
ok = true;
int countbreak = 2000;
QDateTime stopSearch;
bool testStop = false;
if ( startDT ) {
stopSearch = startDT->addDays( 365*3 );
testStop = true;
}
while ( ok ) {
++count;
if ( count > countbreak ) break;
if ( computeThis ) {
if ( testStop )
if ( testincidenceStart > stopSearch )
break;
incidenceStart = getNextOccurence( incidenceStart.addSecs( 60 ), &ok );
}
else {
if ( testStop )
if ( incidenceStart > stopSearch )
break;
testincidenceStart = testEvent->getNextOccurence( testincidenceStart.addSecs( 60 ), &ok );
}
if ( ok ) {
if ( incidenceStart < testincidenceStart.addSecs( testduration ) && testincidenceStart < incidenceStart.addSecs( duration ) ) {
if ( incidenceStart < testincidenceStart )
*overlapDT = testincidenceStart;
else
*overlapDT = incidenceStart;
if ( startDT ) {
if ( *overlapDT >= *startDT )
return true;
} else
return true;
}
computeThis = ( incidenceStart < testincidenceStart );
}
}
//qDebug("%d rec counter stopped at %d - %s %s", ok ,count, summary().latin1(),testEvent->summary().latin1() );
return false;
}
QDateTime Event::getNextAlarmDateTime( bool * ok, int * offset, QDateTime start_dt ) const
{
*ok = false;
if ( !alarmEnabled() )
return QDateTime ();
bool yes;
QDateTime incidenceStart = getNextOccurence( start_dt, &yes );
if ( ! yes || cancelled() ) {
*ok = false;
return QDateTime ();
}
bool enabled = false;
Alarm* alarm;
int off = 0;
QDateTime alarmStart = QDateTime::currentDateTime().addDays( 3650 );;
// if ( QDateTime::currentDateTime() > incidenceStart ){
// *ok = false;
// return incidenceStart;
// }
for (QPtrListIterator<Alarm> it(mAlarms); (alarm = it.current()) != 0; ++it) {
if (alarm->enabled()) {
if ( alarm->hasTime () ) {
if ( alarm->time() < alarmStart ) {
alarmStart = alarm->time();
enabled = true;
off = alarmStart.secsTo( incidenceStart );
}
} else {
int secs = alarm->startOffset().asSeconds();
if ( incidenceStart.addSecs( secs ) < alarmStart ) {
alarmStart = incidenceStart.addSecs( secs );
enabled = true;
off = -secs;
}
}
}
}
if ( enabled ) {
if ( alarmStart > start_dt ) {
*ok = true;
* offset = off;
return alarmStart;
}
}
*ok = false;
return QDateTime ();
}
+
+QString Event::durationText()
+{
+ int sec = mDtStart.secsTo( mDtEnd );
+ if ( doesFloat() )
+ sec += 86400;
+ return durationText4Time( sec );
+}