refactor use PgLabTableViewHelper on CatalogTablesPage
This commit is contained in:
parent
87ab22919f
commit
90851ef950
9 changed files with 68 additions and 54 deletions
|
|
@ -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 ¤t, 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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
#define CATALOGTABLESPAGE_H
|
||||
|
||||
#include "NamespaceFilter.h"
|
||||
#include "TablesTableModel.h"
|
||||
#include "PgLabTableViewHelper.h"
|
||||
#include <QSplitter>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
|
|
@ -21,7 +23,6 @@ class PropertiesPage;
|
|||
class QTabWidget;
|
||||
class SqlCodePreview;
|
||||
class QSortFilterProxyModel;
|
||||
class TablesTableModel;
|
||||
class TriggerPage;
|
||||
|
||||
|
||||
|
|
@ -38,9 +39,7 @@ public:
|
|||
signals:
|
||||
void tableSelected(Oid tableoid);
|
||||
private:
|
||||
PgLabTableView *m_tableView = nullptr;
|
||||
TablesTableModel* m_tablesModel = nullptr;
|
||||
QSortFilterProxyModel *m_tablesSortFilter = nullptr;
|
||||
PgLabTableViewHelper<TablesTableModel> m_tablesTableView;
|
||||
|
||||
// Details
|
||||
QTabWidget *m_detailsTabs = nullptr;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue