File indexing completed on 2024-04-21 04:58:34

0001 /*
0002     SPDX-FileCopyrightText: 2007-2010 Urs Wolfer <uwolfer@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "preferencesdialog.h"
0008 #include "hostpreferenceslist.h"
0009 #include "krdc_debug.h"
0010 #include "ui_general.h"
0011 
0012 #include <KConfigSkeleton>
0013 #include <KLocalizedString>
0014 #include <KPluginMetaData>
0015 #include <KPluginWidget>
0016 
0017 PreferencesDialog::PreferencesDialog(QWidget *parent, KConfigSkeleton *skeleton)
0018     : KConfigDialog(parent, QStringLiteral("preferences"), skeleton)
0019     , m_settingsChanged(false)
0020 {
0021     QWidget *generalPage = new QWidget(this);
0022     Ui::General generalUi;
0023     generalUi.setupUi(generalPage);
0024     addPage(generalPage, i18nc("General Config", "General"), QStringLiteral("krdc"), i18n("General Configuration"));
0025 
0026     HostPreferencesList *hostPreferencesList =
0027         new HostPreferencesList(this, qobject_cast<MainWindow *>(parent), skeleton->config()->group(QStringLiteral("hostpreferences")));
0028     addPage(hostPreferencesList, i18n("Hosts"), QStringLiteral("computer"), i18n("Host Configuration"));
0029 
0030     m_pluginSelector = new KPluginWidget();
0031     const QVector<KPluginMetaData> offers = KPluginMetaData::findPlugins(QStringLiteral("krdc"));
0032     m_pluginSelector->setConfig(KSharedConfig::openConfig()->group(QStringLiteral("Plugins")));
0033     m_pluginSelector->addPlugins(offers, i18n("Plugins"));
0034     addPage(m_pluginSelector, i18n("Plugins"), QStringLiteral("preferences-plugin"), i18n("Plugin Configuration"));
0035 
0036     connect(this, SIGNAL(accepted()), SLOT(saveState()));
0037     QPushButton *defaultsButton = buttonBox()->button(QDialogButtonBox::RestoreDefaults);
0038     connect(defaultsButton, SIGNAL(clicked()), SLOT(loadDefaults()));
0039     connect(m_pluginSelector, SIGNAL(changed(bool)), SLOT(settingsChanged()));
0040 }
0041 
0042 void PreferencesDialog::saveState()
0043 {
0044     // TODO: relaod plugins at runtime?
0045     m_pluginSelector->save();
0046 }
0047 
0048 void PreferencesDialog::loadDefaults()
0049 {
0050     m_pluginSelector->defaults();
0051 }
0052 
0053 void PreferencesDialog::settingsChanged()
0054 {
0055     enableButton(QDialogButtonBox::Apply);
0056     enableButton(QDialogButtonBox::RestoreDefaults);
0057 }
0058 
0059 bool PreferencesDialog::isDefault()
0060 {
0061     return KConfigDialog::isDefault() && m_pluginSelector->isDefault();
0062 }
0063 
0064 void PreferencesDialog::enableButton(QDialogButtonBox::StandardButton standardButton)
0065 {
0066     QPushButton *button = buttonBox()->button(standardButton);
0067     if (button) {
0068         button->setEnabled(true);
0069     }
0070 }