#ifndef QQuickDetailsViewManager_h__ #define QQuickDetailsViewManager_h__ #include #include #include #include #include #include #include "IPropertyTypeCustomization.h" #include "export.hpp" class QPropertyHandle; class DIAGRAM_DESIGNER_PUBLIC QQuickDetailsViewManager : public QObject{ public: using PropertyTypeCustomizationCreator = std::function()>; using TypeEditorCreator = std::function; static QQuickDetailsViewManager* Get(); void initialize(); bool isInitialized() const; template void registerPropertyTypeCustomization() { QMetaType metaType = QMetaType::fromType(); if (metaType.metaObject()) { mClassCustomizationMap.insert(metaType.metaObject(), []() { return QSharedPointer::create(); }); } else { mMetaTypeCustomizationMap.insert(metaType, []() { return QSharedPointer::create(); }); } } void unregisterPropertyTypeCustomization(const QMetaType& inMetaType); void registerTypeEditor(const QMetaType& inMetaType, TypeEditorCreator Creator); void unregisterTypeEditor(const QMetaType& inMetaType); QQuickItem* createValueEditor(QPropertyHandle* inHandle, QQuickItem* parent); QSharedPointer getCustomPropertyType(QPropertyHandle* inHandle); protected: QQuickDetailsViewManager(); void RegisterBasicTypeEditor(); private: bool mInitialized = false; QHash mClassCustomizationMap; QHash mMetaTypeCustomizationMap; QHash mTypeEditorCreatorMap; }; #endif // QQuickDetailsViewManager_h__