task.h
00001 #ifndef KARM_TASK_H
00002 #define KARM_TASK_H
00003
00004 #include <qlistview.h>
00005 #include <qobject.h>
00006 #include <qpixmap.h>
00007 #include <qptrlist.h>
00008 #include <qptrvector.h>
00009 #include <qstring.h>
00010
00011 #include "incidence.h"
00012 #include "event.h"
00013 #include "todo.h"
00014
00015 #include "desktoplist.h"
00016 #include "karmstorage.h"
00017
00018 class QFile;
00019 class QTimer;
00020
00021 class TaskView;
00022
00024
00037 class Task : public QObject, public QListViewItem
00038 {
00039 Q_OBJECT
00040
00041 public:
00043 Task( const QString& taskame, long minutes, long sessionTime,
00044 DesktopList desktops, TaskView* parent = 0);
00045 Task( const QString& taskame, long minutes, long sessionTime,
00046 DesktopList desktops, Task* parent = 0);
00047 Task( KCal::Todo* incident, TaskView* parent );
00049
00050 ~Task();
00051
00055 Task* firstChild() const { return (Task*)QListViewItem::firstChild(); }
00056 Task* nextSibling() const { return (Task*)QListViewItem::nextSibling(); }
00057 Task* parent() const { return (Task*)QListViewItem::parent(); }
00058
00060 TaskView* taskView() const {
00061 return static_cast<TaskView *>( listView() );
00062 }
00063
00065 QString uid() const { return _uid; }
00066
00074 void setUid(const QString uid);
00075
00077 void cut();
00080 void move(Task* destination);
00082 void paste(Task* destination);
00083
00085
00095 void changeTime( long minutes, bool do_logging, KarmStorage* storage )
00096 { changeTimes( minutes, minutes, do_logging, storage); };
00097
00111 void changeTimes( long minutesSession, long minutes, bool do_logging,
00112 KarmStorage* storage=0);
00113
00119 void changeTotalTimes( long minutesSession, long minutes );
00120
00124 void resetTimes();
00125
00129 long time() const { return _time; };
00130 long totalTime() const { return _totalTime; };
00131 long sessionTime() const { return _sessionTime; };
00132 long totalSessionTime() const { return _totalSessionTime; };
00133
00137 QDateTime startTime() const { return _lastStart; };
00138
00140 void startNewSession() { changeTimes( -_sessionTime, 0, false); };
00142
00144
00145 void setDesktopList ( DesktopList dl );
00146 DesktopList getDesktops() const { return _desktops;}
00147
00148 QString getDesktopStr() const;
00150
00152
00156 void setName( const QString& name, KarmStorage* storage );
00157
00161 QString name() const { return _name; };
00162
00168 QString fullName() const;
00170
00172 void update();
00173
00175
00178 void setRunning(bool on, KarmStorage* storage);
00179
00183 bool isRunning() const;
00185
00186 bool parseIncidence(KCal::Incidence*, long& minutes,
00187 long& sessionMinutes, QString& name, DesktopList& desktops,
00188 int& percent_complete);
00189
00193 KCal::Todo* asTodo(KCal::Todo* calendar) const;
00194
00196 void addComment( QString comment, KarmStorage* storage );
00197
00199 QString comment() const;
00200
00202 bool isRoot() const { return parent() == 0; }
00203
00208 bool remove( QPtrList<Task>& activeTasks, KarmStorage* storage );
00209
00217 void setPercentComplete(const int percent, KarmStorage *storage);
00218
00220 bool isComplete();
00221
00223 void removeFromView();
00224
00225 protected:
00226 void changeParentTotalTimes( long minutesSession, long minutes );
00227
00228 signals:
00229 void totalTimesChanged( long minutesSession, long minutes);
00231 void deletingTask(Task* thisTask);
00232
00233 protected slots:
00235 void updateActiveIcon();
00236
00237 private:
00238
00240 QString _uid;
00241
00243 QString _comment;
00244
00245 int _percentcomplete;
00246
00247 long totalTimeInSeconds() const { return _totalTime * 60; }
00248
00250 void noNegativeTimes();
00251
00253 void init( const QString& taskame, long minutes, long sessionTime,
00254 DesktopList desktops, int percent_complete);
00255
00256
00258 QString _name;
00259
00261 QDateTime _lastStart;
00262
00264 long _totalTime;
00265 long _totalSessionTime;
00267
00269 long _time;
00270 long _sessionTime;
00272 DesktopList _desktops;
00273 QTimer *_timer;
00274 int _currentPic;
00275 static QPtrVector<QPixmap> *icons;
00276
00277 };
00278
00279 #endif // KARM_TASK_H
This file is part of the documentation for karm Library Version 3.2.2.