summaryrefslogtreecommitdiffabout
path: root/libkcal
Unidiff
Diffstat (limited to 'libkcal') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/todo.cpp10
-rw-r--r--libkcal/todo.h2
2 files changed, 10 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
@@ -66,90 +66,96 @@ void Todo::setRunningFalse( QString s )
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;
diff --git a/libkcal/todo.h b/libkcal/todo.h
index 42db025..11f848e 100644
--- a/libkcal/todo.h
+++ b/libkcal/todo.h
@@ -13,64 +13,65 @@
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#ifndef TODO_H 20#ifndef TODO_H
21#define TODO_H 21#define TODO_H
22// 22//
23// Todo component, representing a VTODO object 23// Todo component, representing a VTODO object
24// 24//
25 25
26#include "incidence.h" 26#include "incidence.h"
27 27
28#include <qtimer.h> 28#include <qtimer.h>
29 29
30namespace KCal { 30namespace KCal {
31 31
32/** 32/**
33 This class provides a Todo in the sense of RFC2445. 33 This class provides a Todo in the sense of RFC2445.
34*/ 34*/
35 class Todo : public QObject,public Incidence 35 class Todo : public QObject,public Incidence
36{ 36{
37 Q_OBJECT 37 Q_OBJECT
38 public: 38 public:
39 Todo(); 39 Todo();
40 Todo(const Todo &); 40 Todo(const Todo &);
41 ~Todo(); 41 ~Todo();
42 typedef ListBase<Todo> List; 42 typedef ListBase<Todo> List;
43 QCString type() const { return "Todo"; } 43 QCString type() const { return "Todo"; }
44 IncTypeID typeID() const { return todoID; } 44 IncTypeID typeID() const { return todoID; }
45 void saveRunningInfo( QString comment, QDateTime start, QDateTime end );
45 46
46 /** Return an exact copy of this todo. */ 47 /** Return an exact copy of this todo. */
47 Incidence *clone(); 48 Incidence *clone();
48 QDateTime getNextAlarmDateTime( bool * ok, int * offset, QDateTime start_dt ) const; 49 QDateTime getNextAlarmDateTime( bool * ok, int * offset, QDateTime start_dt ) const;
49 50
50 /** for setting the todo's due date/time with a QDateTime. */ 51 /** for setting the todo's due date/time with a QDateTime. */
51 void setDtDue(const QDateTime &dtDue); 52 void setDtDue(const QDateTime &dtDue);
52 /** returns an event's Due date/time as a QDateTime. */ 53 /** returns an event's Due date/time as a QDateTime. */
53 QDateTime dtDue() const; 54 QDateTime dtDue() const;
54 /** returns an event's due time as a string formatted according to the 55 /** returns an event's due time as a string formatted according to the
55 users locale settings */ 56 users locale settings */
56 QString dtDueTimeStr() const; 57 QString dtDueTimeStr() const;
57 /** returns an event's due date as a string formatted according to the 58 /** returns an event's due date as a string formatted according to the
58 users locale settings */ 59 users locale settings */
59 QString dtDueDateStr(bool shortfmt=true) const; 60 QString dtDueDateStr(bool shortfmt=true) const;
60 /** returns an event's due date and time as a string formatted according 61 /** returns an event's due date and time as a string formatted according
61 to the users locale settings */ 62 to the users locale settings */
62 QString dtDueStr(bool shortfmt=true) const; 63 QString dtDueStr(bool shortfmt=true) const;
63 64
64 /** returns TRUE or FALSE depending on whether the todo has a due date */ 65 /** returns TRUE or FALSE depending on whether the todo has a due date */
65 bool hasDueDate() const; 66 bool hasDueDate() const;
66 /** sets the event's hasDueDate value. */ 67 /** sets the event's hasDueDate value. */
67 void setHasDueDate(bool f); 68 void setHasDueDate(bool f);
68 69
69 /* 70 /*
70 Looks for a subtodo (including itself ) which is not complete and is 71 Looks for a subtodo (including itself ) which is not complete and is
71 - overdue, or 72 - overdue, or
72 - due today. 73 - due today.
73 It returns 0 for nothing found, 74 It returns 0 for nothing found,
74 1 for found a todo which is due today and no overdue found 75 1 for found a todo which is due today and no overdue found
75 2 for found a overdue todo 76 2 for found a overdue todo
76 */ 77 */
@@ -104,50 +105,51 @@ namespace KCal {
104 /** 105 /**
105 Set how many percent of the task are completed. Valid values are in the 106 Set how many percent of the task are completed. Valid values are in the
106 range from 0 to 100. 107 range from 0 to 100.
107 */ 108 */
108 void setPercentComplete(int); 109 void setPercentComplete(int);
109 110
110 /** return date and time when todo was completed */ 111 /** return date and time when todo was completed */
111 QDateTime completed() const; 112 QDateTime completed() const;
112 QString completedStr(bool shortF = true) const; 113 QString completedStr(bool shortF = true) const;
113 /** set date and time of completion */ 114 /** set date and time of completion */
114 void setCompleted(const QDateTime &completed); 115 void setCompleted(const QDateTime &completed);
115 116
116 /** Return true, if todo has a date associated with completion */ 117 /** Return true, if todo has a date associated with completion */
117 bool hasCompletedDate() const; 118 bool hasCompletedDate() const;
118 bool contains ( Todo*); 119 bool contains ( Todo*);
119 void checkSetCompletedFalse(); 120 void checkSetCompletedFalse();
120 bool setRecurDates(); 121 bool setRecurDates();
121 bool isRunning() {return mRunning;} 122 bool isRunning() {return mRunning;}
122 bool hasRunningSub(); 123 bool hasRunningSub();
123 void setRunning( bool ); 124 void setRunning( bool );
124 void setRunningFalse( QString ); 125 void setRunningFalse( QString );
125 void stopRunning(); 126 void stopRunning();
126 int runTime(); 127 int runTime();
127 QDateTime runStart () const { return mRunStart;} 128 QDateTime runStart () const { return mRunStart;}
128 public slots: 129 public slots:
129 void saveRunningInfoToFile( QString st ); 130 void saveRunningInfoToFile( QString st );
130 void saveRunningInfoToFile( ); 131 void saveRunningInfoToFile( );
131 void saveParents(); 132 void saveParents();
132 private: 133 private:
133 bool mRunning; 134 bool mRunning;
134 QTimer * mRunSaveTimer; 135 QTimer * mRunSaveTimer;
135 QDateTime mRunStart; 136 QDateTime mRunStart;
137 QDateTime mRunEnd;
136 bool accept(Visitor &v) { return v.visit(this); } 138 bool accept(Visitor &v) { return v.visit(this); }
137 139
138 QDateTime mDtDue; // due date of todo 140 QDateTime mDtDue; // due date of todo
139 141
140 bool mHasDueDate; // if todo has associated due date 142 bool mHasDueDate; // if todo has associated due date
141 143
142// int mStatus; // confirmed/delegated/tentative/etc 144// int mStatus; // confirmed/delegated/tentative/etc
143 145
144 QDateTime mCompleted; 146 QDateTime mCompleted;
145 bool mHasCompletedDate; 147 bool mHasCompletedDate;
146 148
147 int mPercentComplete; 149 int mPercentComplete;
148}; 150};
149 151
150 bool operator==( const Todo&, const Todo& ); 152 bool operator==( const Todo&, const Todo& );
151} 153}
152 154
153#endif 155#endif