2018-05-16 05:02:12 +00:00
|
|
|
#pragma once
|
|
|
|
|
2018-05-18 18:36:48 +00:00
|
|
|
#include "MetaData/MetaDataModel.h"
|
2018-06-04 16:23:51 +00:00
|
|
|
#include "GenusModel.h"
|
|
|
|
#include "VerbEndModel.h"
|
2018-06-04 16:48:58 +00:00
|
|
|
#include "PluralModel.h"
|
2018-05-16 05:02:12 +00:00
|
|
|
|
2018-06-06 16:05:30 +00:00
|
|
|
#include "ResultModel.h"
|
|
|
|
|
2018-05-16 05:02:12 +00:00
|
|
|
#include <QJsonObject>
|
|
|
|
|
|
|
|
class DataModel : public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
MetaDataModel m_metaData;
|
2018-05-23 16:43:57 +00:00
|
|
|
VerbEndModel m_verbEnd;
|
2018-05-22 18:23:03 +00:00
|
|
|
GenusModel m_genus;
|
2018-06-04 16:48:58 +00:00
|
|
|
PluralModel m_plural;
|
2018-05-16 05:02:12 +00:00
|
|
|
|
2018-06-06 16:05:30 +00:00
|
|
|
ResultModel m_results;
|
|
|
|
|
2018-05-16 05:02:12 +00:00
|
|
|
public:
|
|
|
|
DataModel(QObject *parent);
|
|
|
|
|
|
|
|
void write(QJsonObject &target) const;
|
|
|
|
void read(const QJsonObject &source);
|
2018-05-24 19:07:42 +00:00
|
|
|
|
|
|
|
private:
|
|
|
|
template <class ModelType>
|
|
|
|
void write(
|
|
|
|
const ModelType &model, QJsonObject &target, const char *name) const
|
|
|
|
{
|
|
|
|
QJsonObject jsonObject;
|
|
|
|
model.write(jsonObject);
|
|
|
|
target[name] = jsonObject;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <class ModelType>
|
|
|
|
void read(
|
|
|
|
ModelType &model, const QJsonObject &source, const char *name) const
|
|
|
|
{
|
|
|
|
const auto &jsonObject = source[name];
|
|
|
|
if (jsonObject.isObject())
|
|
|
|
{
|
|
|
|
model.read(jsonObject.toObject());
|
|
|
|
}
|
|
|
|
}
|
2018-06-08 18:25:21 +00:00
|
|
|
|
|
|
|
private slots:
|
|
|
|
void pluralModelChanged();
|
|
|
|
void metaDataChanged();
|
2018-05-16 05:02:12 +00:00
|
|
|
};
|