CatalogueEventsWidget.cpp
86 lines
| 2.8 KiB
| text/x-c
|
CppLexer
r1095 | #include "Catalogue/CatalogueEventsWidget.h" | |||
#include "ui_CatalogueEventsWidget.h" | ||||
r1129 | #include <Catalogue/CatalogueController.h> | |||
r1130 | #include <Catalogue/CatalogueEventsTableModel.h> | |||
r1129 | #include <CatalogueDao.h> | |||
#include <DBCatalogue.h> | ||||
#include <SqpApplication.h> | ||||
/// Format of the dates appearing in the label of a cursor | ||||
const auto DATETIME_FORMAT = QStringLiteral("yyyy/MM/dd hh:mm:ss"); | ||||
r1105 | ||||
r1101 | struct CatalogueEventsWidget::CatalogueEventsWidgetPrivate { | |||
r1130 | CatalogueEventsTableModel *m_Model = nullptr; | |||
r1101 | }; | |||
r1095 | CatalogueEventsWidget::CatalogueEventsWidget(QWidget *parent) | |||
r1101 | : QWidget(parent), | |||
ui(new Ui::CatalogueEventsWidget), | ||||
impl{spimpl::make_unique_impl<CatalogueEventsWidgetPrivate>()} | ||||
r1095 | { | |||
ui->setupUi(this); | ||||
r1101 | ||||
r1130 | impl->m_Model = new CatalogueEventsTableModel(this); | |||
ui->tableView->setModel(impl->m_Model); | ||||
ui->tableView->setSortingEnabled(true); | ||||
r1101 | connect(ui->btnTime, &QToolButton::clicked, [this](auto checked) { | |||
if (checked) { | ||||
ui->btnChart->setChecked(false); | ||||
} | ||||
}); | ||||
connect(ui->btnChart, &QToolButton::clicked, [this](auto checked) { | ||||
if (checked) { | ||||
ui->btnTime->setChecked(false); | ||||
} | ||||
}); | ||||
r1130 | connect(ui->tableView, &QTableView::clicked, [this](auto index) { | |||
auto event = impl->m_Model->getEvent(index.row()); | ||||
r1105 | emit this->eventSelected(event); | |||
}); | ||||
r1130 | connect(ui->tableView->selectionModel(), &QItemSelectionModel::currentChanged, | |||
r1105 | [this](auto current, auto previous) { | |||
r1130 | if (current.isValid() && current.row() >= 0) { | |||
auto event = impl->m_Model->getEvent(current.row()); | ||||
r1105 | emit this->eventSelected(event); | |||
} | ||||
}); | ||||
r1130 | connect(ui->tableView->selectionModel(), &QItemSelectionModel::selectionChanged, [this]() { | |||
auto isNotMultiSelection = ui->tableView->selectionModel()->selectedRows().count() <= 1; | ||||
r1106 | ui->btnChart->setEnabled(isNotMultiSelection); | |||
ui->btnTime->setEnabled(isNotMultiSelection); | ||||
r1105 | }); | |||
r1103 | ||||
r1130 | ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); | |||
ui->tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); | ||||
ui->tableView->horizontalHeader()->setSortIndicatorShown(true); | ||||
r1095 | } | |||
CatalogueEventsWidget::~CatalogueEventsWidget() | ||||
{ | ||||
delete ui; | ||||
} | ||||
r1101 | ||||
r1129 | void CatalogueEventsWidget::populateWithCatalogue(const DBCatalogue &catalogue) | |||
r1103 | { | |||
r1129 | auto &dao = sqpApp->catalogueController().getDao(); | |||
auto events = dao.getCatalogueEvents(catalogue); | ||||
r1130 | QVector<DBEvent> eventVector; | |||
r1129 | for (auto event : events) { | |||
r1130 | eventVector << event; | |||
r1129 | } | |||
r1103 | ||||
r1130 | ui->tableView->setSortingEnabled(false); | |||
impl->m_Model->setEvents(eventVector); | ||||
ui->tableView->setSortingEnabled(true); | ||||
r1101 | } | |||