#include "TriggerPage.h" #include "ResultTableModelUtil.h" #include "UserConfiguration.h" #include #include "PgClass.h" #include "SqlCodePreview.h" #include "TriggerTableModel.h" #include "CustomFilterSortModel.h" #include "CustomDataRole.h" #include "PgLabItemDelegate.h" #include #include TriggerPage::TriggerPage(QWidget *parent) : QSplitter(Qt::Vertical, parent) { m_tableView = new QTableView(this); m_definitionView = new SqlCodePreview(this); addWidget(m_tableView); addWidget(m_definitionView); SetTableViewDefault(m_tableView); m_model = new TriggerTableModel(this); m_sortFilterProxy = new CustomFilterSortModel(this); m_sortFilterProxy->setSourceModel(m_model); m_tableView->setModel(m_sortFilterProxy); m_tableView->setSortingEnabled(true); m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows); auto item_delegate = new PgLabItemDelegate(this); m_tableView->setItemDelegate(item_delegate); //auto icon_delegate = new IconColumnDelegate(this); connect(m_tableView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &TriggerPage::tableView_selectionChanged); } void TriggerPage::setCatalog(std::shared_ptr cat) { m_catalog = cat; m_definitionView->setCatalog(cat); m_model->setCatalog(cat); } void TriggerPage::setFilter(const std::optional &cls) { m_sortFilterProxy->setOidFilterTable(cls ? cls->oid : InvalidOid, FirstHiddenValue); } void TriggerPage::tableView_selectionChanged(const QItemSelection &/*selected*/, const QItemSelection &/*deselected*/) { auto&& indexes = m_tableView->selectionModel()->selectedIndexes(); boost::container::flat_set rijen; for (const auto &e : indexes) rijen.insert(m_sortFilterProxy->mapToSource(e).row()); QString drops; QString creates; for (auto rij : rijen) { auto&& t = m_model->trigger(rij); drops += t.dropSql() % "\n"; creates += t.createSql() % "\n"; } m_definitionView->setPlainText(drops % "\n" % creates); }