ComponentManager.h 905 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef __COMPONENT_MANAGER_H__
  2. #define __COMPONENT_MANAGER_H__
  3. #include <QObject>
  4. #include <QMap>
  5. #include <QQmlContext>
  6. #include <QQmlPropertyMap>
  7. #include <QWebChannel>
  8. #include "utils/Utils.h"
  9. #include "server/HTTPServer.h"
  10. class ComponentBase : public QObject
  11. {
  12. public:
  13. ComponentBase(QObject* parent = 0) : QObject(parent) { }
  14. virtual bool componentInitialize() = 0;
  15. virtual const char* componentName() = 0;
  16. virtual bool componentExport() = 0;
  17. };
  18. class ComponentManager : public QObject
  19. {
  20. Q_OBJECT
  21. DEFINE_SINGLETON(ComponentManager);
  22. public:
  23. void initialize();
  24. inline QQmlPropertyMap &getQmlPropertyMap() { return m_qmlProperyMap; }
  25. void setWebChannel(QWebChannel* webChannel);
  26. private:
  27. ComponentManager();
  28. void registerComponent(ComponentBase* comp);
  29. HttpServer* m_server;
  30. QMap<QString, ComponentBase*> m_components;
  31. QQmlPropertyMap m_qmlProperyMap;
  32. };
  33. #endif