task.h
00001 #ifndef KARM_TASK_H 00002 #define KARM_TASK_H 00003 00004 // Required b/c TQPtrList is a struct, not a class. 00005 #include <tqptrlist.h> 00006 00007 // Requred b/c/ TQPtrVector is a template (?) 00008 #include <tqptrvector.h> 00009 00010 #include <tqdatetime.h> 00011 00012 // Required b/c DesktopList is a typedef not a class. 00013 #include "desktoplist.h" 00014 00015 // Required b/c of static cast below? (How else can compiler know that a 00016 // TaskView is a subclass or TQListView?) 00017 #include "taskview.h" 00018 00019 class TQFile; 00020 class TQString; 00021 class KarmStorage; 00022 00023 class TQTimer; 00024 class TQObject; 00025 class TQPixmap; 00026 00028 00041 class Task : public TQObject, public TQListViewItem 00042 { 00043 Q_OBJECT 00044 TQ_OBJECT 00045 00046 public: 00048 Task( const TQString& taskame, long minutes, long sessionTime, 00049 DesktopList desktops, TaskView* parent = 0); 00050 Task( const TQString& taskame, long minutes, long sessionTime, 00051 DesktopList desktops, Task* parent = 0); 00052 Task( KCal::Todo* incident, TaskView* parent ); 00054 /* destructor */ 00055 ~Task(); 00056 00060 Task* firstChild() const { return (Task*)TQListViewItem::firstChild(); } 00061 Task* nextSibling() const { return (Task*)TQListViewItem::nextSibling(); } 00062 Task* parent() const { return (Task*)TQListViewItem::parent(); } 00063 00065 TaskView* taskView() const { 00066 return static_cast<TaskView *>( listView() ); 00067 } 00068 00070 TQString uid() const { return _uid; } 00071 00079 void setUid(const TQString uid); 00080 00082 void cut(); 00085 void move(Task* destination); 00087 void paste(Task* destination); 00088 00090 int compare ( TQListViewItem * i, int col, bool ascending ) const; 00091 00093 00101 void changeTime( long minutes, KarmStorage* storage ); 00102 00111 void changeTimes 00112 ( long minutesSession, long minutes, 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 TQDateTime startTime() const { return _lastStart; }; 00138 00140 void startNewSession() { changeTimes( -_sessionTime, 0 ); }; 00142 00144 00145 void setDesktopList ( DesktopList dl ); 00146 DesktopList getDesktops() const { return _desktops;} 00147 00148 TQString getDesktopStr() const; 00150 00152 00157 void setName( const TQString& name, KarmStorage* storage ); 00158 00162 TQString name() const { return _name; }; 00163 00169 TQString fullName() const; 00171 00173 void update(); 00174 00176 00185 void setRunning( bool on, KarmStorage* storage, TQDateTime whenStarted=TQDateTime::currentDateTime(), TQDateTime whenStopped=TQDateTime::currentDateTime()); 00186 00190 bool isRunning() const; 00192 00193 bool parseIncidence(KCal::Incidence*, long& minutes, 00194 long& sessionMinutes, TQString& name, DesktopList& desktops, 00195 int& percent_complete); 00196 00200 KCal::Todo* asTodo(KCal::Todo* calendar) const; 00201 00203 void addComment( TQString comment, KarmStorage* storage ); 00204 00206 TQString comment() const; 00207 00209 bool isRoot() const { return parent() == 0; } 00210 00215 bool remove( TQPtrList<Task>& activeTasks, KarmStorage* storage ); 00216 00224 void setPercentComplete(const int percent, KarmStorage *storage); 00225 00226 00229 void setPixmapProgress(); 00230 00232 bool isComplete(); 00233 00235 void removeFromView(); 00236 00238 TQDateTime lastStart() { return _lastStart; } 00239 00240 protected: 00241 void changeParentTotalTimes( long minutesSession, long minutes ); 00242 00243 signals: 00244 void totalTimesChanged( long minutesSession, long minutes); 00246 void deletingTask(Task* thisTask); 00247 00248 protected slots: 00250 void updateActiveIcon(); 00251 00252 private: 00253 00255 TQString _uid; 00256 00258 TQString _comment; 00259 00260 int _percentcomplete; 00261 00262 long totalTimeInSeconds() const { return _totalTime * 60; } 00263 00265 void noNegativeTimes(); 00266 00268 void init( const TQString& taskame, long minutes, long sessionTime, 00269 DesktopList desktops, int percent_complete); 00270 00271 00273 TQString _name; 00274 00276 TQDateTime _lastStart; 00277 00279 long _totalTime; 00280 long _totalSessionTime; 00282 00284 long _time; 00285 long _sessionTime; 00287 DesktopList _desktops; 00288 TQTimer *_timer; 00289 int _currentPic; 00290 static TQPtrVector<TQPixmap> *icons; 00291 00293 bool _removing; 00294 00295 }; 00296 00297 #endif // KARM_TASK_H