-rw-r--r-- | libkcal/todo.cpp | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp index de07496..f7d40ad 100644 --- a/libkcal/todo.cpp +++ b/libkcal/todo.cpp @@ -92,49 +92,61 @@ void Todo::setRunning( bool run ) //qDebug("Todo::setRunning %d ", run); if ( !mRunSaveTimer ) { mRunSaveTimer = new QTimer ( this ); connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( timerSlotSaveRunningInfoToFile() ) ); } mRunning = 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(); saveRunningInfoToFile(); } } void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end ) { if ( !mRunning) return; mRunning = false; mRunStart = start; mRunEnd = 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; + qDebug("KO Todo::saveTimerTimeout restart %d ", 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 ); } void Todo::saveRunningInfoToFile() { mRunEnd = QDateTime::currentDateTime(); saveRunningInfoToFile( QString::null ); } void Todo::saveRunningInfoToFile( QString comment ) |