diff --git a/gui/include/Catalogue/CatalogueEventsWidget.h b/gui/include/Catalogue/CatalogueEventsWidget.h index 0cfbc1e..deae927 100644 --- a/gui/include/Catalogue/CatalogueEventsWidget.h +++ b/gui/include/Catalogue/CatalogueEventsWidget.h @@ -12,7 +12,7 @@ class CatalogueEventsWidget : public QWidget { Q_OBJECT signals: - void eventSelected(); + void eventSelected(const QString &event); public: explicit CatalogueEventsWidget(QWidget *parent = 0); diff --git a/gui/include/Catalogue/CatalogueInspectorWidget.h b/gui/include/Catalogue/CatalogueInspectorWidget.h index 4eb2e36..b78fd55 100644 --- a/gui/include/Catalogue/CatalogueInspectorWidget.h +++ b/gui/include/Catalogue/CatalogueInspectorWidget.h @@ -19,6 +19,9 @@ public: Page currentPage() const; + void setEvent(const QString &event); + void setCatalogue(const QString &catalogue); + public slots: void showPage(Page page); diff --git a/gui/src/Catalogue/CatalogueEventsWidget.cpp b/gui/src/Catalogue/CatalogueEventsWidget.cpp index 19881c4..e1e73ae 100644 --- a/gui/src/Catalogue/CatalogueEventsWidget.cpp +++ b/gui/src/Catalogue/CatalogueEventsWidget.cpp @@ -1,6 +1,8 @@ #include "Catalogue/CatalogueEventsWidget.h" #include "ui_CatalogueEventsWidget.h" +#include + struct CatalogueEventsWidget::CatalogueEventsWidgetPrivate { void addEventItem(const QStringList &data, QTableWidget *tableWidget); @@ -28,8 +30,25 @@ CatalogueEventsWidget::CatalogueEventsWidget(QWidget *parent) } }); - connect(ui->tableWidget, &QTableWidget::cellClicked, - [this](auto row, auto column) { emit this->eventSelected(); }); + connect(ui->tableWidget, &QTableWidget::cellClicked, [this](auto row, auto column) { + auto event = ui->tableWidget->item(row, 0)->text(); + emit this->eventSelected(event); + }); + + connect(ui->tableWidget, &QTableWidget::currentItemChanged, + [this](auto current, auto previous) { + if (current && current->row() >= 0) { + auto event = ui->tableWidget->item(current->row(), 0)->text(); + emit this->eventSelected(event); + } + }); + + connect(ui->tableWidget, &QTableWidget::itemSelectionChanged, [this]() { + auto selection = ui->tableWidget->selectedRanges(); + auto isSingleSelection = selection.count() == 1 && selection.first().rowCount() == 1; + ui->btnChart->setEnabled(isSingleSelection); + ui->btnTime->setEnabled(isSingleSelection); + }); Q_ASSERT(impl->columnNames().count() == (int)CatalogueEventsWidgetPrivate::Column::NbColumn); ui->tableWidget->setColumnCount((int)CatalogueEventsWidgetPrivate::Column::NbColumn); diff --git a/gui/src/Catalogue/CatalogueExplorer.cpp b/gui/src/Catalogue/CatalogueExplorer.cpp index 76053eb..30420f2 100644 --- a/gui/src/Catalogue/CatalogueExplorer.cpp +++ b/gui/src/Catalogue/CatalogueExplorer.cpp @@ -8,12 +8,12 @@ CatalogueExplorer::CatalogueExplorer(QWidget *parent) ui->setupUi(this); connect(ui->catalogues, &CatalogueSideBarWidget::catalogueSelected, [this](auto name) { - ui->inspector->showPage(CatalogueInspectorWidget::Page::CatalogueProperties); + ui->inspector->setEvent(name); ui->events->populateWithCatalogue(name); }); connect(ui->events, &CatalogueEventsWidget::eventSelected, - [this]() { ui->inspector->showPage(CatalogueInspectorWidget::Page::EventProperties); }); + [this](auto name) { ui->inspector->setCatalogue(name); }); } CatalogueExplorer::~CatalogueExplorer() diff --git a/gui/src/Catalogue/CatalogueInspectorWidget.cpp b/gui/src/Catalogue/CatalogueInspectorWidget.cpp index 6ef48cc..5cb782e 100644 --- a/gui/src/Catalogue/CatalogueInspectorWidget.cpp +++ b/gui/src/Catalogue/CatalogueInspectorWidget.cpp @@ -22,3 +22,15 @@ CatalogueInspectorWidget::Page CatalogueInspectorWidget::currentPage() const { return static_cast(ui->stackedWidget->currentIndex()); } + +void CatalogueInspectorWidget::setEvent(const QString &event) +{ + showPage(Page::EventProperties); + ui->leEventName->setText(event); +} + +void CatalogueInspectorWidget::setCatalogue(const QString &catalogue) +{ + showPage(Page::CatalogueProperties); + ui->leCatalogueName->setText(catalogue); +} diff --git a/gui/src/Catalogue/CatalogueSideBarWidget.cpp b/gui/src/Catalogue/CatalogueSideBarWidget.cpp index a64c4fd..f5ade50 100644 --- a/gui/src/Catalogue/CatalogueSideBarWidget.cpp +++ b/gui/src/Catalogue/CatalogueSideBarWidget.cpp @@ -21,7 +21,7 @@ CatalogueSideBarWidget::CatalogueSideBarWidget(QWidget *parent) ui->setupUi(this); impl->configureTreeWidget(ui->treeWidget); - connect(ui->treeWidget, &QTreeWidget::itemClicked, [this](auto item) { + auto emitSelection = [this](auto item) { switch (item->type()) { case CATALOGUE_ITEM_TYPE: emit this->catalogueSelected(item->text(0)); @@ -36,7 +36,10 @@ CatalogueSideBarWidget::CatalogueSideBarWidget(QWidget *parent) default: break; } - }); + }; + + connect(ui->treeWidget, &QTreeWidget::itemClicked, emitSelection); + connect(ui->treeWidget, &QTreeWidget::currentItemChanged, emitSelection); } CatalogueSideBarWidget::~CatalogueSideBarWidget() diff --git a/gui/ui/Catalogue/CatalogueInspectorWidget.ui b/gui/ui/Catalogue/CatalogueInspectorWidget.ui index a48ffea..909c3e8 100644 --- a/gui/ui/Catalogue/CatalogueInspectorWidget.ui +++ b/gui/ui/Catalogue/CatalogueInspectorWidget.ui @@ -53,7 +53,7 @@ - 2 + 1 @@ -66,7 +66,7 @@ - + @@ -76,7 +76,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -138,7 +138,7 @@ - + @@ -148,7 +148,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -168,10 +168,10 @@ - + - +