summaryrefslogtreecommitdiffabout
path: root/libkcal/todo.cpp
Side-by-side diff
Diffstat (limited to 'libkcal/todo.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/todo.cpp36
1 files changed, 33 insertions, 3 deletions
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp
index 90e7eb9..b89abce 100644
--- a/libkcal/todo.cpp
+++ b/libkcal/todo.cpp
@@ -24,4 +24,5 @@
#include <kdebug.h>
#include <qregexp.h>
+#include <qfileinfo.h>
#include "calendarlocal.h"
@@ -31,5 +32,5 @@
using namespace KCal;
-Todo::Todo(): Incidence()
+Todo::Todo(): QObject(), Incidence()
{
// mStatus = TENTATIVE;
@@ -44,5 +45,5 @@ Todo::Todo(): Incidence()
}
-Todo::Todo(const Todo &t) : Incidence(t)
+Todo::Todo(const Todo &t) : QObject(),Incidence(t)
{
mDtDue = t.mDtDue;
@@ -82,6 +83,8 @@ void Todo::saveRunningInfoToFile()
{
//qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1());
- if ( mRunStart.secsTo ( QDateTime::currentDateTime() ) < 30 )
+ if ( mRunStart.secsTo ( QDateTime::currentDateTime() ) < 30 ) {
+ qDebug("Running time < 30 seconds. Skipped. ");
return;
+ }
QString dir = KGlobalSettings::timeTrackerDir();
//qDebug("%s ", dir.latin1());
@@ -104,6 +107,33 @@ void Todo::saveRunningInfoToFile()
file = dir +"/" +file +".ics";
format.save( &cal, file );
+ saveParents();
}
+void Todo::saveParents()
+{
+ if (!relatedTo() )
+ return;
+ Incidence * inc = relatedTo();
+ if ( inc->type() != "Todo" )
+ return;
+ Todo* to = (Todo*)inc;
+ bool saveTodo = false;
+ QString file = KGlobalSettings::timeTrackerDir() + "/"+ to->uid() + ".ics";
+ QFileInfo fi ( file );
+ if ( fi.exists() ) {
+ if ( fi.lastModified () < to->lastModified ())
+ saveTodo = true;
+ } else {
+ saveTodo = true;
+ }
+ if ( saveTodo ) {
+ CalendarLocal cal;
+ cal.setTimeZoneId( " 00:00 Europe/London(UTC)" );
+ Todo * par = (Todo *) to->clone();
+ cal.addIncidence( par );
+ ICalFormat format;
+ format.save( &cal, file );
+ }
+}
int Todo::runTime()