karm
task.h00001 #ifndef KARM_TASK_H
00002 #define KARM_TASK_H
00003
00004
00005 #include <qptrlist.h>
00006
00007
00008 #include <qptrvector.h>
00009
00010 #include <qdatetime.h>
00011
00012
00013 #include "desktoplist.h"
00014
00015
00016
00017 #include "taskview.h"
00018
00019 class QFile;
00020 class QString;
00021 class KarmStorage;
00022
00023 class QTimer;
00024 class KCal::Incidence;
00025 class KCal::Todo;
00026 class QObject;
00027 class QPixmap;
00028
00030
00043 class Task : public QObject, public QListViewItem
00044 {
00045 Q_OBJECT
00046
00047 public:
00049 Task( const QString& taskame, long minutes, long sessionTime,
00050 DesktopList desktops, TaskView* parent = 0);
00051 Task( const QString& taskame, long minutes, long sessionTime,
00052 DesktopList desktops, Task* parent = 0);
00053 Task( KCal::Todo* incident, TaskView* parent );
00055
00056 ~Task();
00057
00061 Task* firstChild() const { return (Task*)QListViewItem::firstChild(); }
00062 Task* nextSibling() const { return (Task*)QListViewItem::nextSibling(); }
00063 Task* parent() const { return (Task*)QListViewItem::parent(); }
00064
00066 TaskView* taskView() const {
00067 return static_cast<TaskView *>( listView() );
00068 }
00069
00071 QString uid() const { return _uid; }
00072
00080 void setUid(const QString uid);
00081
00083 void cut();
00086 void move(Task* destination);
00088 void paste(Task* destination);
00089
00091 int compare ( QListViewItem * i, int col, bool ascending ) const;
00092
00094
00102 void changeTime( long minutes, KarmStorage* storage );
00103
00112 void changeTimes
00113 ( long minutesSession, long minutes, KarmStorage* storage=0);
00114
00120 void changeTotalTimes( long minutesSession, long minutes );
00121
00125 void resetTimes();
00126
00130 long time() const { return _time; };
00131 long totalTime() const { return _totalTime; };
00132 long sessionTime() const { return _sessionTime; };
00133 long totalSessionTime() const { return _totalSessionTime; };
00134
00138 QDateTime startTime() const { return _lastStart; };
00139
00141 void startNewSession() { changeTimes( -_sessionTime, 0 ); };
00143
00145
00146 void setDesktopList ( DesktopList dl );
00147 DesktopList getDesktops() const { return _desktops;}
00148
00149 QString getDesktopStr() const;
00151
00153
00158 void setName( const QString& name, KarmStorage* storage );
00159
00163 QString name() const { return _name; };
00164
00170 QString fullName() const;
00172
00174 void update();
00175
00177
00186 void setRunning( bool on, KarmStorage* storage, QDateTime whenStarted=QDateTime::currentDateTime(), QDateTime whenStopped=QDateTime::currentDateTime());
00187
00191 bool isRunning() const;
00193
00194 bool parseIncidence(KCal::Incidence*, long& minutes,
00195 long& sessionMinutes, QString& name, DesktopList& desktops,
00196 int& percent_complete);
00197
00201 KCal::Todo* asTodo(KCal::Todo* calendar) const;
00202
00204 void addComment( QString comment, KarmStorage* storage );
00205
00207 QString comment() const;
00208
00210 bool isRoot() const { return parent() == 0; }
00211
00216 bool remove( QPtrList<Task>& activeTasks, KarmStorage* storage );
00217
00225 void setPercentComplete(const int percent, KarmStorage *storage);
00226
00227
00230 void setPixmapProgress();
00231
00233 bool isComplete();
00234
00236 void removeFromView();
00237
00239 QDateTime lastStart() { return _lastStart; }
00240
00241 protected:
00242 void changeParentTotalTimes( long minutesSession, long minutes );
00243
00244 signals:
00245 void totalTimesChanged( long minutesSession, long minutes);
00247 void deletingTask(Task* thisTask);
00248
00249 protected slots:
00251 void updateActiveIcon();
00252
00253 private:
00254
00256 QString _uid;
00257
00259 QString _comment;
00260
00261 int _percentcomplete;
00262
00263 long totalTimeInSeconds() const { return _totalTime * 60; }
00264
00266 void noNegativeTimes();
00267
00269 void init( const QString& taskame, long minutes, long sessionTime,
00270 DesktopList desktops, int percent_complete);
00271
00272
00274 QString _name;
00275
00277 QDateTime _lastStart;
00278
00280 long _totalTime;
00281 long _totalSessionTime;
00283
00285 long _time;
00286 long _sessionTime;
00288 DesktopList _desktops;
00289 QTimer *_timer;
00290 int _currentPic;
00291 static QPtrVector<QPixmap> *icons;
00292
00294 bool _removing;
00295
00296 };
00297
00298 #endif // KARM_TASK_H
|