diff --git a/gui/include/Catalogue/CatalogueEventsWidget.h b/gui/include/Catalogue/CatalogueEventsWidget.h index b40dfca..287aa7f 100644 --- a/gui/include/Catalogue/CatalogueEventsWidget.h +++ b/gui/include/Catalogue/CatalogueEventsWidget.h @@ -30,6 +30,8 @@ signals: void selectionZoneAdded(const std::shared_ptr &event, const QString &productId, VisualizationSelectionZoneItem *selectionZone); + void eventCataloguesModified(const QVector > &catalogues); + public: explicit CatalogueEventsWidget(QWidget *parent = 0); virtual ~CatalogueEventsWidget(); diff --git a/gui/src/Catalogue/CatalogueEventsWidget.cpp b/gui/src/Catalogue/CatalogueEventsWidget.cpp index e28e4b6..8d1e4ff 100644 --- a/gui/src/Catalogue/CatalogueEventsWidget.cpp +++ b/gui/src/Catalogue/CatalogueEventsWidget.cpp @@ -396,12 +396,19 @@ CatalogueEventsWidget::CatalogueEventsWidget(QWidget *parent) if (canRemoveEvent) { for (auto event : events) { if (this->isAllEventsDisplayed()) { + sqpApp->catalogueController().removeEvent(event); impl->removeEvent(event, ui->treeView); } else { + QVector > modifiedCatalogues; for (auto catalogue : this->displayedCatalogues()) { - catalogue->removeEvent(event->getUniqId()); - sqpApp->catalogueController().updateCatalogue(catalogue); + if (catalogue->removeEvent(event->getUniqId())) { + sqpApp->catalogueController().updateCatalogue(catalogue); + modifiedCatalogues << catalogue; + } + } + if (!modifiedCatalogues.empty()) { + emit eventCataloguesModified(modifiedCatalogues); } } impl->m_Model->removeEvent(event); diff --git a/gui/src/Catalogue/CatalogueExplorer.cpp b/gui/src/Catalogue/CatalogueExplorer.cpp index 3ce453a..358c144 100644 --- a/gui/src/Catalogue/CatalogueExplorer.cpp +++ b/gui/src/Catalogue/CatalogueExplorer.cpp @@ -135,6 +135,13 @@ CatalogueExplorer::CatalogueExplorer(QWidget *parent) sqpApp->catalogueController().updateEventProduct(eventProduct); ui->events->setEventChanges(event, true); }); + + connect(ui->events, &CatalogueEventsWidget::eventCataloguesModified, + [this](const QVector > &catalogues) { + for (auto catalogue : catalogues) { + ui->catalogues->setCatalogueChanges(catalogue, true); + } + }); } CatalogueExplorer::~CatalogueExplorer() diff --git a/gui/src/Catalogue/CatalogueTreeItems/CatalogueTreeItem.cpp b/gui/src/Catalogue/CatalogueTreeItems/CatalogueTreeItem.cpp index 9ec3f9b..a5bec27 100644 --- a/gui/src/Catalogue/CatalogueTreeItems/CatalogueTreeItem.cpp +++ b/gui/src/Catalogue/CatalogueTreeItems/CatalogueTreeItem.cpp @@ -111,16 +111,13 @@ bool CatalogueTreeItem::dropMimeData(const QMimeData *data, Qt::DropAction actio if (action == Qt::MoveAction) { for (auto catalogue : sourceCatalogues) { catalogue->removeEvent(event->getUniqId()); + sqpApp->catalogueController().updateCatalogue(catalogue); } } impl->m_Catalogue->addEvent(event->getUniqId()); + sqpApp->catalogueController().updateCatalogue(impl->m_Catalogue); } - - for (auto catalogue : sourceCatalogues) { - sqpApp->catalogueController().updateCatalogue(catalogue); - } - sqpApp->catalogueController().updateCatalogue(impl->m_Catalogue); } std::shared_ptr CatalogueTreeItem::catalogue() const