#include "TablesPage.h" #include "ui_TablesPage.h" #include "PgAttribute.h" #include "PgDatabaseCatalog.h" #include "TablesTableModel.h" #include "ResultTableModelUtil.h" #include "ColumnTableModel.h" #include "ConstraintModel.h" #include "NamespaceFilterWidget.h" #include "IconColumnDelegate.h" TablesPage::TablesPage(QWidget *parent) : QWidget(parent), ui(new Ui::TablesPage) { ui->setupUi(this); SetTableViewDefault(ui->tableListTable); m_tablesModel = new TablesTableModel(this); ui->tableListTable->setModel(m_tablesModel); SetTableViewDefault(ui->columnsTable); m_columnsModel = new ColumnTableModel(this); ui->columnsTable->setModel(m_columnsModel); SetTableViewDefault(ui->constraintsTable); m_constraintModel = new ConstraintModel(this); auto delegate = new IconColumnDelegate(this); ui->constraintsTable->setModel(m_constraintModel); ui->constraintsTable->setItemDelegateForColumn(0, delegate); m_namespaceFilterWidget = new NamespaceFilterWidget(this); ui->verticalLayoutTableView->addWidget(m_namespaceFilterWidget); connect(ui->tableListTable->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &TablesPage::on_tableListTable_currentRowChanged); } TablesPage::~TablesPage() { delete ui; } void TablesPage::setCatalog(std::shared_ptr cat) { m_catalog = cat; m_tablesModel->setCatalog(cat); ui->tableListTable->resizeColumnsToContents(); m_namespaceFilterWidget->init(cat->namespaces()); } void TablesPage::on_tableListTable_currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous) { if (current.row() != previous.row()) { PgClass table = m_tablesModel->getTable(current.row()); m_columnsModel->setData(m_catalog, table); ui->columnsTable->resizeColumnsToContents(); m_constraintModel->setData(m_catalog, table); ui->constraintsTable->resizeColumnsToContents(); } }