summaryrefslogtreecommitdiffabout
path: root/libkcal/todo.cpp
Unidiff
Diffstat (limited to 'libkcal/todo.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/todo.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp
index e4508a0..48d37d5 100644
--- a/libkcal/todo.cpp
+++ b/libkcal/todo.cpp
@@ -1,140 +1,141 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <kglobal.h> 21#include <kglobal.h>
22#include <kglobalsettings.h> 22#include <kglobalsettings.h>
23#include <klocale.h> 23#include <klocale.h>
24#include <kdebug.h> 24#include <kdebug.h>
25#include <qregexp.h> 25#include <qregexp.h>
26#include <qfileinfo.h> 26#include <qfileinfo.h>
27 27
28#include "calendarlocal.h" 28#include "calendarlocal.h"
29#include "icalformat.h" 29#include "icalformat.h"
30#include "todo.h" 30#include "todo.h"
31 31
32using namespace KCal; 32using namespace KCal;
33 33
34Todo::Todo(): QObject(), Incidence() 34Todo::Todo(): QObject(), Incidence()
35{ 35{
36// mStatus = TENTATIVE; 36// mStatus = TENTATIVE;
37 37
38 mHasDueDate = false; 38 mHasDueDate = false;
39 setHasStartDate( false ); 39 setHasStartDate( false );
40 mCompleted = getEvenTime(QDateTime::currentDateTime()); 40 mCompleted = getEvenTime(QDateTime::currentDateTime());
41 mHasCompletedDate = false; 41 mHasCompletedDate = false;
42 mPercentComplete = 0; 42 mPercentComplete = 0;
43 mRunning = false; 43 mRunning = false;
44 mRunSaveTimer = 0; 44 mRunSaveTimer = 0;
45 setFloats( true );
45} 46}
46 47
47Todo::Todo(const Todo &t) : QObject(),Incidence(t) 48Todo::Todo(const Todo &t) : QObject(),Incidence(t)
48{ 49{
49 mDtDue = t.mDtDue; 50 mDtDue = t.mDtDue;
50 mHasDueDate = t.mHasDueDate; 51 mHasDueDate = t.mHasDueDate;
51 mCompleted = t.mCompleted; 52 mCompleted = t.mCompleted;
52 mHasCompletedDate = t.mHasCompletedDate; 53 mHasCompletedDate = t.mHasCompletedDate;
53 mPercentComplete = t.mPercentComplete; 54 mPercentComplete = t.mPercentComplete;
54 mRunning = false; 55 mRunning = false;
55 mRunSaveTimer = 0; 56 mRunSaveTimer = 0;
56} 57}
57 58
58Todo::~Todo() 59Todo::~Todo()
59{ 60{
60 setRunning( false ); 61 setRunning( false );
61 //qDebug("Todo::~Todo() "); 62 //qDebug("Todo::~Todo() ");
62} 63}
63 64
64void Todo::setRunningFalse( QString s ) 65void Todo::setRunningFalse( QString s )
65{ 66{
66 if ( ! mRunning ) 67 if ( ! mRunning )
67 return; 68 return;
68 mRunning = false; 69 mRunning = false;
69 if ( mRunSaveTimer ) 70 if ( mRunSaveTimer )
70 mRunSaveTimer->stop(); 71 mRunSaveTimer->stop();
71 saveRunningInfoToFile( s ); 72 saveRunningInfoToFile( s );
72} 73}
73void Todo::stopRunning() 74void Todo::stopRunning()
74{ 75{
75 if ( !mRunning ) 76 if ( !mRunning )
76 return; 77 return;
77 if ( mRunSaveTimer ) 78 if ( mRunSaveTimer )
78 mRunSaveTimer->stop(); 79 mRunSaveTimer->stop();
79 mRunning = false; 80 mRunning = false;
80} 81}
81void Todo::setRunning( bool run ) 82void Todo::setRunning( bool run )
82{ 83{
83 if ( run == mRunning ) 84 if ( run == mRunning )
84 return; 85 return;
85 //qDebug("Todo::setRunning %d ", run); 86 //qDebug("Todo::setRunning %d ", run);
86 if ( !mRunSaveTimer ) { 87 if ( !mRunSaveTimer ) {
87 mRunSaveTimer = new QTimer ( this ); 88 mRunSaveTimer = new QTimer ( this );
88 connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( saveRunningInfoToFile() ) ); 89 connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( saveRunningInfoToFile() ) );
89 } 90 }
90 mRunning = run; 91 mRunning = run;
91 if ( mRunning ) { 92 if ( mRunning ) {
92 mRunSaveTimer->start( 1000 * 60 * 5 ); // 5 min 93 mRunSaveTimer->start( 1000 * 60 * 5 ); // 5 min
93 mRunStart = QDateTime::currentDateTime(); 94 mRunStart = QDateTime::currentDateTime();
94 } else { 95 } else {
95 mRunSaveTimer->stop(); 96 mRunSaveTimer->stop();
96 saveRunningInfoToFile(); 97 saveRunningInfoToFile();
97 } 98 }
98} 99}
99void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end ) 100void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end )
100{ 101{
101 if ( !mRunning) return; 102 if ( !mRunning) return;
102 mRunning = false; 103 mRunning = false;
103 mRunStart = start; 104 mRunStart = start;
104 mRunEnd = end; 105 mRunEnd = end;
105 saveRunningInfoToFile( comment ); 106 saveRunningInfoToFile( comment );
106} 107}
107void Todo::saveRunningInfoToFile() 108void Todo::saveRunningInfoToFile()
108{ 109{
109 mRunEnd = QDateTime::currentDateTime(); 110 mRunEnd = QDateTime::currentDateTime();
110 saveRunningInfoToFile( QString::null ); 111 saveRunningInfoToFile( QString::null );
111} 112}
112void Todo::saveRunningInfoToFile( QString comment ) 113void Todo::saveRunningInfoToFile( QString comment )
113{ 114{
114 //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1()); 115 //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1());
115 if ( mRunStart.secsTo ( mRunEnd) < 15 ) { 116 if ( mRunStart.secsTo ( mRunEnd) < 15 ) {
116 qDebug("Running time < 15 seconds. Skipped. "); 117 qDebug("Running time < 15 seconds. Skipped. ");
117 return; 118 return;
118 } 119 }
119 QString dir = KGlobalSettings::timeTrackerDir(); 120 QString dir = KGlobalSettings::timeTrackerDir();
120 //qDebug("%s ", dir.latin1()); 121 //qDebug("%s ", dir.latin1());
121 QString file = "%1%2%3-%4%5%6-"; 122 QString file = "%1%2%3-%4%5%6-";
122 file = file.arg( mRunStart.date().year(), 4).arg( mRunStart.date().month(),2 ).arg( mRunStart.date().day(), 2 ).arg( mRunStart.time().hour(),2 ).arg( mRunStart.time().minute(),2 ).arg( mRunStart.time().second(),2 ); 123 file = file.arg( mRunStart.date().year(), 4).arg( mRunStart.date().month(),2 ).arg( mRunStart.date().day(), 2 ).arg( mRunStart.time().hour(),2 ).arg( mRunStart.time().minute(),2 ).arg( mRunStart.time().second(),2 );
123 file.replace ( QRegExp (" "), "0" ); 124 file.replace ( QRegExp (" "), "0" );
124 file += uid(); 125 file += uid();
125 //qDebug("File %s ",file.latin1() ); 126 //qDebug("File %s ",file.latin1() );
126 CalendarLocal cal; 127 CalendarLocal cal;
127 cal.setLocalTime(); 128 cal.setLocalTime();
128 Todo * to = (Todo*) clone(); 129 Todo * to = (Todo*) clone();
129 to->setFloats( false ); 130 to->setFloats( false );
130 to->setDtStart( mRunStart ); 131 to->setDtStart( mRunStart );
131 to->setHasStartDate( true ); 132 to->setHasStartDate( true );
132 to->setDtDue( mRunEnd ); 133 to->setDtDue( mRunEnd );
133 to->setHasDueDate( true ); 134 to->setHasDueDate( true );
134 to->setUid( file ); 135 to->setUid( file );
135 if ( !comment.isEmpty() ) { 136 if ( !comment.isEmpty() ) {
136 QString des = to->description(); 137 QString des = to->description();
137 if ( des.isEmpty () ) 138 if ( des.isEmpty () )
138 to->setDescription( "TT-Note: " + comment ); 139 to->setDescription( "TT-Note: " + comment );
139 else 140 else
140 to->setDescription( "TT-Note: " + comment +"\n" + des ); 141 to->setDescription( "TT-Note: " + comment +"\n" + des );