#include "Catalogue/CatalogueTreeWidgetItem.h" #include #include #include #include #include /// Column in the tree widget where the apply and cancel buttons must appear const auto APPLY_CANCEL_BUTTONS_COLUMN = 1; struct CatalogueTreeWidgetItem::CatalogueTreeWidgetItemPrivate { std::shared_ptr m_Catalogue; CatalogueTreeWidgetItemPrivate(std::shared_ptr catalogue) : m_Catalogue(catalogue) { } }; CatalogueTreeWidgetItem::CatalogueTreeWidgetItem(std::shared_ptr catalogue, int type) : QTreeWidgetItem(type), impl{spimpl::make_unique_impl(catalogue)} { setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDropEnabled); } QVariant CatalogueTreeWidgetItem::data(int column, int role) const { if (column == 0) { switch (role) { case Qt::EditRole: // fallthrough case Qt::DisplayRole: return impl->m_Catalogue->getName(); default: break; } } 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(); if (newName != impl->m_Catalogue->getName()) { setText(0, newName); impl->m_Catalogue->setName(newName); sqpApp->catalogueController().updateCatalogue(impl->m_Catalogue); } } else { QTreeWidgetItem::setData(column, role, value); } } std::shared_ptr CatalogueTreeWidgetItem::catalogue() const { return impl->m_Catalogue; } void CatalogueTreeWidgetItem::refresh() { emitDataChanged(); }