From ac6f44836b9a6ea8f5dda6679e439262aeb78f8e 2017-12-14 16:34:20 From: Thibaud Rabillard Date: 2017-12-14 16:34:20 Subject: [PATCH] Edition of events from the inspector --- diff --git a/gui/include/Catalogue/CatalogueEventsTableModel.h b/gui/include/Catalogue/CatalogueEventsTableModel.h index 9bab0a7..31ce383 100644 --- a/gui/include/Catalogue/CatalogueEventsTableModel.h +++ b/gui/include/Catalogue/CatalogueEventsTableModel.h @@ -13,8 +13,10 @@ public: void setEvents(const QVector > &events); std::shared_ptr getEvent(int row) const; - void addEvent(const std::shared_ptr &events); - void removeEvent(const std::shared_ptr &events); + void addEvent(const std::shared_ptr &event); + void removeEvent(const std::shared_ptr &event); + + void refreshEvent(const std::shared_ptr &event); // Model int rowCount(const QModelIndex &parent = QModelIndex()) const override; diff --git a/gui/include/Catalogue/CatalogueEventsWidget.h b/gui/include/Catalogue/CatalogueEventsWidget.h index 04fa2af..8060bab 100644 --- a/gui/include/Catalogue/CatalogueEventsWidget.h +++ b/gui/include/Catalogue/CatalogueEventsWidget.h @@ -27,6 +27,8 @@ public: void setVisualizationWidget(VisualizationWidget *visualization); + void setEventChanges(const std::shared_ptr &event, bool hasChanges); + public slots: void populateWithCatalogues(const QVector > &catalogues); diff --git a/gui/src/Catalogue/CatalogueEventsTableModel.cpp b/gui/src/Catalogue/CatalogueEventsTableModel.cpp index 54994b7..c7c1b11 100644 --- a/gui/src/Catalogue/CatalogueEventsTableModel.cpp +++ b/gui/src/Catalogue/CatalogueEventsTableModel.cpp @@ -66,17 +66,16 @@ std::shared_ptr CatalogueEventsTableModel::getEvent(int row) const return impl->m_Events.value(row); } -void CatalogueEventsTableModel::addEvent(const std::shared_ptr &events) +void CatalogueEventsTableModel::addEvent(const std::shared_ptr &event) { beginInsertRows(QModelIndex(), impl->m_Events.count() - 1, impl->m_Events.count() - 1); - // impl->m_Events.append(event); TODO + impl->m_Events.append(event); endInsertRows(); } -void CatalogueEventsTableModel::removeEvent(const std::shared_ptr &events) +void CatalogueEventsTableModel::removeEvent(const std::shared_ptr &event) { - // TODO - auto index = -1; // impl->m_Events.indexOf(event); + auto index = impl->m_Events.indexOf(event); if (index >= 0) { beginRemoveRows(QModelIndex(), index, index); impl->m_Events.removeAt(index); @@ -84,6 +83,14 @@ void CatalogueEventsTableModel::removeEvent(const std::shared_ptr &even } } +void CatalogueEventsTableModel::refreshEvent(const std::shared_ptr &event) +{ + auto eventIndex = impl->m_Events.indexOf(event); + if (eventIndex >= 0) { + emit dataChanged(index(eventIndex, 0), index(eventIndex, columnCount())); + } +} + int CatalogueEventsTableModel::rowCount(const QModelIndex &parent) const { int r = impl->m_Events.count(); @@ -92,8 +99,7 @@ int CatalogueEventsTableModel::rowCount(const QModelIndex &parent) const int CatalogueEventsTableModel::columnCount(const QModelIndex &parent) const { - int c = static_cast(CatalogueEventsTableModelPrivate::Column::NbColumn); - return c; + return static_cast(CatalogueEventsTableModelPrivate::Column::NbColumn); } Qt::ItemFlags CatalogueEventsTableModel::flags(const QModelIndex &index) const diff --git a/gui/src/Catalogue/CatalogueEventsWidget.cpp b/gui/src/Catalogue/CatalogueEventsWidget.cpp index 82cf681..b9c1252 100644 --- a/gui/src/Catalogue/CatalogueEventsWidget.cpp +++ b/gui/src/Catalogue/CatalogueEventsWidget.cpp @@ -271,6 +271,11 @@ void CatalogueEventsWidget::setVisualizationWidget(VisualizationWidget *visualiz impl->m_VisualizationWidget = visualization; } +void CatalogueEventsWidget::setEventChanges(const std::shared_ptr &event, bool hasChanges) +{ + impl->m_Model->refreshEvent(event); +} + void CatalogueEventsWidget::populateWithCatalogues( const QVector > &catalogues) { diff --git a/gui/src/Catalogue/CatalogueExplorer.cpp b/gui/src/Catalogue/CatalogueExplorer.cpp index 7a1d992..d985406 100644 --- a/gui/src/Catalogue/CatalogueExplorer.cpp +++ b/gui/src/Catalogue/CatalogueExplorer.cpp @@ -51,6 +51,9 @@ CatalogueExplorer::CatalogueExplorer(QWidget *parent) connect(ui->inspector, &CatalogueInspectorWidget::catalogueUpdated, [this](auto catalogue) { ui->catalogues->setCatalogueChanges(catalogue, true); }); + + connect(ui->inspector, &CatalogueInspectorWidget::eventUpdated, + [this](auto event) { ui->events->setEventChanges(event, true); }); } CatalogueExplorer::~CatalogueExplorer() diff --git a/gui/src/Catalogue/CatalogueInspectorWidget.cpp b/gui/src/Catalogue/CatalogueInspectorWidget.cpp index 033ce5c..87d09dd 100644 --- a/gui/src/Catalogue/CatalogueInspectorWidget.cpp +++ b/gui/src/Catalogue/CatalogueInspectorWidget.cpp @@ -9,6 +9,11 @@ struct CatalogueInspectorWidget::CatalogueInspectorWidgetPrivate { std::shared_ptr m_DisplayedCatalogue = nullptr; std::shared_ptr m_DisplayedEvent = nullptr; + + void connectCatalogueUpdateSignals(CatalogueInspectorWidget *inspector, + Ui::CatalogueInspectorWidget *ui); + void connectEventUpdateSignals(CatalogueInspectorWidget *inspector, + Ui::CatalogueInspectorWidget *ui); }; CatalogueInspectorWidget::CatalogueInspectorWidget(QWidget *parent) @@ -19,24 +24,76 @@ CatalogueInspectorWidget::CatalogueInspectorWidget(QWidget *parent) ui->setupUi(this); showPage(Page::Empty); - connect(ui->leCatalogueName, &QLineEdit::editingFinished, [this]() { - if (ui->leCatalogueName->text() != impl->m_DisplayedCatalogue->getName()) { - impl->m_DisplayedCatalogue->setName(ui->leCatalogueName->text()); - emit this->catalogueUpdated(impl->m_DisplayedCatalogue); + impl->connectCatalogueUpdateSignals(this, ui); + impl->connectEventUpdateSignals(this, ui); +} + +CatalogueInspectorWidget::~CatalogueInspectorWidget() +{ + delete ui; +} + +void CatalogueInspectorWidget::CatalogueInspectorWidgetPrivate::connectCatalogueUpdateSignals( + CatalogueInspectorWidget *inspector, Ui::CatalogueInspectorWidget *ui) +{ + connect(ui->leCatalogueName, &QLineEdit::editingFinished, [ui, inspector, this]() { + if (ui->leCatalogueName->text() != m_DisplayedCatalogue->getName()) { + m_DisplayedCatalogue->setName(ui->leCatalogueName->text()); + emit inspector->catalogueUpdated(m_DisplayedCatalogue); } }); - connect(ui->leCatalogueAuthor, &QLineEdit::editingFinished, [this]() { - if (ui->leCatalogueAuthor->text() != impl->m_DisplayedCatalogue->getAuthor()) { - impl->m_DisplayedCatalogue->setAuthor(ui->leCatalogueAuthor->text()); - emit this->catalogueUpdated(impl->m_DisplayedCatalogue); + connect(ui->leCatalogueAuthor, &QLineEdit::editingFinished, [ui, inspector, this]() { + if (ui->leCatalogueAuthor->text() != m_DisplayedCatalogue->getAuthor()) { + m_DisplayedCatalogue->setAuthor(ui->leCatalogueAuthor->text()); + emit inspector->catalogueUpdated(m_DisplayedCatalogue); } }); } -CatalogueInspectorWidget::~CatalogueInspectorWidget() +void CatalogueInspectorWidget::CatalogueInspectorWidgetPrivate::connectEventUpdateSignals( + CatalogueInspectorWidget *inspector, Ui::CatalogueInspectorWidget *ui) { - delete ui; + connect(ui->leEventName, &QLineEdit::editingFinished, [ui, inspector, this]() { + if (ui->leEventName->text() != m_DisplayedEvent->getName()) { + m_DisplayedEvent->setName(ui->leEventName->text()); + emit inspector->eventUpdated(m_DisplayedEvent); + } + }); + + connect(ui->leEventMission, &QLineEdit::editingFinished, [ui, inspector, this]() { + if (ui->leEventMission->text() != m_DisplayedEvent->getMission()) { + m_DisplayedEvent->setMission(ui->leEventMission->text()); + emit inspector->eventUpdated(m_DisplayedEvent); + } + }); + + connect(ui->leEventProduct, &QLineEdit::editingFinished, [ui, inspector, this]() { + if (ui->leEventProduct->text() != m_DisplayedEvent->getProduct()) { + m_DisplayedEvent->setProduct(ui->leEventProduct->text()); + emit inspector->eventUpdated(m_DisplayedEvent); + } + }); + + connect(ui->leEventTags, &QLineEdit::editingFinished, [ui, inspector, this]() { + // TODO + }); + + connect(ui->dateTimeEventTStart, &QDateTimeEdit::editingFinished, [ui, inspector, this]() { + auto time = DateUtils::secondsSinceEpoch(ui->dateTimeEventTStart->dateTime()); + if (time != m_DisplayedEvent->getTStart()) { + m_DisplayedEvent->setTStart(time); + emit inspector->eventUpdated(m_DisplayedEvent); + } + }); + + connect(ui->dateTimeEventTEnd, &QDateTimeEdit::editingFinished, [ui, inspector, this]() { + auto time = DateUtils::secondsSinceEpoch(ui->dateTimeEventTEnd->dateTime()); + if (time != m_DisplayedEvent->getTEnd()) { + m_DisplayedEvent->setTEnd(time); + emit inspector->eventUpdated(m_DisplayedEvent); + } + }); } void CatalogueInspectorWidget::showPage(CatalogueInspectorWidget::Page page) diff --git a/gui/ui/Catalogue/CatalogueInspectorWidget.ui b/gui/ui/Catalogue/CatalogueInspectorWidget.ui index 909c3e8..db7f624 100644 --- a/gui/ui/Catalogue/CatalogueInspectorWidget.ui +++ b/gui/ui/Catalogue/CatalogueInspectorWidget.ui @@ -114,7 +114,11 @@ - + + + Qt::UTC + + @@ -148,7 +152,11 @@ - + + + Qt::UTC + +