Warning, file /network/krdc/config/preferencesdialog.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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 "krdc_debug.h"
0009 #include "hostpreferenceslist.h"
0010 #include "ui_general.h"
0011 
0012 #include <KConfigSkeleton>
0013 #include <KLocalizedString>
0014 #include <KPluginWidget>
0015 #include <KPluginMetaData>
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 = new HostPreferencesList(this,
0027                                                                        qobject_cast<MainWindow *>(parent),
0028                                                                        skeleton->config()->group(QStringLiteral("hostpreferences")));
0029     addPage(hostPreferencesList, i18n("Hosts"), QStringLiteral("computer"), i18n("Host Configuration"));
0030 
0031     m_pluginSelector = new KPluginWidget();
0032     const QVector<KPluginMetaData> offers = KPluginMetaData::findPlugins(QStringLiteral("krdc"));
0033     m_pluginSelector->setConfig(KSharedConfig::openConfig()->group(QStringLiteral("Plugins")));
0034     m_pluginSelector->addPlugins(offers, i18n("Plugins"));
0035     addPage(m_pluginSelector, i18n("Plugins"), QStringLiteral("preferences-plugin"), i18n("Plugin Configuration"));
0036 
0037     connect(this, SIGNAL(accepted()), SLOT(saveState()));
0038     QPushButton *defaultsButton = buttonBox()->button(QDialogButtonBox::RestoreDefaults);
0039     connect(defaultsButton, SIGNAL(clicked()), SLOT(loadDefaults()));
0040     connect(m_pluginSelector, SIGNAL(changed(bool)), SLOT(settingsChanged()));
0041 }
0042 
0043 void PreferencesDialog::saveState()
0044 {
0045     //TODO: relaod plugins at runtime?
0046     m_pluginSelector->save();
0047 }
0048 
0049 void PreferencesDialog::loadDefaults()
0050 {
0051     m_pluginSelector->defaults();
0052 }
0053 
0054 void PreferencesDialog::settingsChanged()
0055 {
0056     enableButton(QDialogButtonBox::Apply);
0057     enableButton(QDialogButtonBox::RestoreDefaults);
0058 }
0059 
0060 bool PreferencesDialog::isDefault()
0061 {
0062     return KConfigDialog::isDefault() && m_pluginSelector->isDefault();
0063 }
0064 
0065 void PreferencesDialog::enableButton(QDialogButtonBox::StandardButton standardButton)
0066 {
0067     QPushButton *button =  buttonBox()->button(standardButton);
0068     if (button) {
0069         button->setEnabled(true);
0070     }
0071 }
0072