summaryrefslogtreecommitdiffabout
path: root/libkcal
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 /libkcal
parentbada5cffd8f1b5f4f3719299e3615d7d06a1f0dc (diff)
downloadkdepimpi-bd991f0a33d85385735ed4911b794b8740e4d296.zip
kdepimpi-bd991f0a33d85385735ed4911b794b8740e4d296.tar.gz
kdepimpi-bd991f0a33d85385735ed4911b794b8740e4d296.tar.bz2
todo timer fix
Diffstat (limited to 'libkcal') (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
@@ -24,41 +24,47 @@
#include <kdebug.h>
#include <qregexp.h>
#include <qfileinfo.h>
#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()
{
// mStatus = TENTATIVE;
mHasDueDate = false;
setHasStartDate( false );
mCompleted = getEvenTime(QDateTime::currentDateTime());
mHasCompletedDate = false;
mPercentComplete = 0;
mRunning = false;
mRunSaveTimer = 0;
setFloats( true );
+ mCurrentTimerDelay = 0;
}
Todo::Todo(const Todo &t) : QObject(),Incidence(t)
{
mDtDue = t.mDtDue;
mHasDueDate = t.mHasDueDate;
mCompleted = t.mCompleted;
mHasCompletedDate = t.mHasCompletedDate;
mPercentComplete = t.mPercentComplete;
mRunning = false;
mRunSaveTimer = 0;
+ mCurrentTimerDelay = 0;
}
Todo::~Todo()
{
setRunning( false );
//qDebug("Todo::~Todo() ");
}
@@ -81,35 +87,56 @@ void Todo::stopRunning()
}
void Todo::setRunning( bool run )
{
if ( run == mRunning )
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();
}
}
void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end )
{
if ( !mRunning) return;
mRunning = false;
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 );
}
void Todo::saveRunningInfoToFile( QString comment )
{
//qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1());
diff --git a/libkcal/todo.h b/libkcal/todo.h
index 7feb32e..e6b8a21 100644
--- a/libkcal/todo.h
+++ b/libkcal/todo.h
@@ -126,20 +126,24 @@ namespace KCal {
int runTime();
QDateTime runStart () const { return mRunStart;}
void saveRunningInfo( QString comment, QDateTime start, QDateTime end );
public slots:
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
bool mHasDueDate; // if todo has associated due date
// int mStatus; // confirmed/delegated/tentative/etc