mirror of
https://bitbucket.org/smil3y/kde-extraapps.git
synced 2025-02-24 10:52:53 +00:00
83 lines
3 KiB
C++
83 lines
3 KiB
C++
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2007 - 2010 Urs Wolfer <uwolfer @ kde.org>
|
|
**
|
|
** This file is part of KDE.
|
|
**
|
|
** This program is free software; you can redistribute it and/or modify
|
|
** it under the terms of the GNU General Public License as published by
|
|
** the Free Software Foundation; either version 2 of the License, or
|
|
** (at your option) any later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU General Public License
|
|
** along with this program; see the file COPYING. If not, write to
|
|
** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
** Boston, MA 02110-1301, USA.
|
|
**
|
|
****************************************************************************/
|
|
|
|
#include "preferencesdialog.h"
|
|
|
|
#include "hostpreferenceslist.h"
|
|
#include "ui_general.h"
|
|
|
|
#include <KConfigSkeleton>
|
|
#include <KDebug>
|
|
#include <KPluginSelector>
|
|
#include <KService>
|
|
#include <KServiceTypeTrader>
|
|
#include <KPluginInfo>
|
|
|
|
PreferencesDialog::PreferencesDialog(QWidget *parent, KConfigSkeleton *skeleton)
|
|
: KConfigDialog(parent, "preferences", skeleton)
|
|
, m_settingsChanged(false)
|
|
{
|
|
QWidget *generalPage = new QWidget(this);
|
|
Ui::General generalUi;
|
|
generalUi.setupUi(generalPage);
|
|
addPage(generalPage, i18nc("General Config", "General"), "krdc", i18n("General Configuration"));
|
|
|
|
HostPreferencesList *hostPreferencesList = new HostPreferencesList(this,
|
|
qobject_cast<MainWindow *>(parent),
|
|
skeleton->config()->group("hostpreferences"));
|
|
addPage(hostPreferencesList, i18n("Hosts"), "computer", i18n("Host Configuration"));
|
|
|
|
m_pluginSelector = new KPluginSelector();
|
|
KService::List offers = KServiceTypeTrader::self()->query("KRDC/Plugin");
|
|
m_pluginSelector->addPlugins(KPluginInfo::fromServices(offers), KPluginSelector::ReadConfigFile,
|
|
i18n("Plugins"), "Service", KGlobal::config());
|
|
m_pluginSelector->load();
|
|
addPage(m_pluginSelector, i18n("Plugins"), "preferences-plugin", i18n("Plugin Configuration"));
|
|
|
|
connect(this, SIGNAL(accepted()), SLOT(saveState()));
|
|
connect(this, SIGNAL(defaultClicked()), SLOT(loadDefaults()));
|
|
connect(m_pluginSelector, SIGNAL(changed(bool)), SLOT(settingsChanged()));
|
|
}
|
|
|
|
void PreferencesDialog::saveState()
|
|
{
|
|
//TODO: relaod plugins at runtime?
|
|
m_pluginSelector->save();
|
|
}
|
|
|
|
void PreferencesDialog::loadDefaults()
|
|
{
|
|
m_pluginSelector->defaults();
|
|
enableButton(Default, false);
|
|
}
|
|
|
|
void PreferencesDialog::settingsChanged()
|
|
{
|
|
enableButton(Apply, true);
|
|
enableButton(Default, true);
|
|
}
|
|
|
|
bool PreferencesDialog::isDefault()
|
|
{
|
|
return KConfigDialog::isDefault() && m_pluginSelector->isDefault();
|
|
}
|