From 7630723b69e0743729005626feef941c3a754b4c Mon Sep 17 00:00:00 2001 From: eelke Date: Mon, 27 Aug 2018 21:12:27 +0200 Subject: [PATCH] Switched TablesTableModel to rely on the PgLabDelegate for formatting instead of the old model base class. --- pglab/TablesPage.cpp | 12 ++++++++---- pglab/TablesTableModel.cpp | 35 ++++++++++++----------------------- pglab/TablesTableModel.h | 8 +++----- 3 files changed, 23 insertions(+), 32 deletions(-) diff --git a/pglab/TablesPage.cpp b/pglab/TablesPage.cpp index fd0703a..5c15fac 100644 --- a/pglab/TablesPage.cpp +++ b/pglab/TablesPage.cpp @@ -24,9 +24,13 @@ TablesPage::TablesPage(MainWindow *parent) { ui->setupUi(this); + auto pglab_delegate = new PgLabItemDelegate(this); + auto icon_delegate = new IconColumnDelegate(this); + SetTableViewDefault(ui->tableListTable); m_tablesModel = new TablesTableModel(this); ui->tableListTable->setModel(m_tablesModel); + ui->tableListTable->setItemDelegate(pglab_delegate); ui->tableListTable->setSortingEnabled(true); ui->tableListTable->sortByColumn(0, Qt::AscendingOrder); @@ -36,9 +40,8 @@ TablesPage::TablesPage(MainWindow *parent) SetTableViewDefault(ui->constraintsTable); m_constraintModel = new ConstraintModel(this); - auto delegate = new IconColumnDelegate(this); ui->constraintsTable->setModel(m_constraintModel); - ui->constraintsTable->setItemDelegateForColumn(0, delegate); + ui->constraintsTable->setItemDelegateForColumn(0, icon_delegate); QFont font; font.setFamily("Source Code Pro"); @@ -50,13 +53,14 @@ TablesPage::TablesPage(MainWindow *parent) SetTableViewDefault(ui->indexesTable); m_indexModel = new IndexModel(this); ui->indexesTable->setModel(m_indexModel); - ui->indexesTable->setItemDelegate(new PgLabItemDelegate(ui->indexesTable)); - ui->indexesTable->setItemDelegateForColumn(0, delegate); + ui->indexesTable->setItemDelegate(pglab_delegate); + ui->indexesTable->setItemDelegateForColumn(0, icon_delegate); PropertyProxyModel* property_model = new PropertyProxyModel(this); property_model->setSourceModel(m_tablesModel); SetTableViewDefault(ui->tablePropertiesTable); ui->tablePropertiesTable->setModel(property_model); + ui->tablePropertiesTable->setItemDelegate(pglab_delegate); connect(ui->tableListTable->selectionModel(), &QItemSelectionModel::currentChanged, [property_model](const QModelIndex ¤t, const QModelIndex &) { diff --git a/pglab/TablesTableModel.cpp b/pglab/TablesTableModel.cpp index 41e42ec..cf38f0a 100644 --- a/pglab/TablesTableModel.cpp +++ b/pglab/TablesTableModel.cpp @@ -5,13 +5,12 @@ #include "PgNamespace.h" #include "PgNamespaceContainer.h" #include "Pgsql_declare.h" +#include "CustomDataRole.h" #include TablesTableModel::TablesTableModel(QObject *parent) - : BaseTableModel(parent) -{ - -} + : QAbstractTableModel(parent) +{} void TablesTableModel::setCatalog(std::shared_ptr cat) { @@ -166,11 +165,11 @@ QVariant TablesTableModel::getData(const QModelIndex &index) const v = getTablespaceDisplayString(*m_catalog, t.tablespace); break; case OptionsCol: - v = t.options; + //v = t.options; break; -// case AclCol: -// v = t.acl; -// break; + // case AclCol: + // v = t.acl; + // break; } return v; @@ -195,19 +194,9 @@ QString TablesTableModel::formatTableName(const PgClass &cls) const QVariant TablesTableModel::data(const QModelIndex &index, int role) const { - - if (role == Qt::ForegroundRole) { - - const auto &t = m_tables[index.row()]; - auto ns = m_catalog->namespaces()->getByKey(t.relnamespace); - if (ns.isSystemCatalog()) { - switch (index.column()) { - case NameCol: - case NamespaceCol: - return QBrush(Qt::blue); - break; - } - } - } - return BaseTableModel::data(index, role); + if (role == Qt::DisplayRole) + return getData(index); + else if (role == CustomDataTypeRole) + return getType(index.column()); + return QVariant(); } diff --git a/pglab/TablesTableModel.h b/pglab/TablesTableModel.h index 2c9b16e..1277c82 100644 --- a/pglab/TablesTableModel.h +++ b/pglab/TablesTableModel.h @@ -9,8 +9,7 @@ class PgClass; class PgDatabaseCatalog; -class TablesTableModel: public BaseTableModel -{ +class TablesTableModel: public QAbstractTableModel { public: enum e_Columns : int { NameCol, ///< either table, ns.table or table (ns) depending on settings/filters @@ -38,9 +37,6 @@ public: virtual QVariant data(const QModelIndex &index, int role) const override; PgClass getTable(int row) const; Oid getTableOid(int row) const; -protected: - virtual Oid getType(int column) const override; - virtual QVariant getData(const QModelIndex &index) const override; private: using t_Tables = std::vector; @@ -48,6 +44,8 @@ private: std::shared_ptr m_catalog; t_Tables m_tables; + Oid getType(int column) const; + QVariant getData(const QModelIndex &index) const; QString formatTableName(const PgClass &cls) const; void doSort(int so); };