diff --git a/core/include/DataSource/DataSourceItem.h b/core/include/DataSource/DataSourceItem.h index 37bee42..d72683f 100644 --- a/core/include/DataSource/DataSourceItem.h +++ b/core/include/DataSource/DataSourceItem.h @@ -59,6 +59,8 @@ public: */ QVariant data(const QString &key) const noexcept; + bool isRoot() const noexcept; + QString name() const noexcept; /** diff --git a/core/src/DataSource/DataSourceItem.cpp b/core/src/DataSource/DataSourceItem.cpp index 0b5c182..0144f3b 100644 --- a/core/src/DataSource/DataSourceItem.cpp +++ b/core/src/DataSource/DataSourceItem.cpp @@ -70,6 +70,11 @@ QVariant DataSourceItem::data(const QString &key) const noexcept return impl->m_Data.value(key); } +bool DataSourceItem::isRoot() const noexcept +{ + return impl->m_Parent == nullptr; +} + QString DataSourceItem::name() const noexcept { return data(NAME_DATA_KEY).toString(); diff --git a/gui/resources/icones/dataSourceRoot.png b/gui/resources/icones/dataSourceRoot.png new file mode 100644 index 0000000000000000000000000000000000000000..df0a89a083ea6d79fc08ed2acbfaf7bf4be618c5 GIT binary patch literal 4821 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 literal 0 Hc$@icones/dataSourceComponent.png icones/dataSourceNode.png icones/dataSourceProduct.png + icones/dataSourceRoot.png icones/delete.png icones/openInspector.png icones/next.png diff --git a/gui/src/DataSource/DataSourceTreeWidgetItem.cpp b/gui/src/DataSource/DataSourceTreeWidgetItem.cpp index f0629ca..e558105 100644 --- a/gui/src/DataSource/DataSourceTreeWidgetItem.cpp +++ b/gui/src/DataSource/DataSourceTreeWidgetItem.cpp @@ -16,8 +16,10 @@ QIcon itemIcon(const DataSourceItem *dataSource) if (dataSource) { auto dataSourceType = dataSource->type(); switch (dataSourceType) { - case DataSourceItemType::NODE: - return QIcon{":/icones/dataSourceNode.png"}; + case DataSourceItemType::NODE: { + return dataSource->isRoot() ? QIcon{":/icones/dataSourceRoot.png"} + : QIcon{":/icones/dataSourceNode.png"}; + } case DataSourceItemType::PRODUCT: return QIcon{":/icones/dataSourceProduct.png"}; case DataSourceItemType::COMPONENT: @@ -31,7 +33,7 @@ QIcon itemIcon(const DataSourceItem *dataSource) << QObject::tr("Can't set data source icon : unknown data source type"); } else { - qCWarning(LOG_DataSourceTreeWidgetItem()) + qCCritical(LOG_DataSourceTreeWidgetItem()) << QObject::tr("Can't set data source icon : the data source is null"); }