diff --git a/core/include/Catalogue/CatalogueController.h b/core/include/Catalogue/CatalogueController.h index 7681e08..4cc36ae 100644 --- a/core/include/Catalogue/CatalogueController.h +++ b/core/include/Catalogue/CatalogueController.h @@ -49,7 +49,7 @@ public: // void trashEvent(std::shared_ptr event); // void restore(std::shared_ptr event); void saveEvent(std::shared_ptr event); - void discardEvent(std::shared_ptr event); + void discardEvent(std::shared_ptr event, bool &removed); bool eventHasChanges(std::shared_ptr event) const; // Catalogue diff --git a/core/src/Catalogue/CatalogueController.cpp b/core/src/Catalogue/CatalogueController.cpp index cf5042f..af7d0b3 100644 --- a/core/src/Catalogue/CatalogueController.cpp +++ b/core/src/Catalogue/CatalogueController.cpp @@ -184,8 +184,27 @@ void CatalogueController::addEvent(std::shared_ptr event) impl->m_CatalogueDao.updateEvent(eventTemp); } +<<<<<<< Upstream, based on feature/CatalogueDevelop2 auto uniqueId = impl->eventUniqueKey(event); impl->m_EventKeysWithChanges.insert(uniqueId); +======= + + // update event parameter + auto uniqIdPredicate = std::make_shared( + QString{"uniqId"}, event->getUniqId(), ComparaisonOperation::EQUALEQUAL); + + auto workRepositoryPredicate = std::make_shared( + QString{"repository"}, impl->toWorkRepository(event->getRepository()), + ComparaisonOperation::EQUALEQUAL); + + auto workPred = std::make_shared(CompoundOperation::AND); + workPred->AddRequestPredicate(uniqIdPredicate); + workPred->AddRequestPredicate(workRepositoryPredicate); + + + auto workEvent = impl->m_CatalogueDao.getEvent(workPred); + *event = workEvent; +>>>>>>> 575bb1a Discard an added event remove it now. } void CatalogueController::saveEvent(std::shared_ptr event) @@ -194,7 +213,7 @@ void CatalogueController::saveEvent(std::shared_ptr event) impl->m_EventKeysWithChanges.remove(impl->eventUniqueKey(event)); } -void CatalogueController::discardEvent(std::shared_ptr event) +void CatalogueController::discardEvent(std::shared_ptr event, bool &removed) { auto uniqIdPredicate = std::make_shared( QString{"uniqId"}, event->getUniqId(), ComparaisonOperation::EQUALEQUAL); @@ -218,11 +237,21 @@ void CatalogueController::discardEvent(std::shared_ptr event) auto syncEvent = impl->m_CatalogueDao.getEvent(syncPred); - impl->m_CatalogueDao.copyEvent(syncEvent, impl->toWorkRepository(event->getRepository()), true); - - auto workEvent = impl->m_CatalogueDao.getEvent(workPred); - *event = workEvent; - impl->m_EventKeysWithChanges.remove(impl->eventUniqueKey(event)); + if (!syncEvent.getUniqId().isNull()) { + removed = false; + impl->m_CatalogueDao.copyEvent(syncEvent, impl->toWorkRepository(event->getRepository()), + true); + + auto workEvent = impl->m_CatalogueDao.getEvent(workPred); + *event = workEvent; + impl->m_EventKeysWithChanges.remove(impl->eventUniqueKey(event)); + } + else { + removed = true; + // Since the element wasn't in sync repository. Discard it means remove it + event->setRepository(impl->toWorkRepository(event->getRepository())); + impl->m_CatalogueDao.removeEvent(*event); + } } bool CatalogueController::eventHasChanges(std::shared_ptr event) const diff --git a/gui/src/Catalogue/CatalogueEventsWidget.cpp b/gui/src/Catalogue/CatalogueEventsWidget.cpp index 10aeead..d55ec11 100644 --- a/gui/src/Catalogue/CatalogueEventsWidget.cpp +++ b/gui/src/Catalogue/CatalogueEventsWidget.cpp @@ -358,9 +358,15 @@ void CatalogueEventsWidget::setEventChanges(const std::shared_ptr &even setEventChanges(event, false); }, [this, event]() { - sqpApp->catalogueController().discardEvent(event); - setEventChanges(event, false); - impl->m_Model->refreshEvent(event, true); + bool removed = false; + sqpApp->catalogueController().discardEvent(event, removed); + if (removed) { + impl->m_Model->removeEvent(event); + } + else { + setEventChanges(event, false); + impl->m_Model->refreshEvent(event, true); + } emitSelection(); }); ui->treeView->setIndexWidget(validationIndex, widget); diff --git a/gui/src/Catalogue/CatalogueInspectorWidget.cpp b/gui/src/Catalogue/CatalogueInspectorWidget.cpp index 57fb08f..6ab4aa8 100644 --- a/gui/src/Catalogue/CatalogueInspectorWidget.cpp +++ b/gui/src/Catalogue/CatalogueInspectorWidget.cpp @@ -64,7 +64,7 @@ void CatalogueInspectorWidget::CatalogueInspectorWidgetPrivate::connectEventUpda }); connect(ui->leEventTags, &QLineEdit::editingFinished, [ui, inspector, this]() { - auto tags = ui->leEventTags->text().split(QRegExp("\\s+")); + auto tags = ui->leEventTags->text().split(QRegExp("\\s+"), QString::SkipEmptyParts); std::list tagNames; for (auto tag : tags) { tagNames.push_back(tag);