Files
beerlog/services/modelsregister.h
2023-04-13 17:57:27 +02:00

36 lines
691 B
C++

#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);
template <class C>
static C *get(const QString &name) {
C *res = dynamic_cast<C *>(instance()->m_models.value(name));
Q_ASSERT(res);
return res;
}
private:
ModelsRegister() = default;
~ModelsRegister() = default;
QObject m_parent;
QMap<QString, BaseModel *> m_models;
};
#endif // MODELSREGISTER_H