-rw-r--r-- | libkcal/todo.cpp | 32 | ||||
-rw-r--r-- | libkcal/todo.h | 1 |
2 files changed, 23 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 @@ -97,10 +97,8 @@ void Todo::setRunning( bool run ) 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(); @@ -114,22 +112,36 @@ void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end ) 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; + 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() diff --git a/libkcal/todo.h b/libkcal/todo.h index e6b8a21..71b7a4e 100644 --- a/libkcal/todo.h +++ b/libkcal/todo.h @@ -134,6 +134,7 @@ namespace KCal { private slots: void timerSlotSaveRunningInfoToFile( ); private: + void restartSaveTimer( int secs ); int mCurrentTimerDelay; bool mRunning; QTimer * mRunSaveTimer; |