summaryrefslogtreecommitdiffabout
path: root/libkcal/todo.cpp
Side-by-side diff
Diffstat (limited to 'libkcal/todo.cpp') (more/less context) (show whitespace changes)
-rw-r--r--libkcal/todo.cpp32
1 files changed, 22 insertions, 10 deletions
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp
index de07496..f7d40ad 100644
--- a/libkcal/todo.cpp
+++ b/libkcal/todo.cpp
@@ -98,8 +98,6 @@ void Todo::setRunning( bool run )
mRunLastSave = QDateTime::currentDateTime();
if ( mRunning ) {
- mRunSaveTimer->start( SAVETIMER_TIMEOUT_SECONDS * 1000 ); // 5 min
+ restartSaveTimer( SAVETIMER_TIMEOUT_SECONDS );
mRunStart = QDateTime::currentDateTime();
- mRunLastSave = QDateTime::currentDateTime();
- mCurrentTimerDelay = SAVETIMER_TIMEOUT_SECONDS;
} else {
mRunSaveTimer->stop();
@@ -115,20 +113,34 @@ void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end )
saveRunningInfoToFile( comment );
}
+void Todo::restartSaveTimer( int secs )
+{
+ mRunSaveTimer->start( secs * 1000 );
+ mRunLastSave = QDateTime::currentDateTime();
+ mCurrentTimerDelay = secs;
+}
void Todo::timerSlotSaveRunningInfoToFile()
{
mRunEnd = QDateTime::currentDateTime();
int secsTo = mRunLastSave.secsTo( mRunEnd );
- if( secsTo == 8 ) ++secsTo;
+ //if( secsTo == 8 ) ++secsTo;
qDebug("KO Todo::saveTimerTimeout %d %d", secsTo, mCurrentTimerDelay );
if ( secsTo > mCurrentTimerDelay ) {
qDebug("KO Todo::saveTimerTimeout restart %d ", SAVETIMER_TIMEOUT_RETRY_SECONDS );
- mRunSaveTimer->start( SAVETIMER_TIMEOUT_RETRY_SECONDS * 1000 );
- mRunLastSave = QDateTime::currentDateTime();
- mCurrentTimerDelay = SAVETIMER_TIMEOUT_RETRY_SECONDS;
+ restartSaveTimer( SAVETIMER_TIMEOUT_RETRY_SECONDS );
return;
}
- mRunSaveTimer->start( SAVETIMER_TIMEOUT_SECONDS * 1000 ); // 5 min
- mRunLastSave = QDateTime::currentDateTime();
- mCurrentTimerDelay = SAVETIMER_TIMEOUT_SECONDS;
+ int msecs = mRunLastSave.time().msecsTo( mRunEnd.time());
+ if ( msecs < 0 ) {
+ restartSaveTimer( SAVETIMER_TIMEOUT_RETRY_SECONDS );
+ return;
+ }
+ // qDebug("KO Todo::saveTimerTimeout restarting! millisecs %d", msecs - ( ( mCurrentTimerDelay * 1000 ) + 50 ) );
+ if ( msecs > ( ( mCurrentTimerDelay * 1000 ) + 50 )) {
+ qDebug("KO Todo::saveTimerTimeout restarting! millisecs %d", msecs - ( ( mCurrentTimerDelay * 1000 ) + 50 ) );
+ restartSaveTimer( SAVETIMER_TIMEOUT_RETRY_SECONDS );
+ return;
+
+ }
+ restartSaveTimer( SAVETIMER_TIMEOUT_SECONDS );
saveRunningInfoToFile( QString::null );
}