From ddc163a0eee0007971e70a9b0ac2a9d1366400d1 Mon Sep 17 00:00:00 2001 From: eelke Date: Sat, 12 Jun 2021 07:36:24 +0200 Subject: [PATCH] Give the tables default sorting --- pglab/ColumnPage.cpp | 3 +- pglab/TablesTableModel.cpp | 90 ++++++++++++------------- pglab/TablesTableModel.h | 6 +- pglab/TriggerPage.cpp | 1 + pglab/widgets/CatalogConstraintPage.cpp | 3 + pglab/widgets/CatalogFunctionsPage.cpp | 2 + pglab/widgets/CatalogIndexPage.cpp | 3 + pglab/widgets/CatalogSequencesPage.cpp | 2 + pglab/widgets/CatalogTablesPage.cpp | 4 +- pglab/widgets/CatalogTypesPage.cpp | 2 + 10 files changed, 66 insertions(+), 50 deletions(-) diff --git a/pglab/ColumnPage.cpp b/pglab/ColumnPage.cpp index 6921a45..a2257cb 100644 --- a/pglab/ColumnPage.cpp +++ b/pglab/ColumnPage.cpp @@ -6,10 +6,10 @@ #include "PgLabTableView.h" #include "ResultTableModelUtil.h" #include "SqlCodePreview.h" -//#include "PgLabItemDelegate.h" #include "SqlFormattingUtils.h" #include "UserConfiguration.h" #include "catalog/PgClass.h" +#include #include #include #include @@ -28,6 +28,7 @@ ColumnPage::ColumnPage(QWidget *parent) m_sortFilterProxy->setSourceModel(m_columnModel); m_tableView->setItemDelegateForColumn(ColumnTableModel::TypeCol, new QStyledItemDelegate(this)); m_tableView->setModel(m_sortFilterProxy); + m_tableView->horizontalHeader()->setSortIndicator(ColumnTableModel::AttnumCol, Qt::AscendingOrder); m_tableView->setSortingEnabled(true); // m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows); m_sortFilterProxy->sort(ColumnTableModel::AttnumCol, Qt::AscendingOrder); diff --git a/pglab/TablesTableModel.cpp b/pglab/TablesTableModel.cpp index e6eca5c..9c30d27 100644 --- a/pglab/TablesTableModel.cpp +++ b/pglab/TablesTableModel.cpp @@ -63,60 +63,60 @@ void TablesTableModel::refresh() m_tables.push_back(e); } - doSort(1); +// doSort(1); } -void TablesTableModel::setSortOrder(int so) -{ - beginResetModel(); - doSort(so); - endResetModel(); -} +//void TablesTableModel::setSortOrder(int so) +//{ +// beginResetModel(); +// doSort(so); +// endResetModel(); +//} -namespace { +//namespace { - inline bool compareByName(PgClass l, PgClass r) - { - return l.objectName() < r.objectName() - || (l.objectName() == r.objectName() && l.nsName() < r.nsName()); - } +// inline bool compareByName(PgClass l, PgClass r) +// { +// return l.objectName() < r.objectName() +// || (l.objectName() == r.objectName() && l.nsName() < r.nsName()); +// } - inline bool compareBySchema(PgClass l, PgClass r) - { - return l.nsName() < r.nsName() - || (l.nsName() == r.nsName() && l.objectName() < r.objectName()); - } +// inline bool compareBySchema(PgClass l, PgClass r) +// { +// return l.nsName() < r.nsName() +// || (l.nsName() == r.nsName() && l.objectName() < r.objectName()); +// } -} +//} -void TablesTableModel::sort(int column, Qt::SortOrder order) -{ - if (column == NameCol) { - if (order == Qt::AscendingOrder) - std::sort(m_tables.begin(), m_tables.end(), compareByName); - else - std::sort(m_tables.begin(), m_tables.end(), [] (auto l, auto r) { return !compareByName(l, r); }); - } - else if (column == NamespaceCol) { - if (order == Qt::AscendingOrder) - std::sort(m_tables.begin(), m_tables.end(), compareBySchema); - else - std::sort(m_tables.begin(), m_tables.end(), [] (auto l, auto r) { return !compareBySchema(l, r); }); - } +//void TablesTableModel::sort(int column, Qt::SortOrder order) +//{ +// if (column == NameCol) { +// if (order == Qt::AscendingOrder) +// std::sort(m_tables.begin(), m_tables.end(), compareByName); +// else +// std::sort(m_tables.begin(), m_tables.end(), [] (auto l, auto r) { return !compareByName(l, r); }); +// } +// else if (column == NamespaceCol) { +// if (order == Qt::AscendingOrder) +// std::sort(m_tables.begin(), m_tables.end(), compareBySchema); +// else +// std::sort(m_tables.begin(), m_tables.end(), [] (auto l, auto r) { return !compareBySchema(l, r); }); +// } - emit layoutChanged(); -} +// emit layoutChanged(); +//} -void TablesTableModel::doSort(int ) -{ -// if (so == 1) -// std::sort(m_tables.begin(), m_tables.end(), -// [] (auto l, auto r) -> bool { return l.relnamespace_name < r.relnamespace_name -// || (l.relnamespace_name == r.relnamespace_name && l.name < r.name); }); -// else -// std::sort(m_tables.begin(), m_tables.end(), -// [] (auto l, auto r) -> bool { return l.name < r.name; }); -} +//void TablesTableModel::doSort(int ) +//{ +//// if (so == 1) +//// std::sort(m_tables.begin(), m_tables.end(), +//// [] (auto l, auto r) -> bool { return l.relnamespace_name < r.relnamespace_name +//// || (l.relnamespace_name == r.relnamespace_name && l.name < r.name); }); +//// else +//// std::sort(m_tables.begin(), m_tables.end(), +//// [] (auto l, auto r) -> bool { return l.name < r.name; }); +//} QVariant TablesTableModel::headerData(int section, Qt::Orientation orientation, int role) const diff --git a/pglab/TablesTableModel.h b/pglab/TablesTableModel.h index c6d1e6f..6859336 100644 --- a/pglab/TablesTableModel.h +++ b/pglab/TablesTableModel.h @@ -35,8 +35,8 @@ public: void setNamespaceFilter(NamespaceFilter nsf); void setCatalog(std::shared_ptr cat); - virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; - void setSortOrder(int so); +// virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; +// void setSortOrder(int so); // Header: QVariant headerData(int section, Qt::Orientation orientation, int role) const override; @@ -61,7 +61,7 @@ private: Oid getType(int column) const; QVariant getData(const QModelIndex &index) const; // QString formatTableName(const PgClass &cls) const; - void doSort(int so); +// void doSort(int so); private slots: void refresh(); diff --git a/pglab/TriggerPage.cpp b/pglab/TriggerPage.cpp index 3977c44..eab0ae1 100644 --- a/pglab/TriggerPage.cpp +++ b/pglab/TriggerPage.cpp @@ -8,6 +8,7 @@ #include "CustomDataRole.h" #include "PgLabTableView.h" #include "catalog/PgProcContainer.h" +#include #include #include diff --git a/pglab/widgets/CatalogConstraintPage.cpp b/pglab/widgets/CatalogConstraintPage.cpp index 33ff420..1a83d78 100644 --- a/pglab/widgets/CatalogConstraintPage.cpp +++ b/pglab/widgets/CatalogConstraintPage.cpp @@ -4,6 +4,7 @@ #include "IconColumnDelegate.h" #include "PgLabTableView.h" #include "SqlCodePreview.h" +#include #include CatalogConstraintPage::CatalogConstraintPage(QWidget *parent) @@ -13,6 +14,8 @@ CatalogConstraintPage::CatalogConstraintPage(QWidget *parent) m_sortFilterProxy->setSourceModel(m_constraintModel); m_tableView->setItemDelegateForColumn(0, new IconColumnDelegate(this)); + m_tableView->horizontalHeader()->setSortIndicator(ConstraintModel::NameCol, Qt::AscendingOrder); + m_tableView->setSortingEnabled(true); connect(m_tableView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &CatalogConstraintPage::tableView_selectionChanged); diff --git a/pglab/widgets/CatalogFunctionsPage.cpp b/pglab/widgets/CatalogFunctionsPage.cpp index bd6f20f..6fbc4d9 100644 --- a/pglab/widgets/CatalogFunctionsPage.cpp +++ b/pglab/widgets/CatalogFunctionsPage.cpp @@ -7,6 +7,7 @@ #include "SqlCodePreview.h" #include #include "PgLabTableView.h" +#include #include #include @@ -35,6 +36,7 @@ CatalogFunctionsPage::CatalogFunctionsPage(QWidget *parent) m_sortFilterProxy = new CustomFilterSortModel(this); m_sortFilterProxy->setSourceModel(m_model); m_functionTable->setModel(m_sortFilterProxy); + m_functionTable->horizontalHeader()->setSortIndicator(0, Qt::AscendingOrder); m_functionTable->setSortingEnabled(true); m_functionTable->setSelectionBehavior(QAbstractItemView::SelectRows); m_functionTable->setSelectionMode(QAbstractItemView::SingleSelection); diff --git a/pglab/widgets/CatalogIndexPage.cpp b/pglab/widgets/CatalogIndexPage.cpp index af5e9f3..3025805 100644 --- a/pglab/widgets/CatalogIndexPage.cpp +++ b/pglab/widgets/CatalogIndexPage.cpp @@ -3,6 +3,7 @@ #include "IndexModel.h" #include "PgLabTableView.h" #include "SqlCodePreview.h" +#include #include #include "IconColumnDelegate.h" @@ -13,6 +14,8 @@ CatalogIndexPage::CatalogIndexPage(QWidget *parent) m_indexModel = new IndexModel(this); m_sortFilterProxy->setSourceModel(m_indexModel); m_tableView->setItemDelegateForColumn(0, new IconColumnDelegate(this)); + m_tableView->horizontalHeader()->setSortIndicator(IndexModel::NameCol, Qt::AscendingOrder); + m_tableView->setSortingEnabled(true); connect(m_tableView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &CatalogIndexPage::tableView_selectionChanged); diff --git a/pglab/widgets/CatalogSequencesPage.cpp b/pglab/widgets/CatalogSequencesPage.cpp index 1af5c22..21a3306 100644 --- a/pglab/widgets/CatalogSequencesPage.cpp +++ b/pglab/widgets/CatalogSequencesPage.cpp @@ -6,6 +6,7 @@ #include "SequenceModel.h" #include "SqlCodePreview.h" #include "PgLabTableView.h" +#include CatalogSequencesPage::CatalogSequencesPage(QWidget *parent) : QSplitter(Qt::Horizontal, parent) @@ -22,6 +23,7 @@ CatalogSequencesPage::CatalogSequencesPage(QWidget *parent) m_sortFilterProxy = new CustomFilterSortModel(this); m_sortFilterProxy->setSourceModel(m_model); m_sequenceTable->setModel(m_sortFilterProxy); + m_sequenceTable->horizontalHeader()->setSortIndicator(SequenceModel::NameCol, Qt::AscendingOrder); m_sequenceTable->setSortingEnabled(true); m_sequenceTable->setSelectionBehavior(QAbstractItemView::SelectRows); m_sequenceTable->setSelectionMode(QAbstractItemView::SingleSelection); diff --git a/pglab/widgets/CatalogTablesPage.cpp b/pglab/widgets/CatalogTablesPage.cpp index 5e3b936..38b2e3a 100644 --- a/pglab/widgets/CatalogTablesPage.cpp +++ b/pglab/widgets/CatalogTablesPage.cpp @@ -18,6 +18,7 @@ #include "widgets/CatalogIndexPage.h" #include +#include #include #include #include @@ -38,7 +39,8 @@ CatalogTablesPage::CatalogTablesPage(QWidget *parent) m_tablesModel = new TablesTableModel(this); m_tablesSortFilter = new QSortFilterProxyModel(this); m_tablesSortFilter->setSourceModel(m_tablesModel); - m_tableView->setModel(m_tablesSortFilter); + m_tableView->setModel(m_tablesSortFilter); + m_tableView->horizontalHeader()->setSortIndicator(TablesTableModel::NameCol, Qt::AscendingOrder); m_tableView->setSortingEnabled(true); // - Columns page diff --git a/pglab/widgets/CatalogTypesPage.cpp b/pglab/widgets/CatalogTypesPage.cpp index a924e5f..906103c 100644 --- a/pglab/widgets/CatalogTypesPage.cpp +++ b/pglab/widgets/CatalogTypesPage.cpp @@ -8,6 +8,7 @@ #include "SqlCodePreview.h" #include "PgLabTableView.h" #include +#include CatalogTypesPage::CatalogTypesPage(QWidget *parent) : QSplitter(Qt::Horizontal, parent) @@ -24,6 +25,7 @@ CatalogTypesPage::CatalogTypesPage(QWidget *parent) m_sortFilterProxy = new CustomFilterSortModel(this); m_sortFilterProxy->setSourceModel(m_model); m_typeTable->setModel(m_sortFilterProxy); + m_typeTable->horizontalHeader()->setSortIndicator(TypeModel::NameCol, Qt::AscendingOrder); m_typeTable->setSortingEnabled(true); m_typeTable->setSelectionBehavior(QAbstractItemView::SelectRows); m_typeTable->setSelectionMode(QAbstractItemView::SingleSelection);