00001 #ifndef DATAPROJECT_H 00002 #define DATAPROJECT_H 00003 00004 #include <QObject> 00005 #include <QList> 00006 #include <QDateTime> 00007 #include <QString> 00008 #include <QDomDocument> 00009 #include "datachapter.h" 00010 #include "dataaccount.h" 00011 #include "datafolderhistory.h" 00012 #include "datadefinitions.h" 00013 00015 00022 class DataProject: public QObject 00023 { 00024 Q_OBJECT 00025 00026 public: 00027 QList<DataChapter *> getChapters() { return chapters; } 00028 QList<DataTableAccount *> getAccounts() { return accountList; } 00029 QList<DataFolderHistory *> getChangeHistory() { return changeHistory; } 00030 DataExercise* exercise(const QString &chapter, const QString &exercise) const; 00031 DataChapter* chapter(const QString &name) const; 00032 void addChapter(DataChapter *chapter) { chapters.append(chapter); } 00033 00034 void addTableAccount(DataTableAccount *acc) { accountList.append(acc); } 00035 void clearTableAccount() { accountList.clear(); } 00036 00037 // set type of project (exercise || task) 00038 void setProjectType(FileType::Type type); 00039 FileType::Type projectType(); 00040 00042 unsigned int hash(); 00044 bool loadXml(const QString &path); 00046 bool saveXml(const QString &path); 00047 00048 bool hasChanged() { return changed; } 00049 00050 DataProject(); 00051 ~DataProject(); 00052 00053 public slots: 00054 void dataChanged(); 00055 00056 signals: 00057 void error(DataError code, QString description); 00058 00059 private: 00060 bool changed; 00061 FileType::Type p_projectType; 00062 QList<DataChapter *> chapters; 00063 QList<DataTableAccount *> accountList; 00064 00066 QList<DataFolderHistory *> changeHistory; 00067 00068 QDomElement createTextElement(QDomDocument *xml, const QString &tagName, const QString &content); 00069 QString addFileExtension(QString path); 00070 }; 00071 00072 #endif // DATAPROJECT_H