refactor use PgLabTableViewHelper on CatalogTablesPage

This commit is contained in:
eelke 2021-12-30 18:54:26 +01:00
parent 87ab22919f
commit 90851ef950
9 changed files with 68 additions and 54 deletions

View file

@ -25,24 +25,16 @@
CatalogTablesPage::CatalogTablesPage(QWidget *parent)
: QSplitter(Qt::Horizontal, parent)
, m_tablesTableView(this)
{
m_tableView = new PgLabTableView(this);
m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
m_tableView->setSelectionMode(QAbstractItemView::SingleSelection);
auto tv = m_tablesTableView.tableView();
tv->setSelectionMode(QAbstractItemView::SingleSelection);
m_detailsTabs = new QTabWidget(this);
// Populate splitter
addWidget(m_tableView);
addWidget(tv);
addWidget(m_detailsTabs);
// Setup model(s)
m_tablesModel = new TablesTableModel(this);
m_tablesSortFilter = new QSortFilterProxyModel(this);
m_tablesSortFilter->setSourceModel(m_tablesModel);
m_tableView->setModel(m_tablesSortFilter);
m_tableView->horizontalHeader()->setSortIndicator(TablesTableModel::NameCol, Qt::AscendingOrder);
m_tableView->setSortingEnabled(true);
// - Columns page
m_columnsPage = new ColumnPage(this);
m_detailsTabs->addTab(m_columnsPage, "");
@ -56,9 +48,9 @@ CatalogTablesPage::CatalogTablesPage(QWidget *parent)
m_detailsTabs->addTab(m_indexPage, "");
// - Properties page
m_propertiesPage = new PropertiesPage(this);
m_propertiesPage->setSourceModel(m_tablesModel);
m_detailsTabs->addTab(m_propertiesPage, "");
// m_propertiesPage = new PropertiesPage(this);
// m_propertiesPage->setSourceModel(m_tablesTableView.dataModel());
// m_detailsTabs->addTab(m_propertiesPage, "");
// - Trigger page
m_triggerPage = new TriggerPage(this);
@ -75,19 +67,19 @@ CatalogTablesPage::CatalogTablesPage(QWidget *parent)
m_detailsTabs->setCurrentIndex(0);
// Signals
connect(m_tableView->selectionModel(), &QItemSelectionModel::currentRowChanged, this,
connect(tv->selectionModel(), &QItemSelectionModel::currentRowChanged, this,
&CatalogTablesPage::tableListTable_currentRowChanged);
connect(m_tablesModel, &TablesTableModel::modelReset,
connect(m_tablesTableView.dataModel(), &TablesTableModel::modelReset,
[this] ()
{
selectedTableChanged({});
m_propertiesPage->setActiveRow({});
});
connect(m_tablesModel, &QAbstractItemModel::layoutChanged,
connect(m_tablesTableView.dataModel(), &QAbstractItemModel::layoutChanged,
this, &CatalogTablesPage::tableListTable_layoutChanged);
connect(m_tableView, &QTableView::doubleClicked,
connect(tv, &QTableView::doubleClicked,
this, &CatalogTablesPage::on_tableListTable_doubleClicked);
}
@ -109,8 +101,7 @@ void CatalogTablesPage::retranslateUi(bool /*all*/)
void CatalogTablesPage::setCatalog(std::shared_ptr<PgDatabaseCatalog> cat)
{
m_catalog = cat;
m_tablesModel->setCatalog(cat);
m_tableView->resizeColumnsToContents();
m_tablesTableView.setCatalog(cat);
m_constraintPage->setCatalog(cat);
m_indexPage->setCatalog(cat);
@ -120,44 +111,29 @@ void CatalogTablesPage::setCatalog(std::shared_ptr<PgDatabaseCatalog> cat)
void CatalogTablesPage::setNamespaceFilter(NamespaceFilter filter)
{
m_tablesModel->setNamespaceFilter(filter);
m_tableView->resizeColumnsToContents();
m_tablesTableView.dataModel()->setNamespaceFilter(filter);
m_tablesTableView.tableView()->resizeColumnsToContents();
}
void CatalogTablesPage::tableListTable_currentRowChanged(const QModelIndex &current, const QModelIndex &previous)
{
if (current.row() != previous.row()) {
if (current.isValid()) {
auto sourceIndex = m_tablesSortFilter->mapToSource(current);
auto row = sourceIndex.row();
PgClass table = m_tablesModel->getTable(row);
selectedTableChanged(table);
m_propertiesPage->setActiveRow(sourceIndex);
}
else {
selectedTableChanged({});
m_propertiesPage->setActiveRow({});
}
auto table = m_tablesTableView.rowItem(current.row());
selectedTableChanged(table);
}
}
void CatalogTablesPage::tableListTable_layoutChanged(const QList<QPersistentModelIndex> &, QAbstractItemModel::LayoutChangeHint )
{
auto&& index = m_tableView->selectionModel()->currentIndex();
if (index.isValid()) {
auto row = m_tablesSortFilter->mapToSource(index).row();
PgClass table = m_tablesModel->getTable(row);
selectedTableChanged(table);
}
else
selectedTableChanged({});
auto table = m_tablesTableView.currentRowItem();
selectedTableChanged(table);
}
void CatalogTablesPage::on_tableListTable_doubleClicked(const QModelIndex &index)
{
auto row = m_tablesSortFilter->mapToSource(index).row();
PgClass table = m_tablesModel->getTable(row);
auto row = m_tablesTableView.sortFilter()->mapToSource(index).row();
PgClass table = m_tablesTableView.dataModel()->getTable(row);
if (table.oid() != InvalidOid) {
tableSelected(table.oid());
}