#ifndef QTMVVM_INPUTWIDGETFACTORY_H #define QTMVVM_INPUTWIDGETFACTORY_H #include #include #include #include "QtMvvmWidgets/qtmvvmwidgets_global.h" namespace QtMvvm { class InputWidgetFactoryPrivate; class InputWidgetFactory { public: InputWidgetFactory(); virtual ~InputWidgetFactory(); virtual QWidget *createInput(const QByteArray &type, QWidget *parent, const QVariantMap &viewProperties); virtual void addSimpleWidget(const QByteArray &type, const std::function &creator); template inline void addSimpleWidget(); virtual void addAlias(const QByteArray &alias, const QByteArray &targetType); template inline void addAlias(); private: QScopedPointer d; }; template inline void InputWidgetFactory::addSimpleWidget() { addSimpleWidget(QMetaType::typeName(qMetaTypeId()), [](QWidget *parent){ return new TWidget(parent); }); } template inline void InputWidgetFactory::addAlias() { addAlias(QMetaType::typeName(qMetaTypeId()), QMetaType::typeName(qMetaTypeId())); } } #endif // QTMVVM_INPUTWIDGETFACTORY_H