From f4f514efb085d4ebb5468a8b367f08deb7dd18f5 Mon Sep 17 00:00:00 2001 From: eelke Date: Sun, 6 Oct 2019 14:31:44 +0200 Subject: [PATCH] Trigger page now reacts to catalog refreshed. --- pglab/TriggerPage.cpp | 1 + pglab/TriggerTableModel.cpp | 21 +++++++++++++++------ pglab/TriggerTableModel.h | 4 ++++ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/pglab/TriggerPage.cpp b/pglab/TriggerPage.cpp index dd78f00..3977c44 100644 --- a/pglab/TriggerPage.cpp +++ b/pglab/TriggerPage.cpp @@ -19,6 +19,7 @@ TriggerPage::TriggerPage(QWidget *parent) connect(m_tableView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &TriggerPage::tableView_selectionChanged); + connect(m_model, &TriggerTableModel::modelReset, m_definitionView, &SqlCodePreview::clear); } diff --git a/pglab/TriggerTableModel.cpp b/pglab/TriggerTableModel.cpp index d69d070..c83ed34 100644 --- a/pglab/TriggerTableModel.cpp +++ b/pglab/TriggerTableModel.cpp @@ -2,6 +2,7 @@ #include "catalog/PgDatabaseCatalog.h" #include "catalog/PgTriggerContainer.h" #include "CustomDataRole.h" +#include "ScopeGuard.h" TriggerTableModel::TriggerTableModel(QObject *parent) : QAbstractTableModel(parent) @@ -30,12 +31,12 @@ QVariant TriggerTableModel::headerData(int section, Qt::Orientation orientation, void TriggerTableModel::setCatalog(std::shared_ptr cat) { - beginResetModel(); - - m_catalog = cat; - m_triggers = cat->triggers();//->getTriggersForRelation(table); - - endResetModel(); + if (cat != m_catalog) { + m_catalog = cat; + refreshConnection = connect(m_catalog.get(), &PgDatabaseCatalog::refreshed, this, + &TriggerTableModel::refresh); + } + refresh(); } int TriggerTableModel::rowCount(const QModelIndex &) const @@ -98,3 +99,11 @@ QVariant TriggerTableModel::getData(const QModelIndex &index) const } return QVariant(); } + +void TriggerTableModel::refresh() +{ + beginResetModel(); + SCOPE_EXIT { endResetModel(); }; + + m_triggers = m_catalog->triggers(); +} diff --git a/pglab/TriggerTableModel.h b/pglab/TriggerTableModel.h index 744abbe..8f60d77 100644 --- a/pglab/TriggerTableModel.h +++ b/pglab/TriggerTableModel.h @@ -66,9 +66,13 @@ public: private: std::shared_ptr m_catalog; std::shared_ptr m_triggers; + QMetaObject::Connection refreshConnection; Oid getType(int column) const; QVariant getData(const QModelIndex &index) const; + +private slots: + void refresh(); };