ClangTools: Preselect current diagnostic config

...in ClangDiagnosticConfigsWidget when clicking on the "Manage..."
button. This allows to inspect the current diagnostic configuration
without further interaction steps.

Change-Id: I732445b33f4f194c9b9b60e184d970420ab55ec8
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Nikolai Kosjar
2018-05-22 16:22:53 +02:00
parent a809462c91
commit 90d377bee9
4 changed files with 34 additions and 31 deletions

View File

@@ -39,34 +39,6 @@
namespace CppTools {
static void connectToClangDiagnosticConfigsDialog(QPushButton *button)
{
QObject::connect(button, &QPushButton::clicked, []() {
ClangDiagnosticConfigsWidget *widget = new ClangDiagnosticConfigsWidget;
widget->layout()->setMargin(0);
QDialog dialog;
dialog.setWindowTitle(widget->tr("Diagnostic Configurations"));
dialog.setLayout(new QVBoxLayout);
dialog.layout()->addWidget(widget);
auto *buttonsBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
dialog.layout()->addWidget(buttonsBox);
QObject::connect(buttonsBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
QObject::connect(buttonsBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
QObject::connect(&dialog, &QDialog::accepted, [widget]() {
QSharedPointer<CppCodeModelSettings> settings = codeModelSettings();
const ClangDiagnosticConfigs oldDiagnosticConfigs
= settings->clangCustomDiagnosticConfigs();
const ClangDiagnosticConfigs currentDiagnosticConfigs = widget->customConfigs();
if (oldDiagnosticConfigs != currentDiagnosticConfigs) {
settings->setClangCustomDiagnosticConfigs(currentDiagnosticConfigs);
settings->toSettings(Core::ICore::settings());
}
});
dialog.exec();
});
}
ClangDiagnosticConfigsSelectionWidget::ClangDiagnosticConfigsSelectionWidget(QWidget *parent)
: QWidget(parent)
, m_label(new QLabel(tr("Diagnostic Configuration:"), this))
@@ -139,4 +111,32 @@ void ClangDiagnosticConfigsSelectionWidget::showLabel(bool show)
m_label->setVisible(show);
}
void ClangDiagnosticConfigsSelectionWidget::connectToClangDiagnosticConfigsDialog(QPushButton *button)
{
connect(button, &QPushButton::clicked, [this]() {
ClangDiagnosticConfigsWidget *widget = new ClangDiagnosticConfigsWidget(currentConfigId());
widget->layout()->setMargin(0);
QDialog dialog;
dialog.setWindowTitle(widget->tr("Diagnostic Configurations"));
dialog.setLayout(new QVBoxLayout);
dialog.layout()->addWidget(widget);
auto *buttonsBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
dialog.layout()->addWidget(buttonsBox);
connect(buttonsBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
connect(buttonsBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
connect(&dialog, &QDialog::accepted, [widget]() {
QSharedPointer<CppCodeModelSettings> settings = codeModelSettings();
const ClangDiagnosticConfigs oldDiagnosticConfigs
= settings->clangCustomDiagnosticConfigs();
const ClangDiagnosticConfigs currentDiagnosticConfigs = widget->customConfigs();
if (oldDiagnosticConfigs != currentDiagnosticConfigs) {
settings->setClangCustomDiagnosticConfigs(currentDiagnosticConfigs);
settings->toSettings(Core::ICore::settings());
}
});
dialog.exec();
});
}
} // CppTools namespace

View File

@@ -34,6 +34,7 @@
QT_BEGIN_NAMESPACE
class QComboBox;
class QLabel;
class QPushButton;
QT_END_NAMESPACE
namespace CppTools {
@@ -55,6 +56,7 @@ signals:
void currentConfigChanged(const Core::Id &currentConfigId);
private:
void connectToClangDiagnosticConfigsDialog(QPushButton *button);
void connectToCurrentIndexChanged();
void disconnectFromCurrentIndexChanged();

View File

@@ -43,7 +43,8 @@
namespace CppTools {
ClangDiagnosticConfigsWidget::ClangDiagnosticConfigsWidget(QWidget *parent)
ClangDiagnosticConfigsWidget::ClangDiagnosticConfigsWidget(const Core::Id &configToSelect,
QWidget *parent)
: QWidget(parent)
, m_ui(new Ui::ClangDiagnosticConfigsWidget)
, m_diagnosticConfigsModel(codeModelSettings()->clangCustomDiagnosticConfigs())
@@ -61,7 +62,7 @@ ClangDiagnosticConfigsWidget::ClangDiagnosticConfigsWidget(QWidget *parent)
this, &ClangDiagnosticConfigsWidget::onRemoveButtonClicked);
connectDiagnosticOptionsChanged();
syncWidgetsToModel();
syncWidgetsToModel(configToSelect);
}
ClangDiagnosticConfigsWidget::~ClangDiagnosticConfigsWidget()

View File

@@ -55,7 +55,7 @@ class CPPTOOLS_EXPORT ClangDiagnosticConfigsWidget : public QWidget
Q_OBJECT
public:
explicit ClangDiagnosticConfigsWidget(QWidget *parent = nullptr);
explicit ClangDiagnosticConfigsWidget(const Core::Id &configToSelect, QWidget *parent = nullptr);
~ClangDiagnosticConfigsWidget() override;
ClangDiagnosticConfigs customConfigs() const;