diff --git a/src/ExtendedTableWidget.cpp b/src/ExtendedTableWidget.cpp index f5d400f1..1215a7bc 100644 --- a/src/ExtendedTableWidget.cpp +++ b/src/ExtendedTableWidget.cpp @@ -1,5 +1,6 @@ #include "ExtendedTableWidget.h" #include "sqlitetablemodel.h" +#include "FilterTableHeader.h" #include #include @@ -14,6 +15,10 @@ ExtendedTableWidget::ExtendedTableWidget(QWidget* parent) : setHorizontalScrollMode(ExtendedTableWidget::ScrollPerPixel); connect(verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(vscrollbarChanged(int))); + + // Set up filter row + m_tableHeader = new FilterTableHeader(this); + setHorizontalHeader(m_tableHeader); } void ExtendedTableWidget::copy() diff --git a/src/ExtendedTableWidget.h b/src/ExtendedTableWidget.h index 16a03539..2353b0e8 100644 --- a/src/ExtendedTableWidget.h +++ b/src/ExtendedTableWidget.h @@ -2,6 +2,7 @@ #define __EXTENDEDTABLEWIDGET_H__ #include +#include "FilterTableHeader.h" class ExtendedTableWidget : public QTableView { @@ -10,6 +11,8 @@ class ExtendedTableWidget : public QTableView public: explicit ExtendedTableWidget(QWidget* parent = 0); + FilterTableHeader* filterHeader() { return m_tableHeader; } + private: void copy(); int numVisibleRows(); @@ -20,6 +23,8 @@ private slots: protected: virtual void keyPressEvent(QKeyEvent* event); virtual void updateGeometries(); + + FilterTableHeader* m_tableHeader; }; #endif diff --git a/src/FilterTableHeader.cpp b/src/FilterTableHeader.cpp index c183e416..62f789f2 100644 --- a/src/FilterTableHeader.cpp +++ b/src/FilterTableHeader.cpp @@ -14,6 +14,8 @@ FilterTableHeader::FilterTableHeader(QTableView* parent) : setClickable(true); #endif + setSortIndicatorShown(true); + // Do some connects: Basically just resize and reposition the input widgets whenever anything changes connect(this, SIGNAL(sectionResized(int,int,int)), this, SLOT(adjustPositions())); connect(parent->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(adjustPositions())); diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index c76c3324..ab6cd063 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -11,7 +11,6 @@ #include "SQLiteSyntaxHighlighter.h" #include "sqltextedit.h" #include "sqlitetablemodel.h" -#include "FilterTableHeader.h" #include "SqlExecutionArea.h" #include "VacuumDialog.h" #include "DbStructureModel.h" @@ -78,10 +77,6 @@ void MainWindow::init() ui->dbTreeWidget->setColumnHidden(1, true); ui->dbTreeWidget->setColumnWidth(0, 300); - // Set up filter row - m_tableHeader = new FilterTableHeader(ui->dataTable); - ui->dataTable->setHorizontalHeader(m_tableHeader); - // Create the actions for the recently opened dbs list for(int i = 0; i < MaxRecentFiles; ++i) { recentFileActs[i] = new QAction(this); @@ -118,8 +113,8 @@ void MainWindow::init() ui->statusbar->addPermanentWidget(statusEncodingLabel); // Connect some more signals and slots - connect(m_tableHeader, SIGNAL(filterChanged(int,QString)), this, SLOT(setRecordsetLabel())); - connect(m_tableHeader, SIGNAL(sectionClicked(int)), this, SLOT(browseTableHeaderClicked(int))); + connect(ui->dataTable->filterHeader(), SIGNAL(filterChanged(int,QString)), this, SLOT(setRecordsetLabel())); + connect(ui->dataTable->filterHeader(), SIGNAL(sectionClicked(int)), this, SLOT(browseTableHeaderClicked(int))); connect(ui->dataTable->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setRecordsetLabel())); connect(editWin, SIGNAL(goingAway()), this, SLOT(editWinAway())); connect(editWin, SIGNAL(updateRecordText(int, int, QByteArray)), this, SLOT(updateRecordText(int, int, QByteArray))); @@ -302,6 +297,7 @@ void MainWindow::populateTable( const QString & tablename) curBrowseOrderByIndex = 0; curBrowseOrderByMode = Qt::AscendingOrder; m_browseTableModel->sort(curBrowseOrderByIndex, curBrowseOrderByMode); + ui->dataTable->filterHeader()->setSortIndicator(curBrowseOrderByIndex, curBrowseOrderByMode); // Update the filter row qobject_cast(ui->dataTable->horizontalHeader())->generateFilters(m_browseTableModel->columnCount()); @@ -369,7 +365,7 @@ void MainWindow::fileClose() // Delete the model for the Browse tab and create a new one delete m_browseTableModel; m_browseTableModel = new SqliteTableModel(this, &db, PreferencesDialog::getSettingsValue("db", "prefetchsize").toInt()); - connect(m_tableHeader, SIGNAL(filterChanged(int,QString)), m_browseTableModel, SLOT(updateFilter(int,QString))); + connect(ui->dataTable->filterHeader(), SIGNAL(filterChanged(int,QString)), m_browseTableModel, SLOT(updateFilter(int,QString))); // Manually update the recordset label inside the Browse tab now setRecordsetLabel(); diff --git a/src/MainWindow.h b/src/MainWindow.h index d4a19aab..cee216e1 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -19,7 +19,6 @@ class DbStructureModel; class QNetworkReply; class QNetworkAccessManager; class QTreeWidgetItem; -class FilterTableHeader; namespace Ui { class MainWindow; @@ -69,7 +68,6 @@ private: SqliteTableModel* m_browseTableModel; SqliteTableModel* m_currentPlotModel; - FilterTableHeader* m_tableHeader; QMenu *popupTableMenu; QMenu *recentFilesMenu; diff --git a/src/MainWindow.ui b/src/MainWindow.ui index 6b597a01..843173f4 100644 --- a/src/MainWindow.ui +++ b/src/MainWindow.ui @@ -174,6 +174,9 @@ QAbstractItemView::NoEditTriggers + + true +