Models registry was added
This commit is contained in:
23
services/modelsregister.cpp
Normal file
23
services/modelsregister.cpp
Normal 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
28
services/modelsregister.h
Normal 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
|
||||
Reference in New Issue
Block a user