From 38ae5f50e425a472b61013bd0177c6cd5ba95363 Mon Sep 17 00:00:00 2001 From: eelke Date: Sat, 20 Oct 2018 10:58:42 +0200 Subject: [PATCH] Moved code from TablesPage into seperate PropetiesPage component Clears up the TablePage and makes rhe propertypage reusable. --- pglab/PropertiesPage.cpp | 25 +++++++++++++++++++++++++ pglab/PropertiesPage.h | 28 ++++++++++++++++++++++++++++ pglab/TablesPage.cpp | 28 +++++++++++----------------- pglab/TablesPage.h | 5 ++++- pglab/TablesPage.ui | 12 +----------- pglab/TriggerPage.cpp | 3 --- pglab/TriggerPage.h | 2 -- pglab/pglab.pro | 6 ++++-- 8 files changed, 73 insertions(+), 36 deletions(-) create mode 100644 pglab/PropertiesPage.cpp create mode 100644 pglab/PropertiesPage.h diff --git a/pglab/PropertiesPage.cpp b/pglab/PropertiesPage.cpp new file mode 100644 index 0000000..6ab4d06 --- /dev/null +++ b/pglab/PropertiesPage.cpp @@ -0,0 +1,25 @@ +#include "PropertiesPage.h" +#include "PgLabItemDelegate.h" +#include "PropertyProxyModel.h" +#include "ResultTableModelUtil.h" +#include "SqlCodePreview.h" +#include + +PropertiesPage::PropertiesPage(QWidget *parent) : QSplitter(parent) +{ + m_tableView = new QTableView(this); +// m_definitionView = new SqlCodePreview(this); + addWidget(m_tableView); +// addWidget(m_definitionView); + + SetTableViewDefault(m_tableView); + + m_propertyProxyModel = new PropertyProxyModel(this); + m_tableView->setModel(m_propertyProxyModel); + + auto item_delegate = new PgLabItemDelegate(this); + m_tableView->setItemDelegate(item_delegate); +} + + +//property_model->setSourceModel(m_tablesModel); diff --git a/pglab/PropertiesPage.h b/pglab/PropertiesPage.h new file mode 100644 index 0000000..e169eba --- /dev/null +++ b/pglab/PropertiesPage.h @@ -0,0 +1,28 @@ +#ifndef PROPERTIESPAGE_H +#define PROPERTIESPAGE_H + +#include + +class QTableView; +class SqlCodePreview; +class PgDatabaseCatalog; +class PropertyProxyModel; + +class PropertiesPage : public QSplitter +{ + Q_OBJECT +public: + explicit PropertiesPage(QWidget *parent = nullptr); + +signals: + +public slots: + +private: + QTableView *m_tableView = nullptr; +// SqlCodePreview *m_definitionView = nullptr; + PropertyProxyModel *m_propertyProxyModel = nullptr; + +}; + +#endif // PROPERTIESPAGE_H diff --git a/pglab/TablesPage.cpp b/pglab/TablesPage.cpp index 97bfb23..a64fc33 100644 --- a/pglab/TablesPage.cpp +++ b/pglab/TablesPage.cpp @@ -9,7 +9,7 @@ #include "IndexModel.h" #include "MainWindow.h" #include "PgLabItemDelegate.h" -#include "PropertyProxyModel.h" +#include "PropertiesPage.h" #include "ResultTableModelUtil.h" #include "SqlFormattingUtils.h" #include "SqlSyntaxHighlighter.h" @@ -54,14 +54,6 @@ TablesPage::TablesPage(MainWindow *parent) ui->indexesTable->setItemDelegate(pglab_delegate); ui->indexesTable->setItemDelegateForColumn(0, icon_delegate); - // Properties - PropertyProxyModel* property_model = new PropertyProxyModel(this); - property_model->setSourceModel(m_tablesModel); - SetTableViewDefault(ui->tablePropertiesTable); - ui->tablePropertiesTable->setModel(property_model); - ui->tablePropertiesTable->setItemDelegate(pglab_delegate); - - // Set code editor fonts QFont code_font = UserConfiguration::instance()->codeFont(); ui->constraintSqlEdit->setFont(code_font); @@ -71,14 +63,11 @@ TablesPage::TablesPage(MainWindow *parent) // Connect signals // --------------- // Table selection - connect(ui->tableListTable->selectionModel(), &QItemSelectionModel::currentRowChanged, - property_model, &PropertyProxyModel::setActiveRow); +// connect(ui->tableListTable->selectionModel(), &QItemSelectionModel::currentRowChanged, +// property_model, &PropertyProxyModel::setActiveRow); connect(ui->tableListTable->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &TablesPage::tableListTable_currentRowChanged); -// connect(ui->constraintsTable->selectionModel(), &QItemSelectionModel::currentRowChanged, this, -// &TablesPage::constraintsTable_currentRowChanged); - connect(ui->constraintsTable->selectionModel(), &QItemSelectionModel::selectionChanged, this, &TablesPage::constraintsTable_selectionChanged); connect(ui->constraintsTable->model(), &QAbstractItemModel::modelReset, this, @@ -92,8 +81,12 @@ TablesPage::TablesPage(MainWindow *parent) &TablesPage::indexesTable_modelReset); // Non designer based code + m_propertiesPage = new PropertiesPage(this); + m_propertiesTab = addDetailTab(m_propertiesPage); + m_triggerPage = new TriggerPage(this); - m_triggerTab = addDetailTab(m_triggerPage, tr("Triggers")); + m_triggerTab = addDetailTab(m_triggerPage); + retranslateUi(false); } @@ -103,16 +96,17 @@ void TablesPage::retranslateUi(bool all) if (all) ui->retranslateUi(this); + ui->twDetails->setTabText(ui->twDetails->indexOf(m_propertiesTab), QApplication::translate("TablesPage", "Properties", nullptr)); ui->twDetails->setTabText(ui->twDetails->indexOf(m_triggerTab), QApplication::translate("TablesPage", "Triggers", nullptr)); } -QWidget* TablesPage::addDetailTab(QWidget *contents, QString caption) +QWidget* TablesPage::addDetailTab(QWidget *contents) { auto tab = new QWidget(); auto verticalLayout = new QVBoxLayout(tab); verticalLayout->addWidget(contents); - ui->twDetails->addTab(tab, caption); + ui->twDetails->addTab(tab, ""); return tab; } diff --git a/pglab/TablesPage.h b/pglab/TablesPage.h index 81c437a..23d2443 100644 --- a/pglab/TablesPage.h +++ b/pglab/TablesPage.h @@ -16,6 +16,7 @@ class PgDatabaseCatalog; class NamespaceFilterWidget; class IndexModel; class MainWindow; +class PropertiesPage; class TriggerPage; class TablesPage : public QWidget @@ -30,6 +31,8 @@ public: private: Ui::TablesPage *ui; MainWindow *m_window; + QWidget *m_propertiesTab; + PropertiesPage *m_propertiesPage; QWidget *m_triggerTab; TriggerPage *m_triggerPage; std::shared_ptr m_catalog; @@ -40,7 +43,7 @@ private: //NamespaceFilterWidget* m_namespaceFilterWidget; void retranslateUi(bool all = true); - QWidget* addDetailTab(QWidget *contents, QString caption); + QWidget* addDetailTab(QWidget *contents); private slots: void tableListTable_currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous); diff --git a/pglab/TablesPage.ui b/pglab/TablesPage.ui index 93c8b26..b562cda 100644 --- a/pglab/TablesPage.ui +++ b/pglab/TablesPage.ui @@ -38,7 +38,7 @@ - 3 + 2 @@ -86,16 +86,6 @@ - - - Properties - - - - - - - diff --git a/pglab/TriggerPage.cpp b/pglab/TriggerPage.cpp index 3eecfff..add7b1f 100644 --- a/pglab/TriggerPage.cpp +++ b/pglab/TriggerPage.cpp @@ -21,9 +21,6 @@ TriggerPage::TriggerPage(QWidget *parent) SetTableViewDefault(m_tableView); - QFont code_font = UserConfiguration::instance()->codeFont(); - m_definitionView->setFont(code_font); - m_model = new TriggerTableModel(this); m_sortFilterProxy = new CustomFilterSortModel(this); m_sortFilterProxy->setSourceModel(m_model); diff --git a/pglab/TriggerPage.h b/pglab/TriggerPage.h index 35cc4e3..00bb9ee 100644 --- a/pglab/TriggerPage.h +++ b/pglab/TriggerPage.h @@ -1,11 +1,9 @@ #ifndef TRIGGERPAGE_H #define TRIGGERPAGE_H -#include #include #include -class QSplitter; class QTableView; class SqlCodePreview; class PgDatabaseCatalog; diff --git a/pglab/pglab.pro b/pglab/pglab.pro index afb2036..7313d8a 100644 --- a/pglab/pglab.pro +++ b/pglab/pglab.pro @@ -82,7 +82,8 @@ PropertyProxyModel.cpp \ TriggerTableModel.cpp \ TriggerPage.cpp \ SqlCodePreview.cpp \ - CustomFilterSortModel.cpp + CustomFilterSortModel.cpp \ + PropertiesPage.cpp HEADERS += \ QueryResultModel.h \ @@ -135,7 +136,8 @@ CustomDataRole.h \ TriggerTableModel.h \ TriggerPage.h \ SqlCodePreview.h \ - CustomFilterSortModel.h + CustomFilterSortModel.h \ + PropertiesPage.h FORMS += mainwindow.ui \ ConnectionManagerWindow.ui \