mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-01-20 02:50:46 -06:00
Move filter header from window to table widget and show sort indicators
Move the FilterTableHeader object from the MainWindow to the ExtendedTableWidget class because it actually is a part of the latter, not the former. Show sort order arrows in the table header of the Browse Data tab after clicking it.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "ExtendedTableWidget.h"
|
||||
#include "sqlitetablemodel.h"
|
||||
#include "FilterTableHeader.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
@@ -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()
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define __EXTENDEDTABLEWIDGET_H__
|
||||
|
||||
#include <QTableView>
|
||||
#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
|
||||
|
||||
@@ -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()));
|
||||
|
||||
@@ -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<FilterTableHeader*>(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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -174,6 +174,9 @@
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
||||
Reference in New Issue
Block a user