-rw-r--r-- | libkcal/todo.cpp | 44 | ||||
-rw-r--r-- | libkcal/todo.h | 16 |
2 files changed, 58 insertions, 2 deletions
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp index a496404..7dee4cd 100644 --- a/libkcal/todo.cpp +++ b/libkcal/todo.cpp | |||
@@ -36,4 +36,6 @@ Todo::Todo(): Incidence() | |||
36 | mHasCompletedDate = false; | 36 | mHasCompletedDate = false; |
37 | mPercentComplete = 0; | 37 | mPercentComplete = 0; |
38 | mRunning = false; | ||
39 | mRunSaveTimer = 0; | ||
38 | } | 40 | } |
39 | 41 | ||
@@ -45,11 +47,53 @@ Todo::Todo(const Todo &t) : Incidence(t) | |||
45 | mHasCompletedDate = t.mHasCompletedDate; | 47 | mHasCompletedDate = t.mHasCompletedDate; |
46 | mPercentComplete = t.mPercentComplete; | 48 | mPercentComplete = t.mPercentComplete; |
49 | mRunning = false; | ||
50 | mRunSaveTimer = 0; | ||
47 | } | 51 | } |
48 | 52 | ||
49 | Todo::~Todo() | 53 | Todo::~Todo() |
50 | { | 54 | { |
55 | setRunning( false ); | ||
56 | } | ||
57 | |||
58 | void Todo::setRunning( bool run ) | ||
59 | { | ||
60 | if ( run == mRunning ) | ||
61 | return; | ||
62 | if ( !mRunSaveTimer ) { | ||
63 | mRunSaveTimer = new QTimer ( this ); | ||
64 | connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( saveRunningInfoToFile() ) ); | ||
65 | } | ||
66 | mRunning = run; | ||
67 | if ( mRunning ) { | ||
68 | mRunSaveTimer->start( 1000 * 60 * 5 ); // 5 min | ||
69 | mRunStart = QDateTime::currentDateTime(); | ||
70 | } else { | ||
71 | mRunSaveTimer->stop(); | ||
72 | saveRunningInfoToFile(); | ||
73 | } | ||
74 | } | ||
51 | 75 | ||
76 | void Todo::saveRunningInfoToFile() | ||
77 | { | ||
78 | qDebug("Todo::saveRunningInfoToFile() "); | ||
52 | } | 79 | } |
53 | 80 | ||
81 | int Todo::runTime() | ||
82 | { | ||
83 | if ( !mRunning ) | ||
84 | return 0; | ||
85 | return mRunStart.secsTo( QDateTime::currentDateTime() ); | ||
86 | } | ||
87 | bool Todo::hasRunningSub() | ||
88 | { | ||
89 | if ( mRunning ) | ||
90 | return true; | ||
91 | Incidence *aTodo; | ||
92 | for (aTodo = mRelations.first(); aTodo; aTodo = mRelations.next()) { | ||
93 | if ( ((Todo*)aTodo)->hasRunningSub() ) | ||
94 | return true; | ||
95 | } | ||
96 | return false; | ||
97 | } | ||
54 | Incidence *Todo::clone() | 98 | Incidence *Todo::clone() |
55 | { | 99 | { |
diff --git a/libkcal/todo.h b/libkcal/todo.h index a22d4b7..fe43357 100644 --- a/libkcal/todo.h +++ b/libkcal/todo.h | |||
@@ -26,4 +26,6 @@ | |||
26 | #include "incidence.h" | 26 | #include "incidence.h" |
27 | 27 | ||
28 | #include <qtimer.h> | ||
29 | |||
28 | namespace KCal { | 30 | namespace KCal { |
29 | 31 | ||
@@ -31,6 +33,7 @@ namespace KCal { | |||
31 | This class provides a Todo in the sense of RFC2445. | 33 | This class provides a Todo in the sense of RFC2445. |
32 | */ | 34 | */ |
33 | class Todo : public Incidence | 35 | class Todo : public QObject,public Incidence |
34 | { | 36 | { |
37 | Q_OBJECT | ||
35 | public: | 38 | public: |
36 | Todo(); | 39 | Todo(); |
@@ -115,6 +118,15 @@ class Todo : public Incidence | |||
115 | void checkSetCompletedFalse(); | 118 | void checkSetCompletedFalse(); |
116 | bool setRecurDates(); | 119 | bool setRecurDates(); |
117 | 120 | bool isRunning() {return mRunning;} | |
121 | bool hasRunningSub(); | ||
122 | void setRunning( bool ); | ||
123 | int runTime(); | ||
124 | QDateTime runStart () const { return mRunStart;} | ||
125 | public slots: | ||
126 | void saveRunningInfoToFile(); | ||
118 | private: | 127 | private: |
128 | bool mRunning; | ||
129 | QTimer * mRunSaveTimer; | ||
130 | QDateTime mRunStart; | ||
119 | bool accept(Visitor &v) { return v.visit(this); } | 131 | bool accept(Visitor &v) { return v.visit(this); } |
120 | 132 | ||