karm
task.h00001 #ifndef KARM_TASK_H
00002 #define KARM_TASK_H
00003
00004
00005 #include <tqptrlist.h>
00006
00007
00008 #include <tqptrvector.h>
00009
00010 #include <tqdatetime.h>
00011
00012
00013 #include "desktoplist.h"
00014
00015
00016
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
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
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
|