ComponentManager.cpp 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include <QObject>
  2. #include <QtQml>
  3. #include <qqmlwebchannel.h>
  4. #include "ComponentManager.h"
  5. #include "power/PowerComponent.h"
  6. #include "server/HTTPServer.h"
  7. #include "input/InputComponent.h"
  8. #include "player/PlayerComponent.h"
  9. #include "display/DisplayComponent.h"
  10. #include "system/SystemComponent.h"
  11. #include "system/UpdaterComponent.h"
  12. #include "settings/SettingsComponent.h"
  13. #include "remote/RemoteComponent.h"
  14. #if KONVERGO_OPENELEC
  15. #include "system/openelec/OESystemComponent.h"
  16. #endif
  17. #include "QsLog.h"
  18. ///////////////////////////////////////////////////////////////////////////////////////////////////
  19. ComponentManager::ComponentManager() : QObject(0)
  20. {
  21. }
  22. ///////////////////////////////////////////////////////////////////////////////////////////////////
  23. void ComponentManager::registerComponent(ComponentBase* comp)
  24. {
  25. if (m_components.contains(comp->componentName()))
  26. {
  27. QLOG_ERROR() << "Component" << comp->componentName() << "already registered!";
  28. return;
  29. }
  30. if (comp->componentInitialize())
  31. {
  32. QLOG_INFO() << "Component:" << comp->componentName() << "inited";
  33. m_components[comp->componentName()] = comp;
  34. // define component as property for qml
  35. m_qmlProperyMap.insert(comp->componentName(), QVariant::fromValue(comp));
  36. }
  37. else
  38. {
  39. QLOG_ERROR() << "Failed to init component:" << comp->componentName();
  40. }
  41. }
  42. ///////////////////////////////////////////////////////////////////////////////////////////////////
  43. void ComponentManager::initialize()
  44. {
  45. // then settings, since all other components
  46. // might have some settings
  47. //
  48. registerComponent(&SettingsComponent::Get());
  49. registerComponent(&InputComponent::Get());
  50. registerComponent(&SystemComponent::Get());
  51. registerComponent(&DisplayComponent::Get());
  52. registerComponent(&UpdaterComponent::Get());
  53. registerComponent(&RemoteComponent::Get());
  54. registerComponent(&PlayerComponent::Get());
  55. registerComponent(&PowerComponent::Get());
  56. #if KONVERGO_OPENELEC
  57. registerComponent(&OESystemComponent::Get());
  58. #endif
  59. foreach(ComponentBase* component, m_components.values())
  60. component->componentPostInitialize();
  61. }
  62. /////////////////////////////////////////////////////////////////////////////////////////
  63. void ComponentManager::setWebChannel(QWebChannel* webChannel)
  64. {
  65. foreach(ComponentBase* comp, m_components.values())
  66. {
  67. if (comp->componentExport())
  68. {
  69. QLOG_DEBUG() << "Adding component:" << comp->componentName() << "to webchannel";
  70. webChannel->registerObject(comp->componentName(), comp);
  71. }
  72. }
  73. }