summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-09-25 01:04:17 (UTC)
committer zautrix <zautrix>2005-09-25 01:04:17 (UTC)
commitbd991f0a33d85385735ed4911b794b8740e4d296 (patch) (side-by-side diff)
treef69fdacca2283e2602619e24bcbc30b46998d298
parentbada5cffd8f1b5f4f3719299e3615d7d06a1f0dc (diff)
downloadkdepimpi-bd991f0a33d85385735ed4911b794b8740e4d296.zip
kdepimpi-bd991f0a33d85385735ed4911b794b8740e4d296.tar.gz
kdepimpi-bd991f0a33d85385735ed4911b794b8740e4d296.tar.bz2
todo timer fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/todo.cpp31
-rw-r--r--libkcal/todo.h4
2 files changed, 33 insertions, 2 deletions
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp
index 48d37d5..de07496 100644
--- a/libkcal/todo.cpp
+++ b/libkcal/todo.cpp
@@ -28,8 +28,12 @@
#include "calendarlocal.h"
#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()
{
@@ -42,8 +46,9 @@ Todo::Todo(): QObject(), Incidence()
mPercentComplete = 0;
mRunning = false;
mRunSaveTimer = 0;
setFloats( true );
+ mCurrentTimerDelay = 0;
}
Todo::Todo(const Todo &t) : QObject(),Incidence(t)
{
@@ -53,8 +58,9 @@ Todo::Todo(const Todo &t) : QObject(),Incidence(t)
mHasCompletedDate = t.mHasCompletedDate;
mPercentComplete = t.mPercentComplete;
mRunning = false;
mRunSaveTimer = 0;
+ mCurrentTimerDelay = 0;
}
Todo::~Todo()
{
@@ -85,14 +91,17 @@ void Todo::setRunning( bool run )
return;
//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();
}
@@ -104,8 +113,26 @@ void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end )
mRunStart = start;
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();
saveRunningInfoToFile( QString::null );
diff --git a/libkcal/todo.h b/libkcal/todo.h
index 7feb32e..e6b8a21 100644
--- a/libkcal/todo.h
+++ b/libkcal/todo.h
@@ -130,12 +130,16 @@ namespace KCal {
void saveRunningInfoToFile( QString st );
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); }
QDateTime mDtDue; // due date of todo