diff --git a/core/include/DataSource/DataSourceItem.h b/core/include/DataSource/DataSourceItem.h index 2f71ec6..193a495 100644 --- a/core/include/DataSource/DataSourceItem.h +++ b/core/include/DataSource/DataSourceItem.h @@ -7,6 +7,11 @@ #include /** + * Possible types of an item + */ +enum class DataSourceItemType { NODE, PRODUCT }; + +/** * @brief The DataSourceItem class aims to represent a structure element of a data source. * A data source has a tree structure that is made up of a main DataSourceItem object (root) * containing other DataSourceItem objects (children). @@ -14,7 +19,7 @@ */ class DataSourceItem { public: - explicit DataSourceItem(QVector data = {}); + explicit DataSourceItem(DataSourceItemType type, QVector data = {}); /** * Adds a child to the item. The item takes ownership of the child. @@ -44,6 +49,8 @@ public: */ DataSourceItem *parentItem() const noexcept; + DataSourceItemType type() const noexcept; + private: class DataSourceItemPrivate; spimpl::unique_impl_ptr impl; diff --git a/core/src/DataSource/DataSourceItem.cpp b/core/src/DataSource/DataSourceItem.cpp index 2d7e242..43c884b 100644 --- a/core/src/DataSource/DataSourceItem.cpp +++ b/core/src/DataSource/DataSourceItem.cpp @@ -3,18 +3,19 @@ #include struct DataSourceItem::DataSourceItemPrivate { - explicit DataSourceItemPrivate(QVector data) - : m_Parent{nullptr}, m_Children{}, m_Data{std::move(data)} + explicit DataSourceItemPrivate(DataSourceItemType type, QVector data) + : m_Parent{nullptr}, m_Children{}, m_Type{type}, m_Data{std::move(data)} { } DataSourceItem *m_Parent; std::vector > m_Children; + DataSourceItemType m_Type; QVector m_Data; }; -DataSourceItem::DataSourceItem(QVector data) - : impl{spimpl::make_unique_impl(data)} +DataSourceItem::DataSourceItem(DataSourceItemType type, QVector data) + : impl{spimpl::make_unique_impl(type, std::move(data))} { } @@ -48,3 +49,8 @@ DataSourceItem *DataSourceItem::parentItem() const noexcept { return impl->m_Parent; } + +DataSourceItemType DataSourceItem::type() const noexcept +{ + return impl->m_Type; +} diff --git a/core/tests/DataSource/TestDataSourceController.cpp b/core/tests/DataSource/TestDataSourceController.cpp index 03279dc..a8c0a24 100644 --- a/core/tests/DataSource/TestDataSourceController.cpp +++ b/core/tests/DataSource/TestDataSourceController.cpp @@ -31,7 +31,8 @@ void TestDataSourceController::testSetDataSourceItem() // Create a data source item auto source1Name = QStringLiteral("Source1"); auto source1Values = QVector{source1Name}; - auto source1Item = std::make_unique(std::move(source1Values)); + auto source1Item + = std::make_unique(DataSourceItemType::PRODUCT, std::move(source1Values)); // Add data source item to the controller and check that a signal has been emitted after setting // data source item in the controller @@ -41,7 +42,8 @@ void TestDataSourceController::testSetDataSourceItem() // Try to a data source item with an unregistered uid and check that no signal has been emitted auto unregisteredUid = QUuid::createUuid(); - dataSourceController.setDataSourceItem(unregisteredUid, std::make_unique()); + dataSourceController.setDataSourceItem( + unregisteredUid, std::make_unique(DataSourceItemType::PRODUCT)); QCOMPARE(signalSpy.count(), 1); }