From fc78fc2f3c445e3aa0d800d4c7e4678111cf934f Mon Sep 17 00:00:00 2001 From: mgrojo Date: Wed, 5 Aug 2020 14:13:44 +0200 Subject: [PATCH] Hide filters when table is empty Additionally, the record set label wasn't been updated when a new record is added or deleted. See issue #2188 and (related) #2353 --- src/FilterTableHeader.cpp | 10 ++++++++++ src/FilterTableHeader.h | 1 + src/TableBrowser.cpp | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/src/FilterTableHeader.cpp b/src/FilterTableHeader.cpp index 0149e39e..3f19f033 100644 --- a/src/FilterTableHeader.cpp +++ b/src/FilterTableHeader.cpp @@ -128,3 +128,13 @@ void FilterTableHeader::setFilter(size_t column, const QString& value) if(column < filterWidgets.size()) filterWidgets.at(column)->setText(value); } + +void FilterTableHeader::setFiltersVisible(bool visible) +{ + // Loop through all widgets + for(size_t i=0; i < filterWidgets.size(); ++i) + { + // Get the current widget, and set it visible or not + filterWidgets.at(i)->setVisible(visible); + } +} diff --git a/src/FilterTableHeader.h b/src/FilterTableHeader.h index ef64eaf2..89baf203 100644 --- a/src/FilterTableHeader.h +++ b/src/FilterTableHeader.h @@ -15,6 +15,7 @@ public: explicit FilterTableHeader(QTableView* parent = nullptr); QSize sizeHint() const override; bool hasFilters() const {return (filterWidgets.size() > 0);} + void setFiltersVisible(bool visible); public slots: void generateFilters(size_t number, bool showFirst = false); diff --git a/src/TableBrowser.cpp b/src/TableBrowser.cpp index 87fba5ed..d08bc4d3 100644 --- a/src/TableBrowser.cpp +++ b/src/TableBrowser.cpp @@ -689,6 +689,10 @@ void TableBrowser::updateRecordsetLabel() (obj->type() == sqlb::Object::Table)); } enableEditing(m_model->rowCountAvailable() != SqliteTableModel::RowCount::Unknown && is_table_or_unlocked_view); + + // Show filters unless the table is empty + const bool filtersVisible = m_model->rowCount() > 0 || m_model->filterCount() != 0; + qobject_cast(ui->dataTable->horizontalHeader())->setFiltersVisible(filtersVisible); } sqlb::Query TableBrowser::buildQuery(const BrowseDataTableSettings& storedData, const sqlb::ObjectIdentifier& tablename) const @@ -1198,6 +1202,7 @@ void TableBrowser::addRecord() // User has to provide values acomplishing the constraints. Open Add Record Dialog. insertValues(); } + updateRecordsetLabel(); } void TableBrowser::insertValues() @@ -1235,6 +1240,7 @@ void TableBrowser::deleteRecord() } else { QMessageBox::information( this, QApplication::applicationName(), tr("Please select a record first")); } + updateRecordsetLabel(); } void TableBrowser::navigatePrevious()