From bd991f0a33d85385735ed4911b794b8740e4d296 Mon Sep 17 00:00:00 2001 From: zautrix Date: Sun, 25 Sep 2005 01:04:17 +0000 Subject: todo timer fix --- diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp index 48d37d5..de07496 100644 --- a/libkcal/todo.cpp +++ b/libkcal/todo.cpp @@ -29,6 +29,10 @@ #include "icalformat.h" #include "todo.h" +#define SAVETIMER_TIMEOUT_SECONDS 300 +//#define SAVETIMER_TIMEOUT_SECONDS 8 +#define SAVETIMER_TIMEOUT_RETRY_SECONDS 5 + using namespace KCal; Todo::Todo(): QObject(), Incidence() @@ -43,6 +47,7 @@ Todo::Todo(): QObject(), Incidence() mRunning = false; mRunSaveTimer = 0; setFloats( true ); + mCurrentTimerDelay = 0; } Todo::Todo(const Todo &t) : QObject(),Incidence(t) @@ -54,6 +59,7 @@ Todo::Todo(const Todo &t) : QObject(),Incidence(t) mPercentComplete = t.mPercentComplete; mRunning = false; mRunSaveTimer = 0; + mCurrentTimerDelay = 0; } Todo::~Todo() @@ -86,12 +92,15 @@ void Todo::setRunning( bool run ) //qDebug("Todo::setRunning %d ", run); if ( !mRunSaveTimer ) { mRunSaveTimer = new QTimer ( this ); - connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( saveRunningInfoToFile() ) ); + connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( timerSlotSaveRunningInfoToFile() ) ); } mRunning = run; + mRunLastSave = QDateTime::currentDateTime(); if ( mRunning ) { - mRunSaveTimer->start( 1000 * 60 * 5 ); // 5 min + mRunSaveTimer->start( SAVETIMER_TIMEOUT_SECONDS * 1000 ); // 5 min mRunStart = QDateTime::currentDateTime(); + mRunLastSave = QDateTime::currentDateTime(); + mCurrentTimerDelay = SAVETIMER_TIMEOUT_SECONDS; } else { mRunSaveTimer->stop(); saveRunningInfoToFile(); @@ -105,6 +114,24 @@ void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end ) mRunEnd = end; saveRunningInfoToFile( comment ); } +void Todo::timerSlotSaveRunningInfoToFile() +{ + mRunEnd = QDateTime::currentDateTime(); + int secsTo = mRunLastSave.secsTo( mRunEnd ); + 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; + return; + } + mRunSaveTimer->start( SAVETIMER_TIMEOUT_SECONDS * 1000 ); // 5 min + mRunLastSave = QDateTime::currentDateTime(); + mCurrentTimerDelay = SAVETIMER_TIMEOUT_SECONDS; + saveRunningInfoToFile( QString::null ); +} void Todo::saveRunningInfoToFile() { mRunEnd = QDateTime::currentDateTime(); diff --git a/libkcal/todo.h b/libkcal/todo.h index 7feb32e..e6b8a21 100644 --- a/libkcal/todo.h +++ b/libkcal/todo.h @@ -131,10 +131,14 @@ namespace KCal { void saveRunningInfoToFile( ); void saveParents(); QString durationText(); + private slots: + void timerSlotSaveRunningInfoToFile( ); private: + int mCurrentTimerDelay; bool mRunning; QTimer * mRunSaveTimer; QDateTime mRunStart; + QDateTime mRunLastSave; QDateTime mRunEnd; bool accept(Visitor &v) { return v.visit(this); } -- cgit v0.9.0.2