From 78edc8f991370715eb09545d69ccc5ccc52c454f Mon Sep 17 00:00:00 2001 From: mgrojo Date: Fri, 19 Mar 2021 16:58:17 +0100 Subject: [PATCH] Table Browser: give hint of table sorted or filtered state in the toolbar The Clear Filters button is enabled if and only if there is some filter set for the browsed table. The Clear Sorting button is enabled if and only if the table is sorted by some column. See issue #2616 --- src/TableBrowser.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/TableBrowser.cpp b/src/TableBrowser.cpp index aba4996c..4bb78246 100644 --- a/src/TableBrowser.cpp +++ b/src/TableBrowser.cpp @@ -129,6 +129,8 @@ TableBrowser::TableBrowser(DBBrowserDB* _db, QWidget* parent) : std::vector filters; std::copy(values.begin(), values.end(), std::back_inserter(filters)); + ui->actionClearFilters->setEnabled(m_model->filterCount() > 0 || !ui->editGlobalFilter->text().isEmpty()); + // Have they changed? BrowseDataTableSettings& settings = m_settings[currentlyBrowsedTableName()]; if(filters != settings.globalFilters) @@ -562,6 +564,8 @@ void TableBrowser::updateFilter(size_t column, const QString& value) const std::string column_name = model()->headerData(static_cast(column), Qt::Horizontal, Qt::EditRole).toString().toStdString(); m_model->updateFilter(column_name, value); + ui->actionClearFilters->setEnabled(m_model->filterCount() > 0 || !ui->editGlobalFilter->text().isEmpty()); + // Save the new filter settings BrowseDataTableSettings& settings = m_settings[currentlyBrowsedTableName()]; if(value.isEmpty()) @@ -754,6 +758,7 @@ sqlb::Query TableBrowser::buildQuery(const BrowseDataTableSettings& storedData, // Sorting query.setOrderBy(storedData.sortColumns); + ui->actionClearSorting->setEnabled(storedData.sortColumns.size() > 0); // Filters for(auto it=storedData.filterValues.cbegin();it!=storedData.filterValues.cend();++it) @@ -934,6 +939,8 @@ void TableBrowser::generateFilters() for(auto filterIt=settings.filterValues.cbegin();filterIt!=settings.filterValues.cend();++filterIt) ui->dataTable->setFilter(sqlb::getFieldNumber(obj, filterIt->first) + 1, filterIt->second); filterHeader->blockSignals(oldState); + + ui->actionClearFilters->setEnabled(m_model->filterCount() > 0 || !ui->editGlobalFilter->text().isEmpty()); } void TableBrowser::unlockViewEditing(bool unlock, QString pk) @@ -1152,6 +1159,8 @@ void TableBrowser::headerClicked(int logicalindex) // Do the actual sorting ui->dataTable->sortByColumns(columns); + ui->actionClearSorting->setEnabled(columns.size() > 0); + // select the first item in the column so the header is bold // we might try to select the last selected item ui->dataTable->setCurrentIndex(ui->dataTable->currentIndex().sibling(0, logicalindex)); @@ -1373,6 +1382,8 @@ void TableBrowser::on_actionClearSorting_triggered() columns.clear(); // Set cleared vector of sort-by columns m_model->sort(columns); + + ui->actionClearSorting->setEnabled(false); } void TableBrowser::editDisplayFormat()