#include "DataSourceItemBuilder.h" DataSourceItemBuilder &DataSourceItemBuilder::root(const QString &name) { m_Root = std::make_shared(DataSourceItemType::NODE, name); m_Items.push(m_Root.get()); return *this; } DataSourceItemBuilder &DataSourceItemBuilder::root(QVariantHash data) { m_Root = std::make_shared(DataSourceItemType::NODE, data); m_Items.push(m_Root.get()); return *this; } DataSourceItemBuilder &DataSourceItemBuilder::node(const QString &name) { return append(DataSourceItemType::NODE, name); } DataSourceItemBuilder &DataSourceItemBuilder::node(QVariantHash data) { return append(DataSourceItemType::NODE, std::move(data)); } DataSourceItemBuilder &DataSourceItemBuilder::product(const QString &name) { return append(DataSourceItemType::PRODUCT, name); } DataSourceItemBuilder &DataSourceItemBuilder::product(QVariantHash data) { return append(DataSourceItemType::PRODUCT, std::move(data)); } DataSourceItemBuilder &DataSourceItemBuilder::component(const QString &name) { return append(DataSourceItemType::COMPONENT, name); } DataSourceItemBuilder &DataSourceItemBuilder::component(QVariantHash data) { return append(DataSourceItemType::COMPONENT, std::move(data)); } DataSourceItemBuilder &DataSourceItemBuilder::end() { m_Items.pop(); return *this; } std::shared_ptr DataSourceItemBuilder::build() { return m_Root; } DataSourceItemBuilder &DataSourceItemBuilder::append(DataSourceItemType type, const QString &name) { append(type, QVariantHash{{DataSourceItem::NAME_DATA_KEY, name}}); return *this; } DataSourceItemBuilder &DataSourceItemBuilder::append(DataSourceItemType type, QVariantHash data) { auto parentItem = m_Items.top(); auto insertIndex = parentItem->childCount(); parentItem->appendChild(std::make_unique(type, std::move(data))); m_Items.push(parentItem->child(insertIndex)); return *this; }