summaryrefslogtreecommitdiffabout
path: root/libkcal/todo.cpp
authorzautrix <zautrix>2005-06-27 04:48:41 (UTC)
committer zautrix <zautrix>2005-06-27 04:48:41 (UTC)
commit9b2bf31715226dfa8210f31843616a04f810f012 (patch) (unidiff)
treeb502c4a379b26f74621ba8fabb59fcb53f5a5679 /libkcal/todo.cpp
parent2e566a307bb50ac595fe729ebed0f5336f2af5a8 (diff)
downloadkdepimpi-9b2bf31715226dfa8210f31843616a04f810f012.zip
kdepimpi-9b2bf31715226dfa8210f31843616a04f810f012.tar.gz
kdepimpi-9b2bf31715226dfa8210f31843616a04f810f012.tar.bz2
strat stop tod fixes
Diffstat (limited to 'libkcal/todo.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/todo.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp
index 9a8b6e4..5260051 100644
--- a/libkcal/todo.cpp
+++ b/libkcal/todo.cpp
@@ -18,194 +18,194 @@
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} 45}
46 46
47Todo::Todo(const Todo &t) : QObject(),Incidence(t) 47Todo::Todo(const Todo &t) : QObject(),Incidence(t)
48{ 48{
49 mDtDue = t.mDtDue; 49 mDtDue = t.mDtDue;
50 mHasDueDate = t.mHasDueDate; 50 mHasDueDate = t.mHasDueDate;
51 mCompleted = t.mCompleted; 51 mCompleted = t.mCompleted;
52 mHasCompletedDate = t.mHasCompletedDate; 52 mHasCompletedDate = t.mHasCompletedDate;
53 mPercentComplete = t.mPercentComplete; 53 mPercentComplete = t.mPercentComplete;
54 mRunning = false; 54 mRunning = false;
55 mRunSaveTimer = 0; 55 mRunSaveTimer = 0;
56} 56}
57 57
58Todo::~Todo() 58Todo::~Todo()
59{ 59{
60 setRunning( false ); 60 setRunning( false );
61 //qDebug("Todo::~Todo() "); 61 //qDebug("Todo::~Todo() ");
62} 62}
63 63
64void Todo::setRunningFalse( QString s ) 64void Todo::setRunningFalse( QString s )
65{ 65{
66 if ( ! mRunning ) 66 if ( ! mRunning )
67 return; 67 return;
68 mRunning = false; 68 mRunning = false;
69 mRunSaveTimer->stop(); 69 mRunSaveTimer->stop();
70 saveRunningInfoToFile( s ); 70 saveRunningInfoToFile( s );
71} 71}
72void Todo::stopRunning() 72void Todo::stopRunning()
73{ 73{
74 if ( !mRunning ) 74 if ( !mRunning )
75 return; 75 return;
76 if ( mRunSaveTimer ) 76 if ( mRunSaveTimer )
77 mRunSaveTimer->stop(); 77 mRunSaveTimer->stop();
78 mRunning = false; 78 mRunning = false;
79} 79}
80void Todo::setRunning( bool run ) 80void Todo::setRunning( bool run )
81{ 81{
82 if ( run == mRunning ) 82 if ( run == mRunning )
83 return; 83 return;
84 //qDebug("Todo::setRunning %d ", run); 84 //qDebug("Todo::setRunning %d ", run);
85 if ( !mRunSaveTimer ) { 85 if ( !mRunSaveTimer ) {
86 mRunSaveTimer = new QTimer ( this ); 86 mRunSaveTimer = new QTimer ( this );
87 connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( saveRunningInfoToFile() ) ); 87 connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( saveRunningInfoToFile() ) );
88 } 88 }
89 mRunning = run; 89 mRunning = run;
90 if ( mRunning ) { 90 if ( mRunning ) {
91 mRunSaveTimer->start( 1000 * 60 * 5 ); // 5 min 91 mRunSaveTimer->start( 1000 * 60 * 5 ); // 5 min
92 mRunStart = QDateTime::currentDateTime(); 92 mRunStart = QDateTime::currentDateTime();
93 } else { 93 } else {
94 mRunSaveTimer->stop(); 94 mRunSaveTimer->stop();
95 saveRunningInfoToFile(); 95 saveRunningInfoToFile();
96 } 96 }
97} 97}
98void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end ) 98void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end )
99{ 99{
100 if ( !mRunning) return; 100 if ( !mRunning) return;
101 mRunning = false; 101 mRunning = false;
102 mRunStart = start; 102 mRunStart = start;
103 mRunEnd = end; 103 mRunEnd = end;
104 saveRunningInfoToFile( comment ); 104 saveRunningInfoToFile( comment );
105} 105}
106void Todo::saveRunningInfoToFile() 106void Todo::saveRunningInfoToFile()
107{ 107{
108 mRunEnd = QDateTime::currentDateTime(); 108 mRunEnd = QDateTime::currentDateTime();
109 saveRunningInfoToFile( QString::null ); 109 saveRunningInfoToFile( QString::null );
110} 110}
111void Todo::saveRunningInfoToFile( QString comment ) 111void Todo::saveRunningInfoToFile( QString comment )
112{ 112{
113 //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1()); 113 //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1());
114 if ( mRunStart.secsTo ( QDateTime::currentDateTime() ) < 10 ) { 114 if ( mRunStart.secsTo ( mRunEnd) < 15 ) {
115 qDebug("Running time < 30 seconds. Skipped. "); 115 qDebug("Running time < 15 seconds. Skipped. ");
116 return; 116 return;
117 } 117 }
118 QString dir = KGlobalSettings::timeTrackerDir(); 118 QString dir = KGlobalSettings::timeTrackerDir();
119 //qDebug("%s ", dir.latin1()); 119 //qDebug("%s ", dir.latin1());
120 QString file = "%1%2%3-%4%5%6-"; 120 QString file = "%1%2%3-%4%5%6-";
121 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 ); 121 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 );
122 file.replace ( QRegExp (" "), "0" ); 122 file.replace ( QRegExp (" "), "0" );
123 file += uid(); 123 file += uid();
124 //qDebug("File %s ",file.latin1() ); 124 //qDebug("File %s ",file.latin1() );
125 CalendarLocal cal; 125 CalendarLocal cal;
126 cal.setLocalTime(); 126 cal.setLocalTime();
127 Todo * to = (Todo*) clone(); 127 Todo * to = (Todo*) clone();
128 to->setFloats( false ); 128 to->setFloats( false );
129 to->setDtStart( mRunStart ); 129 to->setDtStart( mRunStart );
130 to->setHasStartDate( true ); 130 to->setHasStartDate( true );
131 to->setDtDue( mRunEnd ); 131 to->setDtDue( mRunEnd );
132 to->setHasDueDate( true ); 132 to->setHasDueDate( true );
133 to->setUid( file ); 133 to->setUid( file );
134 if ( !comment.isEmpty() ) { 134 if ( !comment.isEmpty() ) {
135 QString des = to->description(); 135 QString des = to->description();
136 if ( des.isEmpty () ) 136 if ( des.isEmpty () )
137 to->setDescription( "TT-Note: " + comment ); 137 to->setDescription( "TT-Note: " + comment );
138 else 138 else
139 to->setDescription( "TT-Note: " + comment +"\n" + des ); 139 to->setDescription( "TT-Note: " + comment +"\n" + des );
140 } 140 }
141 cal.addIncidence( to ); 141 cal.addIncidence( to );
142 ICalFormat format; 142 ICalFormat format;
143 file = dir +"/" +file +".ics"; 143 file = dir +"/" +file +".ics";
144 format.save( &cal, file ); 144 format.save( &cal, file );
145 saveParents(); 145 saveParents();
146 146
147} 147}
148void Todo::saveParents() 148void Todo::saveParents()
149{ 149{
150 if (!relatedTo() ) 150 if (!relatedTo() )
151 return; 151 return;
152 Incidence * inc = relatedTo(); 152 Incidence * inc = relatedTo();
153 if ( inc->typeID() != todoID ) 153 if ( inc->typeID() != todoID )
154 return; 154 return;
155 Todo* to = (Todo*)inc; 155 Todo* to = (Todo*)inc;
156 bool saveTodo = false; 156 bool saveTodo = false;
157 QString file = KGlobalSettings::timeTrackerDir() + "/"+ to->uid() + ".ics"; 157 QString file = KGlobalSettings::timeTrackerDir() + "/"+ to->uid() + ".ics";
158 QFileInfo fi ( file ); 158 QFileInfo fi ( file );
159 if ( fi.exists() ) { 159 if ( fi.exists() ) {
160 if ( fi.lastModified () < to->lastModified ()) 160 if ( fi.lastModified () < to->lastModified ())
161 saveTodo = true; 161 saveTodo = true;
162 } else { 162 } else {
163 saveTodo = true; 163 saveTodo = true;
164 } 164 }
165 if ( saveTodo ) { 165 if ( saveTodo ) {
166 CalendarLocal cal; 166 CalendarLocal cal;
167 cal.setLocalTime(); 167 cal.setLocalTime();
168 Todo * par = (Todo *) to->clone(); 168 Todo * par = (Todo *) to->clone();
169 cal.addIncidence( par ); 169 cal.addIncidence( par );
170 ICalFormat format; 170 ICalFormat format;
171 format.save( &cal, file ); 171 format.save( &cal, file );
172 } 172 }
173 to->saveParents(); 173 to->saveParents();
174} 174}
175 175
176int Todo::runTime() 176int Todo::runTime()
177{ 177{
178 if ( !mRunning ) 178 if ( !mRunning )
179 return 0; 179 return 0;
180 return mRunStart.secsTo( QDateTime::currentDateTime() ); 180 return mRunStart.secsTo( QDateTime::currentDateTime() );
181} 181}
182bool Todo::hasRunningSub() 182bool Todo::hasRunningSub()
183{ 183{
184 if ( mRunning ) 184 if ( mRunning )
185 return true; 185 return true;
186 Incidence *aTodo; 186 Incidence *aTodo;
187 for (aTodo = mRelations.first(); aTodo; aTodo = mRelations.next()) { 187 for (aTodo = mRelations.first(); aTodo; aTodo = mRelations.next()) {
188 if ( ((Todo*)aTodo)->hasRunningSub() ) 188 if ( ((Todo*)aTodo)->hasRunningSub() )
189 return true; 189 return true;
190 } 190 }
191 return false; 191 return false;
192} 192}
193Incidence *Todo::clone() 193Incidence *Todo::clone()
194{ 194{
195 return new Todo(*this); 195 return new Todo(*this);
196} 196}
197 197
198bool Todo::contains ( Todo* from ) 198bool Todo::contains ( Todo* from )
199{ 199{
200 200
201 if ( !from->summary().isEmpty() ) 201 if ( !from->summary().isEmpty() )
202 if ( !summary().startsWith( from->summary() )) 202 if ( !summary().startsWith( from->summary() ))
203 return false; 203 return false;
204 if ( from->hasStartDate() ) { 204 if ( from->hasStartDate() ) {
205 if ( !hasStartDate() ) 205 if ( !hasStartDate() )
206 return false; 206 return false;
207 if ( from->dtStart() != dtStart()) 207 if ( from->dtStart() != dtStart())
208 return false; 208 return false;
209 } 209 }
210 if ( from->hasDueDate() ){ 210 if ( from->hasDueDate() ){
211 if ( !hasDueDate() ) 211 if ( !hasDueDate() )