36 lines
691 B
C++
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
|