File indexing completed on 2024-05-12 04:41:00

0001 /*
0002     SPDX-FileCopyrightText: 2017 Friedrich W. H. Kossebau <kossebau@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #include "projectconfigpage.h"
0008 #include "ui_projectconfigpage.h"
0009 
0010 #include <shell/core.h>
0011 #include <shell/sourceformattercontroller.h>
0012 
0013 #include "projectconfig.h"
0014 
0015 #include <interfaces/iproject.h>
0016 
0017 namespace SourceFormatter
0018 {
0019 
0020 namespace Strings {
0021 QString SourceFormatter() { return QStringLiteral("SourceFormatter"); }
0022 }
0023 
0024 
0025 ProjectConfigPage::ProjectConfigPage(KDevelop::IPlugin* plugin, KDevelop::IProject* project, QWidget* parent)
0026     : ConfigPage(plugin, new ProjectConfig, parent)
0027     , ui(new Ui::ProjectConfigPage)
0028 {
0029     configSkeleton()->setSharedConfig(project->projectConfiguration());
0030     configSkeleton()->load();
0031 
0032     ui->setupUi(this);
0033 
0034     connect(ui->kcfg_useDefault, &QAbstractButton::toggled,
0035             this, &ProjectConfigPage::disableCustomSettings);
0036     connect(ui->formatterSelectionEdit, &KDevelop::SourceFormatterSelectionEdit::changed,
0037             this, &ProjectConfigPage::changed);
0038 }
0039 
0040 ProjectConfigPage::~ProjectConfigPage() = default;
0041 
0042 QString ProjectConfigPage::name() const
0043 {
0044     return i18nc("@title:tab", "Source Formatter");
0045 }
0046 
0047 QString ProjectConfigPage::fullName() const
0048 {
0049     return i18nc("@title:tab", "Configure Source Formatter");
0050 }
0051 
0052 QIcon ProjectConfigPage::icon() const
0053 {
0054     return QIcon::fromTheme(QStringLiteral("text-field"));
0055 }
0056 
0057 void ProjectConfigPage::disableCustomSettings(bool checked)
0058 {
0059     ui->generalGroupBox->setEnabled(! checked);
0060     ui->formattinStylesGroupBox->setEnabled(! checked);
0061 }
0062 
0063 void ProjectConfigPage::reset()
0064 {
0065     auto config = configSkeleton()->sharedConfig()->group(Strings::SourceFormatter());
0066     ui->formatterSelectionEdit->loadSettings(config);
0067     ConfigPage::reset();
0068 }
0069 
0070 void ProjectConfigPage::apply()
0071 {
0072     auto config = configSkeleton()->sharedConfig()->group(Strings::SourceFormatter());
0073     ui->formatterSelectionEdit->saveSettings(config);
0074 
0075     ConfigPage::apply();
0076 
0077     // TODO: fix exception of accessing internal API, find a better way to notify about settings change
0078     KDevelop::Core::self()->sourceFormatterControllerInternal()->settingsChanged();
0079 }
0080 
0081 }
0082 
0083 #include "moc_projectconfigpage.cpp"