diff --git a/source/DataModel.cpp b/source/DataModel.cpp index 7d7d996..ada23b5 100644 --- a/source/DataModel.cpp +++ b/source/DataModel.cpp @@ -3,6 +3,7 @@ DataModel::DataModel(QObject *parent) : QObject(parent) , m_metaData(this) + , m_genus(this) { } @@ -11,6 +12,10 @@ void DataModel::write(QJsonObject &target) const QJsonObject metaData; m_metaData.write(metaData); target["MetaData"] = metaData; + + QJsonObject genus; + m_genus.write(genus); + target["Genus"] = genus; } void DataModel::read(const QJsonObject &source) diff --git a/source/DataModel.h b/source/DataModel.h index 34258f0..7e271bf 100644 --- a/source/DataModel.h +++ b/source/DataModel.h @@ -1,6 +1,7 @@ #pragma once #include "MetaData/MetaDataModel.h" +#include "Genus/GenusModel.h" #include @@ -10,6 +11,7 @@ class DataModel : public QObject public: MetaDataModel m_metaData; + GenusModel m_genus; public: DataModel(QObject *parent); diff --git a/source/Genus/GenusModel.cpp b/source/Genus/GenusModel.cpp index 4943bd7..bf41b70 100644 --- a/source/Genus/GenusModel.cpp +++ b/source/Genus/GenusModel.cpp @@ -2,6 +2,15 @@ #include +void CheckableItems::write(QJsonObject &json) const +{ + for (const auto &pair : *this) + { + json[pair.second.getText().c_str()] = + pair.second.isChecked(); + } +} + GenusModel::GenusModel(QObject *parent) : QAbstractTableModel(parent) { @@ -104,6 +113,17 @@ QVariant GenusModel::headerData( void GenusModel::write(QJsonObject &json) const { + QJsonObject tiere; + m_tiere.write(tiere); + json["Tiere"] = tiere; + + QJsonObject futter; + m_futter.write(futter); + json["Futter"] = futter; + + QJsonObject zirkus; + m_zirkus.write(zirkus); + json["Zirkus"] = zirkus; } void GenusModel::read(const QJsonObject &json) @@ -125,7 +145,7 @@ bool GenusModel::isValidIndex(const QModelIndex &index) const } } -GenusModel::CheckableItems &GenusModel::getItems(const QModelIndex &index) +CheckableItems &GenusModel::getItems(const QModelIndex &index) { switch (index.row()) { @@ -142,8 +162,7 @@ GenusModel::CheckableItems &GenusModel::getItems(const QModelIndex &index) throw std::runtime_error("invalid index"); } -const GenusModel::CheckableItems &GenusModel::getItems( - const QModelIndex &index) const +const CheckableItems &GenusModel::getItems(const QModelIndex &index) const { switch (index.row()) { diff --git a/source/Genus/GenusModel.h b/source/Genus/GenusModel.h index fd11b8c..06f5856 100644 --- a/source/Genus/GenusModel.h +++ b/source/Genus/GenusModel.h @@ -30,16 +30,25 @@ public: } }; -#include #include +#include + +class CheckableItems : public std::map +{ + public: + using std::map::map; + + void write(QJsonObject &json) const; +}; + +#include + class GenusModel : public QAbstractTableModel { Q_OBJECT private: - using CheckableItems = std::map; - CheckableItems m_tiere = {{0, {"Tiger"}}, {1, {"Bär"}}, {2, {"Katze"}}, {3, {"Pferd"}}, {4, {"Gans"}}, {5, {"Elefant"}}, {6, {"Katze"}}, {7, {"Hund"}}};