00001 #ifndef PROJECT_H
00002 #define PROJECT_H
00003 
00004 #include "storabledata.h"
00005 #include "task.h"
00006 
00007 #include <tools/global.h>
00008 
00009 #include <QString>
00010 
00011 namespace domain
00012 {
00013 
00014 struct ProjectPrivate;
00015 
00024 class DOMAIN_EXPORT Project : public StorableData
00025 {
00026         Q_OBJECT
00027 
00028         friend class TaskManagerData;
00029         friend class Task;
00030 
00031     public:
00032 
00036         const QString& description() const;
00037 
00041         QList<const Task*> tasks() const;
00042 
00049         void setDescription(const QString& description);
00050 
00054         QList<StorableData*> dependentData() const;
00055 
00056     private:
00057 
00063         Project(const QString& description);
00064 
00068         ~Project();
00069 
00070         Project(const Project& other);
00071         Project& operator=(const Project& other);
00072 
00076         void addTask(Task* task);
00077 
00081         void removeTask(Task* task);
00082 
00083         ProjectPrivate* const d;
00084 };
00085 }
00086 
00087 #endif