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"