summaryrefslogtreecommitdiff
path: root/src/plugins/clangtools/runsettingswidget.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2019-09-13 10:49:14 +0200
committerNikolai Kosjar <nikolai.kosjar@qt.io>2019-09-27 11:46:35 +0000
commit4750969c2b0c5574ed4d4ae23d5c69b5d97e1a87 (patch)
tree3a00b9f0a06563f83bff0d5f075ad1c62e5046bc /src/plugins/clangtools/runsettingswidget.cpp
parentbdea56794fdb43e6eab3daf32012b8e04345a0b7 (diff)
downloadqt-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.cpp87
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