diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-09-13 10:49:14 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-09-27 11:46:35 +0000 |
commit | 4750969c2b0c5574ed4d4ae23d5c69b5d97e1a87 (patch) | |
tree | 3a00b9f0a06563f83bff0d5f075ad1c62e5046bc /src/plugins/clangtools/runsettingswidget.cpp | |
parent | bdea56794fdb43e6eab3daf32012b8e04345a0b7 (diff) | |
download | qt-creator-4750969c2b0c5574ed4d4ae23d5c69b5d97e1a87.tar.gz |
ClangTools: Move run settings to projects mode
Make the global run settings available per project in project mode and
thus remove the diagnostic config selection from the
selectable-files-dialog:
* Extract the classes RunSettings and RunSettingsWidget instead of
duplicating stuff.
* Ensure to pick up the old settings
* Add some convenience buttons/links in projects mode allowing to
restore the global settings, to open the global settings and to
navigate (back) to the analyzer mode.
Change-Id: I1b91b6f8e58a87a025774e4643c46e176b2a8885
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/clangtools/runsettingswidget.cpp')
-rw-r--r-- | src/plugins/clangtools/runsettingswidget.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/plugins/clangtools/runsettingswidget.cpp b/src/plugins/clangtools/runsettingswidget.cpp new file mode 100644 index 0000000000..1a26d2e7d0 --- /dev/null +++ b/src/plugins/clangtools/runsettingswidget.cpp @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "runsettingswidget.h" + +#include "ui_runsettingswidget.h" + +#include "clangtoolssettings.h" +#include "clangtoolsutils.h" + +#include <QThread> + +namespace ClangTools { +namespace Internal { + +RunSettingsWidget::RunSettingsWidget(QWidget *parent) + : QWidget(parent) + , m_ui(new Ui::RunSettingsWidget) +{ + m_ui->setupUi(this); + + connect(m_ui->diagnosticWidget, + &CppTools::ClangDiagnosticConfigsSelectionWidget::currentConfigChanged, + [this](const Core::Id &) { emit changed(); }); + // m_ui->buildBeforeAnalysis is handled in fromSettings() + connect(m_ui->parallelJobsSpinBox, + QOverload<int>::of(&QSpinBox::valueChanged), + [this](int) { emit changed(); }); +} + +RunSettingsWidget::~RunSettingsWidget() +{ + delete m_ui; +} + +void RunSettingsWidget::fromSettings(const RunSettings &s) +{ + m_ui->diagnosticWidget->refresh(s.diagnosticConfigId()); + + disconnect(m_ui->buildBeforeAnalysis, 0, 0, 0); + m_ui->buildBeforeAnalysis->setToolTip(hintAboutBuildBeforeAnalysis()); + m_ui->buildBeforeAnalysis->setCheckState(s.buildBeforeAnalysis() ? Qt::Checked : Qt::Unchecked); + connect(m_ui->buildBeforeAnalysis, &QCheckBox::toggled, [this](bool checked) { + if (!checked) + showHintAboutBuildBeforeAnalysis(); + emit changed(); + }); + + m_ui->parallelJobsSpinBox->setValue(s.parallelJobs()); + m_ui->parallelJobsSpinBox->setMinimum(1); + m_ui->parallelJobsSpinBox->setMaximum(QThread::idealThreadCount()); +} + +RunSettings RunSettingsWidget::toSettings() const +{ + RunSettings s; + s.setDiagnosticConfigId(m_ui->diagnosticWidget->currentConfigId()); + s.setBuildBeforeAnalysis(m_ui->buildBeforeAnalysis->checkState() == Qt::CheckState::Checked); + s.setParallelJobs(m_ui->parallelJobsSpinBox->value()); + + return s; +} + +} // namespace Internal +} // namespace ClangTools |