File indexing completed on 2024-05-12 04:39:22

0001 /*
0002     SPDX-FileCopyrightText: 2016 Carlos Nihelton <carlosnsoliveira@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "clangtidypreferences.h"
0008 
0009 // plugin
0010 #include "clangtidyconfig.h"
0011 #include "ui_clangtidypreferences.h"
0012 #include "checksetselectionmanager.h"
0013 
0014 using KDevelop::IPlugin;
0015 using KDevelop::ConfigPage;
0016 using namespace ClangTidy;
0017 
0018 ClangTidyPreferences::ClangTidyPreferences(CheckSetSelectionManager* checkSetSelectionManager,
0019                                            const CheckSet* checkSet,
0020                                            IPlugin* plugin, QWidget* parent)
0021     : ConfigPage(plugin, ClangTidySettings::self(), parent)
0022     , m_checkSetSelectionManager(checkSetSelectionManager)
0023 {
0024     ui = new Ui::ClangTidyPreferences();
0025     ui->setupUi(this);
0026     ui->checksets->setCheckSetSelectionManager(checkSetSelectionManager, checkSet);
0027 
0028     connect(ui->kcfg_parallelJobsEnabled, &QCheckBox::toggled,
0029             this, &ClangTidyPreferences::updateJobCountEnabledState);
0030     connect(ui->kcfg_parallelJobsAutoCount, &QCheckBox::toggled,
0031             this, &ClangTidyPreferences::updateJobCountEnabledState);
0032     connect(ui->checksets, &CheckSetManageWidget::changed,
0033             this, &ClangTidyPreferences::changed);
0034 
0035     updateJobCountEnabledState();
0036 }
0037 
0038 ClangTidyPreferences::~ClangTidyPreferences()
0039 {
0040     delete ui;
0041 }
0042 
0043 void ClangTidyPreferences::updateJobCountEnabledState()
0044 {
0045     const bool jobsEnabled = ui->kcfg_parallelJobsEnabled->isChecked();
0046     const bool autoEnabled = ui->kcfg_parallelJobsAutoCount->isChecked();
0047     const bool manualJobsEnabled = (jobsEnabled && !autoEnabled);
0048 
0049     ui->kcfg_parallelJobsAutoCount->setEnabled(jobsEnabled);
0050 
0051     ui->kcfg_parallelJobsFixedCount->setEnabled(manualJobsEnabled);
0052     ui->parallelJobsFixedCountLabel->setEnabled(manualJobsEnabled);
0053 }
0054 
0055 ConfigPage::ConfigPageType ClangTidyPreferences::configPageType() const
0056 {
0057     return ConfigPage::AnalyzerConfigPage;
0058 }
0059 
0060 QString ClangTidyPreferences::name() const
0061 {
0062     return i18nc("@title:tab", "Clang-Tidy");
0063 }
0064 
0065 QString ClangTidyPreferences::fullName() const
0066 {
0067     return i18nc("@title:tab", "Configure Clang-Tidy Settings");
0068 }
0069 
0070 QIcon ClangTidyPreferences::icon() const
0071 {
0072     return QIcon::fromTheme(QStringLiteral("dialog-ok"));
0073 }
0074 
0075 void ClangTidyPreferences::apply()
0076 {
0077     ConfigPage::apply();
0078     ui->checksets->store();
0079 }
0080 
0081 void ClangTidyPreferences::defaults()
0082 {
0083     ConfigPage::defaults();
0084     ui->checksets->reload();
0085 }
0086 
0087 void ClangTidyPreferences::reset()
0088 {
0089     ConfigPage::reset();
0090     ui->checksets->reload();
0091 }
0092 
0093 #include "moc_clangtidypreferences.cpp"