summaryrefslogtreecommitdiffabout
path: root/libkcal/todo.cpp
Unidiff
Diffstat (limited to 'libkcal/todo.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/todo.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp
index d062492..62b74f1 100644
--- a/libkcal/todo.cpp
+++ b/libkcal/todo.cpp
@@ -50,122 +50,128 @@ Todo::Todo(const Todo &t) : QObject(),Incidence(t)
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}
98 98void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end )
99{
100 mRunStart = start;
101 mRunEnd = end;
102 saveRunningInfoToFile( comment );
103}
99void Todo::saveRunningInfoToFile() 104void Todo::saveRunningInfoToFile()
100{ 105{
106 mRunEnd = QDateTime::currentDateTime();
101 saveRunningInfoToFile( QString::null ); 107 saveRunningInfoToFile( QString::null );
102} 108}
103void Todo::saveRunningInfoToFile( QString comment ) 109void Todo::saveRunningInfoToFile( QString comment )
104{ 110{
105 //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1()); 111 //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1());
106 if ( mRunStart.secsTo ( QDateTime::currentDateTime() ) < 10 ) { 112 if ( mRunStart.secsTo ( QDateTime::currentDateTime() ) < 10 ) {
107 qDebug("Running time < 30 seconds. Skipped. "); 113 qDebug("Running time < 30 seconds. Skipped. ");
108 return; 114 return;
109 } 115 }
110 QString dir = KGlobalSettings::timeTrackerDir(); 116 QString dir = KGlobalSettings::timeTrackerDir();
111 //qDebug("%s ", dir.latin1()); 117 //qDebug("%s ", dir.latin1());
112 QString file = "%1%2%3-%4%5%6-"; 118 QString file = "%1%2%3-%4%5%6-";
113 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 ); 119 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 );
114 file.replace ( QRegExp (" "), "0" ); 120 file.replace ( QRegExp (" "), "0" );
115 file += uid(); 121 file += uid();
116 //qDebug("File %s ",file.latin1() ); 122 //qDebug("File %s ",file.latin1() );
117 CalendarLocal cal; 123 CalendarLocal cal;
118 cal.setLocalTime(); 124 cal.setLocalTime();
119 Todo * to = (Todo*) clone(); 125 Todo * to = (Todo*) clone();
120 to->setFloats( false ); 126 to->setFloats( false );
121 to->setDtStart( mRunStart ); 127 to->setDtStart( mRunStart );
122 to->setHasStartDate( true ); 128 to->setHasStartDate( true );
123 to->setDtDue( QDateTime::currentDateTime() ); 129 to->setDtDue( mRunEnd );
124 to->setHasDueDate( true ); 130 to->setHasDueDate( true );
125 to->setUid( file ); 131 to->setUid( file );
126 if ( !comment.isEmpty() ) { 132 if ( !comment.isEmpty() ) {
127 QString des = to->description(); 133 QString des = to->description();
128 if ( des.isEmpty () ) 134 if ( des.isEmpty () )
129 to->setDescription( "TT-Note: " + comment ); 135 to->setDescription( "TT-Note: " + comment );
130 else 136 else
131 to->setDescription( "TT-Note: " + comment +"\n" + des ); 137 to->setDescription( "TT-Note: " + comment +"\n" + des );
132 } 138 }
133 cal.addIncidence( to ); 139 cal.addIncidence( to );
134 ICalFormat format; 140 ICalFormat format;
135 file = dir +"/" +file +".ics"; 141 file = dir +"/" +file +".ics";
136 format.save( &cal, file ); 142 format.save( &cal, file );
137 saveParents(); 143 saveParents();
138 144
139} 145}
140void Todo::saveParents() 146void Todo::saveParents()
141{ 147{
142 if (!relatedTo() ) 148 if (!relatedTo() )
143 return; 149 return;
144 Incidence * inc = relatedTo(); 150 Incidence * inc = relatedTo();
145 if ( inc->typeID() != todoID ) 151 if ( inc->typeID() != todoID )
146 return; 152 return;
147 Todo* to = (Todo*)inc; 153 Todo* to = (Todo*)inc;
148 bool saveTodo = false; 154 bool saveTodo = false;
149 QString file = KGlobalSettings::timeTrackerDir() + "/"+ to->uid() + ".ics"; 155 QString file = KGlobalSettings::timeTrackerDir() + "/"+ to->uid() + ".ics";
150 QFileInfo fi ( file ); 156 QFileInfo fi ( file );
151 if ( fi.exists() ) { 157 if ( fi.exists() ) {
152 if ( fi.lastModified () < to->lastModified ()) 158 if ( fi.lastModified () < to->lastModified ())
153 saveTodo = true; 159 saveTodo = true;
154 } else { 160 } else {
155 saveTodo = true; 161 saveTodo = true;
156 } 162 }
157 if ( saveTodo ) { 163 if ( saveTodo ) {
158 CalendarLocal cal; 164 CalendarLocal cal;
159 cal.setLocalTime(); 165 cal.setLocalTime();
160 Todo * par = (Todo *) to->clone(); 166 Todo * par = (Todo *) to->clone();
161 cal.addIncidence( par ); 167 cal.addIncidence( par );
162 ICalFormat format; 168 ICalFormat format;
163 format.save( &cal, file ); 169 format.save( &cal, file );
164 } 170 }
165 to->saveParents(); 171 to->saveParents();
166} 172}
167 173
168int Todo::runTime() 174int Todo::runTime()
169{ 175{
170 if ( !mRunning ) 176 if ( !mRunning )
171 return 0; 177 return 0;