diff --git a/gui/include/Catalogue/CatalogueTreeWidgetItem.h b/gui/include/Catalogue/CatalogueTreeWidgetItem.h index 8402d70..e4771dc 100644 --- a/gui/include/Catalogue/CatalogueTreeWidgetItem.h +++ b/gui/include/Catalogue/CatalogueTreeWidgetItem.h @@ -12,6 +12,8 @@ public: CatalogueTreeWidgetItem(DBCatalogue catalogue, int type = QTreeWidgetItem::Type); QVariant data(int column, int role) const override; + void setData(int column, int role, const QVariant &value) override; + DBCatalogue catalogue() const; private: diff --git a/gui/src/Catalogue/CatalogueTreeWidgetItem.cpp b/gui/src/Catalogue/CatalogueTreeWidgetItem.cpp index 95fb0f1..9a11ea6 100644 --- a/gui/src/Catalogue/CatalogueTreeWidgetItem.cpp +++ b/gui/src/Catalogue/CatalogueTreeWidgetItem.cpp @@ -12,11 +12,13 @@ CatalogueTreeWidgetItem::CatalogueTreeWidgetItem(DBCatalogue catalogue, int type : QTreeWidgetItem(type), impl{spimpl::make_unique_impl(catalogue)} { + setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable); } QVariant CatalogueTreeWidgetItem::data(int column, int role) const { switch (role) { + case Qt::EditRole: // fallthrough case Qt::DisplayRole: return impl->m_Catalogue.getName(); default: @@ -26,6 +28,18 @@ QVariant CatalogueTreeWidgetItem::data(int column, int role) const return QTreeWidgetItem::data(column, role); } +void CatalogueTreeWidgetItem::setData(int column, int role, const QVariant &value) +{ + if (role == Qt::EditRole && column == 0) { + auto newName = value.toString(); + setText(0, newName); + impl->m_Catalogue.setName(newName); + } + else { + QTreeWidgetItem::setData(column, role, value); + } +} + DBCatalogue CatalogueTreeWidgetItem::catalogue() const { return impl->m_Catalogue;