123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #include <QObject>
- #include <QtQml>
- #include <qqmlwebchannel.h>
- #include <QDebug>
- #include "ComponentManager.h"
- #include "power/PowerComponent.h"
- #include "input/InputComponent.h"
- #include "player/PlayerComponent.h"
- #include "display/DisplayComponent.h"
- #include "system/SystemComponent.h"
- #include "settings/SettingsComponent.h"
- #include "taskbar/TaskbarComponent.h"
- #if KONVERGO_OPENELEC
- #include "system/openelec/OESystemComponent.h"
- #endif
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- ComponentManager::ComponentManager() : QObject(nullptr)
- {
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- void ComponentManager::registerComponent(ComponentBase* comp)
- {
- if (m_components.contains(comp->componentName()))
- {
- qCritical() << "Component" << comp->componentName() << "already registered!";
- return;
- }
-
- if (comp->componentInitialize())
- {
- qInfo() << "Component:" << comp->componentName() << "inited";
- m_components[comp->componentName()] = comp;
- // define component as property for qml
- m_qmlProperyMap.insert(comp->componentName(), QVariant::fromValue(comp));
- }
- else
- {
- qCritical() << "Failed to init component:" << comp->componentName();
- }
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- void ComponentManager::initialize()
- {
- // then settings, since all other components
- // might have some settings
- //
- registerComponent(&SettingsComponent::Get());
- registerComponent(&InputComponent::Get());
- registerComponent(&SystemComponent::Get());
- registerComponent(&DisplayComponent::Get());
- registerComponent(&PlayerComponent::Get());
- registerComponent(&PowerComponent::Get());
- registerComponent(&TaskbarComponent::Get());
- #if KONVERGO_OPENELEC
- registerComponent(&OESystemComponent::Get());
- #endif
- for(ComponentBase* component : m_components.values())
- component->componentPostInitialize();
- }
- /////////////////////////////////////////////////////////////////////////////////////////
- void ComponentManager::setWebChannel(QWebChannel* webChannel)
- {
- for(ComponentBase* comp : m_components.values())
- {
- if (comp->componentExport())
- {
- qDebug() << "Adding component:" << comp->componentName() << "to webchannel";
- webChannel->registerObject(comp->componentName(), comp);
- }
- }
- }
|