task.h
00001 #ifndef KARM_TASK_H
00002 #define KARM_TASK_H
00003
00004
00005 #include <qptrlist.h>
00006
00007
00008 #include <qptrvector.h>
00009
00010
00011 #include "desktoplist.h"
00012
00013
00014
00015 #include "taskview.h"
00016
00017 class QFile;
00018 class QString;
00019 class KarmStorage;
00020
00021 class QTimer;
00022 class KCal::Incidence;
00023 class KCal::Todo;
00024 class QObject;
00025 class QPixmap;
00026
00028
00041 class Task : public QObject, public QListViewItem
00042 {
00043 Q_OBJECT
00044
00045 public:
00047 Task( const QString& taskame, long minutes, long sessionTime,
00048 DesktopList desktops, TaskView* parent = 0);
00049 Task( const QString& taskame, long minutes, long sessionTime,
00050 DesktopList desktops, Task* parent = 0);
00051 Task( KCal::Todo* incident, TaskView* parent );
00053
00054 ~Task();
00055
00059 Task* firstChild() const { return (Task*)QListViewItem::firstChild(); }
00060 Task* nextSibling() const { return (Task*)QListViewItem::nextSibling(); }
00061 Task* parent() const { return (Task*)QListViewItem::parent(); }
00062
00064 TaskView* taskView() const {
00065 return static_cast<TaskView *>( listView() );
00066 }
00067
00069 QString uid() const { return _uid; }
00070
00078 void setUid(const QString uid);
00079
00081 void cut();
00084 void move(Task* destination);
00086 void paste(Task* destination);
00087
00089 int compare ( QListViewItem * i, int col, bool ascending ) const;
00090
00092
00100 void changeTime( long minutes, KarmStorage* storage );
00101
00110 void changeTimes
00111 ( long minutesSession, long minutes, KarmStorage* storage=0);
00112
00118 void changeTotalTimes( long minutesSession, long minutes );
00119
00123 void resetTimes();
00124
00128 long time() const { return _time; };
00129 long totalTime() const { return _totalTime; };
00130 long sessionTime() const { return _sessionTime; };
00131 long totalSessionTime() const { return _totalSessionTime; };
00132
00136 QDateTime startTime() const { return _lastStart; };
00137
00139 void startNewSession() { changeTimes( -_sessionTime, 0 ); };
00141
00143
00144 void setDesktopList ( DesktopList dl );
00145 DesktopList getDesktops() const { return _desktops;}
00146
00147 QString getDesktopStr() const;
00149
00151
00155 void setName( const QString& name, KarmStorage* storage );
00156
00160 QString name() const { return _name; };
00161
00167 QString fullName() const;
00169
00171 void update();
00172
00174
00177 void setRunning(bool on, KarmStorage* storage);
00178
00182 bool isRunning() const;
00184
00185 bool parseIncidence(KCal::Incidence*, long& minutes,
00186 long& sessionMinutes, QString& name, DesktopList& desktops,
00187 int& percent_complete);
00188
00192 KCal::Todo* asTodo(KCal::Todo* calendar) const;
00193
00195 void addComment( QString comment, KarmStorage* storage );
00196
00198 QString comment() const;
00199
00201 bool isRoot() const { return parent() == 0; }
00202
00207 bool remove( QPtrList<Task>& activeTasks, KarmStorage* storage );
00208
00216 void setPercentComplete(const int percent, KarmStorage *storage);
00217
00219 bool isComplete();
00220
00222 void removeFromView();
00223
00224 protected:
00225 void changeParentTotalTimes( long minutesSession, long minutes );
00226
00227 signals:
00228 void totalTimesChanged( long minutesSession, long minutes);
00230 void deletingTask(Task* thisTask);
00231
00232 protected slots:
00234 void updateActiveIcon();
00235
00236 private:
00237
00239 QString _uid;
00240
00242 QString _comment;
00243
00244 int _percentcomplete;
00245
00246 long totalTimeInSeconds() const { return _totalTime * 60; }
00247
00249 void noNegativeTimes();
00250
00252 void init( const QString& taskame, long minutes, long sessionTime,
00253 DesktopList desktops, int percent_complete);
00254
00255
00257 QString _name;
00258
00260 QDateTime _lastStart;
00261
00263 long _totalTime;
00264 long _totalSessionTime;
00266
00268 long _time;
00269 long _sessionTime;
00271 DesktopList _desktops;
00272 QTimer *_timer;
00273 int _currentPic;
00274 static QPtrVector<QPixmap> *icons;
00275
00277 bool _removing;
00278
00279 };
00280
00281 #endif // KARM_TASK_H
This file is part of the documentation for karm Library Version 3.3.2.