diff --git a/gui/include/Catalogue/CatalogueEventsTableModel.h b/gui/include/Catalogue/CatalogueEventsTableModel.h index 0b5f977..de4f031 100644 --- a/gui/include/Catalogue/CatalogueEventsTableModel.h +++ b/gui/include/Catalogue/CatalogueEventsTableModel.h @@ -13,6 +13,8 @@ public: void setEvents(const QVector &events); DBEvent getEvent(int row) const; + void addEvent(const DBEvent &events); + void removeEvent(const DBEvent &events); // Model int rowCount(const QModelIndex &parent = QModelIndex()) const override; diff --git a/gui/src/Catalogue/CatalogueEventsTableModel.cpp b/gui/src/Catalogue/CatalogueEventsTableModel.cpp index 0806e6a..3e423e3 100644 --- a/gui/src/Catalogue/CatalogueEventsTableModel.cpp +++ b/gui/src/Catalogue/CatalogueEventsTableModel.cpp @@ -66,6 +66,24 @@ DBEvent CatalogueEventsTableModel::getEvent(int row) const return impl->m_Events.value(row); } +void CatalogueEventsTableModel::addEvent(const DBEvent &events) +{ + beginInsertRows(QModelIndex(), impl->m_Events.count() - 1, impl->m_Events.count() - 1); + // impl->m_Events.append(event); TODO + endInsertRows(); +} + +void CatalogueEventsTableModel::removeEvent(const DBEvent &events) +{ + // TODO + auto index = -1; // impl->m_Events.indexOf(event); + if (index >= 0) { + beginRemoveRows(QModelIndex(), index, index); + impl->m_Events.removeAt(index); + endRemoveRows(); + } +} + int CatalogueEventsTableModel::rowCount(const QModelIndex &parent) const { int r = impl->m_Events.count(); diff --git a/gui/src/Catalogue/CatalogueEventsWidget.cpp b/gui/src/Catalogue/CatalogueEventsWidget.cpp index 25c496c..16ee9ea 100644 --- a/gui/src/Catalogue/CatalogueEventsWidget.cpp +++ b/gui/src/Catalogue/CatalogueEventsWidget.cpp @@ -14,6 +14,27 @@ const auto DATETIME_FORMAT = QStringLiteral("yyyy/MM/dd hh:mm:ss"); struct CatalogueEventsWidget::CatalogueEventsWidgetPrivate { CatalogueEventsTableModel *m_Model = nullptr; + + void setEvents(const QVector &events, QTableView *tableView) + { + tableView->setSortingEnabled(false); + m_Model->setEvents(events); + tableView->setSortingEnabled(true); + } + + void addEvent(const DBEvent &event, QTableView *tableView) + { + tableView->setSortingEnabled(false); + m_Model->addEvent(event); + tableView->setSortingEnabled(true); + } + + void removeEvent(const DBEvent &event, QTableView *tableView) + { + tableView->setSortingEnabled(false); + m_Model->removeEvent(event); + tableView->setSortingEnabled(true); + } }; @@ -24,13 +45,12 @@ CatalogueEventsWidget::CatalogueEventsWidget(QWidget *parent) { ui->setupUi(this); - ui->tableView->setDragDropMode(QAbstractItemView::DragDrop); - ui->tableView->setDragEnabled(true); - impl->m_Model = new CatalogueEventsTableModel{this}; ui->tableView->setModel(impl->m_Model); ui->tableView->setSortingEnabled(true); + ui->tableView->setDragDropMode(QAbstractItemView::DragDrop); + ui->tableView->setDragEnabled(true); connect(ui->btnTime, &QToolButton::clicked, [this](auto checked) { if (checked) { @@ -89,7 +109,5 @@ void CatalogueEventsWidget::populateWithCatalogues(const QVector &c } } - ui->tableView->setSortingEnabled(false); - impl->m_Model->setEvents(events); - ui->tableView->setSortingEnabled(true); + impl->setEvents(events, ui->tableView); } diff --git a/gui/src/Catalogue/CatalogueSideBarWidget.cpp b/gui/src/Catalogue/CatalogueSideBarWidget.cpp index 2f6b0cf..9ad1456 100644 --- a/gui/src/Catalogue/CatalogueSideBarWidget.cpp +++ b/gui/src/Catalogue/CatalogueSideBarWidget.cpp @@ -21,6 +21,7 @@ struct CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate { void configureTreeWidget(QTreeWidget *treeWidget); QTreeWidgetItem *addDatabaseItem(const QString &name, QTreeWidget *treeWidget); + QTreeWidgetItem *getDatabaseItem(const QString &name, QTreeWidget *treeWidget); void addCatalogueItem(const DBCatalogue &catalogue, QTreeWidgetItem *parentDatabaseItem); }; @@ -142,6 +143,20 @@ CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addDatabaseItem(const QSt return databaseItem; } +QTreeWidgetItem * +CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::getDatabaseItem(const QString &name, + QTreeWidget *treeWidget) +{ + for (auto i = 0; i < treeWidget->topLevelItemCount(); ++i) { + auto item = treeWidget->topLevelItem(i); + if (item->type() == DATABASE_ITEM_TYPE && item->text(0) == name) { + return item; + } + } + + return nullptr; +} + void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addCatalogueItem( const DBCatalogue &catalogue, QTreeWidgetItem *parentDatabaseItem) {