00001 #ifndef DATAEXERCISE_H 00002 #define DATAEXERCISE_H 00003 00004 #include <QString> 00005 #include <QList> 00006 #include <QDomElement> 00007 #include <QDomDocument> 00008 #include <QObject> 00009 #include "dataaccountingrecord.h" 00010 #include "datadefinitions.h" 00011 #include "dataaccount.h" 00012 00014 00019 class DataExercise: public QObject 00020 { 00021 Q_OBJECT 00022 00023 public: 00024 QString name() { return exerciseName; } 00025 QString description() { return m_description; } 00026 uint id() { return exerciseId; } 00027 QList<DataAccount *> *accounts() { return &accountList; } 00028 QList<DataAccountingRecord *> *accountingRecords() { return &accountingRecordList; } 00029 QList<DataAccountingRecord *> *solutionRecords() { return &solutionAccountingRecordList; } 00030 DataExerciseStatus status() { return exerciseStatus; } 00031 void setExerciseId(uint id) { exerciseId = id; } 00032 void setStatus(DataExerciseStatus status) { exerciseStatus = status; emit changed(); } 00033 void setExerciseName(QString name) { exerciseName = name; emit changed(); } 00034 void setDescription(QString description) { m_description = description; emit changed(); } 00035 00037 void hash(unsigned int &startValue); 00039 bool loadDataNode(const QDomNode data); 00041 QDomElement saveDataNode(QDomDocument *xml); 00042 00043 DataExercise(); 00044 DataExercise(DataExercise &exercise); 00045 ~DataExercise(); 00046 00047 public slots: 00048 void dataChanged() { emit changed(); } 00049 00050 signals: 00051 void changed(); 00052 00053 private: 00054 QString exerciseName; 00055 uint exerciseId; 00056 QString m_description; 00057 QList<DataAccountingRecord *> accountingRecordList; 00058 // TODO by David: implement this in docs (remade solution to a QList, as it may as well contain more accounting records) 00059 QList<DataAccountingRecord *> solutionAccountingRecordList; 00060 // TODO: Implement this in the XML load/save module 00061 DataExerciseStatus exerciseStatus; 00062 QList<DataAccount *> accountList; 00063 00064 QString statusToString(DataExerciseStatus status); 00065 bool loadRecords(const QDomNode data, QList<DataAccountingRecord *> *targetList); 00066 void saveRecords(QDomDocument *xml, QDomElement *parent, QList<DataAccountingRecord *> *records); 00067 }; 00068 00069 #endif // DATAEXERCISE_H