Models registry was added

This commit is contained in:
2023-04-11 09:42:27 +02:00
parent 4a52926be9
commit 4ed4ecd429
17 changed files with 183 additions and 91 deletions

View File

@@ -0,0 +1,23 @@
#include "modelsregister.h"
#include "models/basemodel.h"
void ModelsRegister::registerModel(BaseModel *model)
{
Q_ASSERT(model != nullptr);
model->setParent(&instance()->m_parent);
instance()->m_models[model->entity()] = model;
}
BaseModel *ModelsRegister::model(const QString &name)
{
Q_ASSERT(!name.isEmpty());
if (!instance()->m_models.contains(name)) {
registerModel(new BaseModel(name, &instance()->m_parent));
}
return instance()->m_models.value(name);
}

28
services/modelsregister.h Normal file
View File

@@ -0,0 +1,28 @@
#ifndef MODELSREGISTER_H
#define MODELSREGISTER_H
#include <QMap>
#include <QObject>
class BaseModel;
class ModelsRegister
{
public:
static ModelsRegister *instance()
{
static ModelsRegister i;
return &i;
}
static void registerModel(BaseModel *model);
static BaseModel *model(const QString &name);
private:
ModelsRegister() = default;
~ModelsRegister() = default;
QObject m_parent;
QMap<QString, BaseModel *> m_models;
};
#endif // MODELSREGISTER_H