From accac479e05c0d760f1da9fe653dfee91a1bcea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20K=C3=A4lberer?= Date: Sun, 14 May 2017 23:18:31 +0200 Subject: CMake: Filter CMake variables Add a text field to filter CMake variables in the CMake project configuration view. As in the cmake-gui, the filter does a simple string search over all variable names and values. Task-number: QTCREATORBUG-17973 Change-Id: Id7219c16509c620c39978cb05c5e0e62cf9c19df Reviewed-by: Tobias Hunger --- .../cmakeprojectmanager/cmakebuildsettingswidget.cpp | 19 +++++++++++++++++-- .../cmakeprojectmanager/cmakebuildsettingswidget.h | 4 ++++ 2 files changed, 21 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp index f77acdac10..fe85283ad2 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp @@ -38,6 +38,7 @@ #include #include +#include #include #include #include @@ -63,7 +64,8 @@ namespace Internal { CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc) : m_buildConfiguration(bc), m_configModel(new ConfigModel(this)), - m_configFilterModel(new QSortFilterProxyModel) + m_configFilterModel(new QSortFilterProxyModel), + m_configTextFilterModel(new QSortFilterProxyModel) { QTC_CHECK(bc); @@ -126,6 +128,12 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc) ++row; mainLayout->addItem(new QSpacerItem(20, 10), row, 0); + ++row; + m_filterEdit = new Utils::FancyLineEdit; + m_filterEdit->setPlaceholderText(tr("Filter")); + m_filterEdit->setFiltering(true); + mainLayout->addWidget(m_filterEdit, row, 0, 1, 2); + ++row; auto tree = new Utils::TreeView; connect(tree, &Utils::TreeView::activated, @@ -134,7 +142,10 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc) m_configFilterModel->setSourceModel(m_configModel); m_configFilterModel->setFilterKeyColumn(2); m_configFilterModel->setFilterFixedString(QLatin1String("0")); - m_configView->setModel(m_configFilterModel); + m_configTextFilterModel->setSourceModel(m_configFilterModel); + m_configTextFilterModel->setFilterKeyColumn(-1); + m_configTextFilterModel->setFilterCaseSensitivity(Qt::CaseInsensitive); + m_configView->setModel(m_configTextFilterModel); m_configView->setMinimumHeight(300); m_configView->setRootIsDecorated(false); m_configView->setUniformRowHeights(true); @@ -226,6 +237,9 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc) connect(m_showAdvancedCheckBox, &QCheckBox::stateChanged, this, &CMakeBuildSettingsWidget::updateAdvancedCheckBox); + connect(m_filterEdit, &QLineEdit::textChanged, + m_configTextFilterModel, &QSortFilterProxyModel::setFilterFixedString); + connect(m_resetButton, &QPushButton::clicked, m_configModel, &ConfigModel::resetAllChanges); connect(m_reconfigureButton, &QPushButton::clicked, this, [this]() { m_buildConfiguration->setCurrentCMakeConfiguration(m_configModel->configurationChanges()); @@ -274,6 +288,7 @@ void CMakeBuildSettingsWidget::setError(const QString &message) m_editButton->setEnabled(!showError); m_resetButton->setEnabled(!showError); m_showAdvancedCheckBox->setEnabled(!showError); + m_filterEdit->setEnabled(!showError); } void CMakeBuildSettingsWidget::setWarning(const QString &message) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.h b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.h index 06242d5fe1..e76a2a6bbf 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.h @@ -40,6 +40,8 @@ class QSortFilterProxyModel; class QMenu; QT_END_NAMESPACE +namespace Utils { class FancyLineEdit; } + namespace CMakeProjectManager { class ConfigModel; @@ -66,6 +68,7 @@ private: QTreeView *m_configView; ConfigModel *m_configModel; QSortFilterProxyModel *m_configFilterModel; + QSortFilterProxyModel *m_configTextFilterModel; Utils::ProgressIndicator *m_progressIndicator; QPushButton *m_addButton; QMenu *m_addButtonMenu; @@ -74,6 +77,7 @@ private: QCheckBox *m_showAdvancedCheckBox; QPushButton *m_reconfigureButton; QTimer m_showProgressTimer; + Utils::FancyLineEdit *m_filterEdit; QLabel *m_errorLabel; QLabel *m_warningLabel; QLabel *m_errorMessageLabel; -- cgit v1.2.1