knxdisplay/main/widgets/WidgetFactory.cpp
2026-02-01 20:49:09 +01:00

47 lines
1.6 KiB
C++

#include "WidgetFactory.hpp"
#include "LabelWidget.hpp"
#include "ButtonWidget.hpp"
#include "LedWidget.hpp"
#include "IconWidget.hpp"
#include "TabViewWidget.hpp"
#include "TabPageWidget.hpp"
#include "PowerFlowWidget.hpp"
#include "PowerNodeWidget.hpp"
#include "PowerLinkWidget.hpp"
#include "ChartWidget.hpp"
#include "ClockWidget.hpp"
#include "RoomCardWidget.hpp"
std::unique_ptr<Widget> WidgetFactory::create(const WidgetConfig& config) {
if (!config.visible) return nullptr;
switch (config.type) {
case WidgetType::LABEL:
return std::make_unique<LabelWidget>(config);
case WidgetType::BUTTON:
return std::make_unique<ButtonWidget>(config);
case WidgetType::LED:
return std::make_unique<LedWidget>(config);
case WidgetType::ICON:
return std::make_unique<IconWidget>(config);
case WidgetType::TABVIEW:
return std::make_unique<TabViewWidget>(config);
case WidgetType::TABPAGE:
return std::make_unique<TabPageWidget>(config);
case WidgetType::POWERFLOW:
return std::make_unique<PowerFlowWidget>(config);
case WidgetType::POWERNODE:
return std::make_unique<PowerNodeWidget>(config);
case WidgetType::POWERLINK:
return std::make_unique<PowerLinkWidget>(config);
case WidgetType::CHART:
return std::make_unique<ChartWidget>(config);
case WidgetType::CLOCK:
return std::make_unique<ClockWidget>(config);
case WidgetType::ROOMCARD:
return std::make_unique<RoomCardWidget>(config);
default:
return nullptr;
}
}