ComponentManager.cpp 2.4 KB

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