karm

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   
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