-rw-r--r-- | libkcal/todo.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp index a496404..7dee4cd 100644 --- a/libkcal/todo.cpp +++ b/libkcal/todo.cpp | |||
@@ -35,6 +35,8 @@ Todo::Todo(): Incidence() | |||
35 | mCompleted = getEvenTime(QDateTime::currentDateTime()); | 35 | mCompleted = getEvenTime(QDateTime::currentDateTime()); |
36 | mHasCompletedDate = false; | 36 | mHasCompletedDate = false; |
37 | mPercentComplete = 0; | 37 | mPercentComplete = 0; |
38 | mRunning = false; | ||
39 | mRunSaveTimer = 0; | ||
38 | } | 40 | } |
39 | 41 | ||
40 | Todo::Todo(const Todo &t) : Incidence(t) | 42 | Todo::Todo(const Todo &t) : Incidence(t) |
@@ -44,13 +46,55 @@ Todo::Todo(const Todo &t) : Incidence(t) | |||
44 | mCompleted = t.mCompleted; | 46 | mCompleted = t.mCompleted; |
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 | { |
56 | return new Todo(*this); | 100 | return new Todo(*this); |