karm

task.h

00001 #ifndef KARM_TASK_H
00002 #define KARM_TASK_H
00003 
00004 // Required b/c QPtrList is a struct, not a class.
00005 #include <qptrlist.h>
00006 
00007 // Requred b/c/ QPtrVector is a template (?)
00008 #include <qptrvector.h>
00009 
00010 #include <qdatetime.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 QListView?)
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     /* destructor */
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
KDE Home | KDE Accessibility Home | Description of Access Keys