All the detail tabs on the TablePage now update when the sort order
of the table list changes.
This commit is contained in:
parent
d4d8316917
commit
1ae9a1151a
5 changed files with 61 additions and 26 deletions
|
|
@ -19,7 +19,17 @@ PropertiesPage::PropertiesPage(QWidget *parent) : QSplitter(parent)
|
||||||
|
|
||||||
auto item_delegate = new PgLabItemDelegate(this);
|
auto item_delegate = new PgLabItemDelegate(this);
|
||||||
m_tableView->setItemDelegate(item_delegate);
|
m_tableView->setItemDelegate(item_delegate);
|
||||||
|
m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//property_model->setSourceModel(m_tablesModel);
|
void PropertiesPage::setSourceModel(QAbstractItemModel *model)
|
||||||
|
{
|
||||||
|
m_propertyProxyModel->setSourceModel(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PropertiesPage::setActiveRow(const QModelIndex &row)
|
||||||
|
{
|
||||||
|
m_propertyProxyModel->setActiveRow(row);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ class QTableView;
|
||||||
class SqlCodePreview;
|
class SqlCodePreview;
|
||||||
class PgDatabaseCatalog;
|
class PgDatabaseCatalog;
|
||||||
class PropertyProxyModel;
|
class PropertyProxyModel;
|
||||||
|
class QAbstractItemModel;
|
||||||
|
|
||||||
class PropertiesPage : public QSplitter
|
class PropertiesPage : public QSplitter
|
||||||
{
|
{
|
||||||
|
|
@ -14,9 +15,16 @@ class PropertiesPage : public QSplitter
|
||||||
public:
|
public:
|
||||||
explicit PropertiesPage(QWidget *parent = nullptr);
|
explicit PropertiesPage(QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
void setSourceModel(QAbstractItemModel *model);
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
/** Updates the model (and view) to show the values for row
|
||||||
|
*
|
||||||
|
* The column part of the index is not used QModelIndex is used to make is eacy to connect to
|
||||||
|
* QItemSelectionModel::currentRowChanged
|
||||||
|
*/
|
||||||
|
void setActiveRow(const QModelIndex &row);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QTableView *m_tableView = nullptr;
|
QTableView *m_tableView = nullptr;
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ TablesPage::TablesPage(MainWindow *parent)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
// WARNING delegates should NOT be shared!!!
|
||||||
auto pglab_delegate = new PgLabItemDelegate(this);
|
auto pglab_delegate = new PgLabItemDelegate(this);
|
||||||
auto icon_delegate = new IconColumnDelegate(this);
|
auto icon_delegate = new IconColumnDelegate(this);
|
||||||
|
|
||||||
|
|
@ -35,6 +36,7 @@ TablesPage::TablesPage(MainWindow *parent)
|
||||||
ui->tableListTable->setItemDelegate(pglab_delegate);
|
ui->tableListTable->setItemDelegate(pglab_delegate);
|
||||||
ui->tableListTable->setSortingEnabled(true);
|
ui->tableListTable->setSortingEnabled(true);
|
||||||
ui->tableListTable->sortByColumn(0, Qt::AscendingOrder);
|
ui->tableListTable->sortByColumn(0, Qt::AscendingOrder);
|
||||||
|
ui->tableListTable->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
|
||||||
// Columns
|
// Columns
|
||||||
SetTableViewDefault(ui->columnsTable);
|
SetTableViewDefault(ui->columnsTable);
|
||||||
|
|
@ -63,11 +65,14 @@ TablesPage::TablesPage(MainWindow *parent)
|
||||||
// Connect signals
|
// Connect signals
|
||||||
// ---------------
|
// ---------------
|
||||||
// Table selection
|
// Table selection
|
||||||
// connect(ui->tableListTable->selectionModel(), &QItemSelectionModel::currentRowChanged,
|
|
||||||
// property_model, &PropertyProxyModel::setActiveRow);
|
|
||||||
connect(ui->tableListTable->selectionModel(), &QItemSelectionModel::currentRowChanged, this,
|
connect(ui->tableListTable->selectionModel(), &QItemSelectionModel::currentRowChanged, this,
|
||||||
&TablesPage::tableListTable_currentRowChanged);
|
&TablesPage::tableListTable_currentRowChanged);
|
||||||
|
|
||||||
|
connect(m_tablesModel, &QAbstractItemModel::layoutChanged,
|
||||||
|
this, &TablesPage::tableListTable_layoutChanged);
|
||||||
|
|
||||||
|
//layoutChanged(const QList<QPersistentModelIndex> &parents = ..., QAbstractItemModel::LayoutChangeHint hint = ...)
|
||||||
|
|
||||||
connect(ui->constraintsTable->selectionModel(), &QItemSelectionModel::selectionChanged, this,
|
connect(ui->constraintsTable->selectionModel(), &QItemSelectionModel::selectionChanged, this,
|
||||||
&TablesPage::constraintsTable_selectionChanged);
|
&TablesPage::constraintsTable_selectionChanged);
|
||||||
connect(ui->constraintsTable->model(), &QAbstractItemModel::modelReset, this,
|
connect(ui->constraintsTable->model(), &QAbstractItemModel::modelReset, this,
|
||||||
|
|
@ -81,9 +86,14 @@ TablesPage::TablesPage(MainWindow *parent)
|
||||||
&TablesPage::indexesTable_modelReset);
|
&TablesPage::indexesTable_modelReset);
|
||||||
|
|
||||||
// Non designer based code
|
// Non designer based code
|
||||||
|
// - Properties page
|
||||||
m_propertiesPage = new PropertiesPage(this);
|
m_propertiesPage = new PropertiesPage(this);
|
||||||
|
m_propertiesPage->setSourceModel(m_tablesModel);
|
||||||
m_propertiesTab = addDetailTab(m_propertiesPage);
|
m_propertiesTab = addDetailTab(m_propertiesPage);
|
||||||
|
connect(ui->tableListTable->selectionModel(), &QItemSelectionModel::currentRowChanged,
|
||||||
|
m_propertiesPage, &PropertiesPage::setActiveRow);
|
||||||
|
|
||||||
|
// - Trigger page
|
||||||
m_triggerPage = new TriggerPage(this);
|
m_triggerPage = new TriggerPage(this);
|
||||||
m_triggerTab = addDetailTab(m_triggerPage);
|
m_triggerTab = addDetailTab(m_triggerPage);
|
||||||
|
|
||||||
|
|
@ -122,7 +132,6 @@ void TablesPage::setCatalog(std::shared_ptr<PgDatabaseCatalog> cat)
|
||||||
ui->tableListTable->resizeColumnsToContents();
|
ui->tableListTable->resizeColumnsToContents();
|
||||||
|
|
||||||
m_triggerPage->setCatalog(cat);
|
m_triggerPage->setCatalog(cat);
|
||||||
// m_namespaceFilterWidget->init(cat->namespaces());
|
|
||||||
|
|
||||||
auto highlighter = new SqlSyntaxHighlighter(ui->constraintSqlEdit->document());
|
auto highlighter = new SqlSyntaxHighlighter(ui->constraintSqlEdit->document());
|
||||||
highlighter->setTypes(*cat->types());
|
highlighter->setTypes(*cat->types());
|
||||||
|
|
@ -130,36 +139,39 @@ void TablesPage::setCatalog(std::shared_ptr<PgDatabaseCatalog> cat)
|
||||||
highlighter->setTypes(*cat->types());
|
highlighter->setTypes(*cat->types());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TablesPage::tableListTable_currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous)
|
void TablesPage::tableListTable_currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous)
|
||||||
{
|
{
|
||||||
if (current.row() != previous.row()) {
|
if (current.row() != previous.row()) {
|
||||||
PgClass table = m_tablesModel->getTable(current.row());
|
PgClass table = m_tablesModel->getTable(current.row());
|
||||||
m_columnsModel->setData(m_catalog, table);
|
selectedTableChanged(table);
|
||||||
ui->columnsTable->resizeColumnsToContents();
|
|
||||||
|
|
||||||
m_constraintModel->setData(m_catalog, table);
|
|
||||||
ui->constraintsTable->resizeColumnsToContents();
|
|
||||||
ui->constraintsTable->selectionModel()->reset();
|
|
||||||
|
|
||||||
m_indexModel->setData(m_catalog, table);
|
|
||||||
ui->indexesTable->resizeColumnsToContents();
|
|
||||||
|
|
||||||
m_triggerPage->setFilter(table);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//void TablesPage::constraintsTable_currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous)
|
|
||||||
//{
|
|
||||||
// if (current.row() != previous.row()) {
|
|
||||||
//// QString drop_definition = m_constraintModel->dropDefinition(current.row());
|
|
||||||
//// QString create_definition = m_constraintModel->createDefinition(current.row());
|
|
||||||
// const PgConstraint& constraint = m_constraintModel->constraint(current.row());
|
|
||||||
// QString drop = getDropConstraintDefinition(*m_catalog, constraint);
|
|
||||||
// QString add = getConstraintDefinition(*m_catalog, constraint);
|
|
||||||
|
|
||||||
// ui->constraintSqlEdit->setPlainText(drop % QString::fromUtf16(u"\n") % add);
|
void TablesPage::tableListTable_layoutChanged(const QList<QPersistentModelIndex> &, QAbstractItemModel::LayoutChangeHint )
|
||||||
// }
|
{
|
||||||
//}
|
auto&& index = ui->tableListTable->selectionModel()->currentIndex();
|
||||||
|
PgClass table = m_tablesModel->getTable(index.row());
|
||||||
|
selectedTableChanged(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TablesPage::selectedTableChanged(const PgClass & table)
|
||||||
|
{
|
||||||
|
m_columnsModel->setData(m_catalog, table);
|
||||||
|
ui->columnsTable->resizeColumnsToContents();
|
||||||
|
|
||||||
|
m_constraintModel->setData(m_catalog, table);
|
||||||
|
ui->constraintsTable->resizeColumnsToContents();
|
||||||
|
ui->constraintsTable->selectionModel()->reset();
|
||||||
|
|
||||||
|
m_indexModel->setData(m_catalog, table);
|
||||||
|
ui->indexesTable->resizeColumnsToContents();
|
||||||
|
|
||||||
|
m_triggerPage->setFilter(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void TablesPage::constraintsTable_selectionChanged(const QItemSelection &/*selected*/, const QItemSelection &/*deselected*/)
|
void TablesPage::constraintsTable_selectionChanged(const QItemSelection &/*selected*/, const QItemSelection &/*deselected*/)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ class IndexModel;
|
||||||
class MainWindow;
|
class MainWindow;
|
||||||
class PropertiesPage;
|
class PropertiesPage;
|
||||||
class TriggerPage;
|
class TriggerPage;
|
||||||
|
class PgClass;
|
||||||
|
|
||||||
class TablesPage : public QWidget
|
class TablesPage : public QWidget
|
||||||
{
|
{
|
||||||
|
|
@ -44,9 +45,12 @@ private:
|
||||||
|
|
||||||
void retranslateUi(bool all = true);
|
void retranslateUi(bool all = true);
|
||||||
QWidget* addDetailTab(QWidget *contents);
|
QWidget* addDetailTab(QWidget *contents);
|
||||||
|
|
||||||
|
void selectedTableChanged(const PgClass & table);
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
void tableListTable_currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous);
|
void tableListTable_currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous);
|
||||||
|
void tableListTable_layoutChanged(const QList<QPersistentModelIndex> &parents, QAbstractItemModel::LayoutChangeHint hint);
|
||||||
// void constraintsTable_currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous);
|
// void constraintsTable_currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous);
|
||||||
void constraintsTable_selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
|
void constraintsTable_selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
|
||||||
void constraintsTable_modelReset();
|
void constraintsTable_modelReset();
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ TriggerPage::TriggerPage(QWidget *parent)
|
||||||
m_sortFilterProxy->setSourceModel(m_model);
|
m_sortFilterProxy->setSourceModel(m_model);
|
||||||
m_tableView->setModel(m_sortFilterProxy);
|
m_tableView->setModel(m_sortFilterProxy);
|
||||||
m_tableView->setSortingEnabled(true);
|
m_tableView->setSortingEnabled(true);
|
||||||
|
m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
|
||||||
auto item_delegate = new PgLabItemDelegate(this);
|
auto item_delegate = new PgLabItemDelegate(this);
|
||||||
m_tableView->setItemDelegate(item_delegate);
|
m_tableView->setItemDelegate(item_delegate);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue