Commit 8acb68ed authored by Peter Penz's avatar Peter Penz
Browse files

Relayout of the settings dialog, so that all Dolphin KPart relevant settings...

Relayout of the settings dialog, so that all Dolphin KPart relevant settings can be made available in Konqueror's settings dialog too. Further cleanups and layout fixes are required and will be done during the next week.

svn path=/trunk/KDE/kdebase/apps/; revision=912587
parent 9e6b85cd
......@@ -111,16 +111,21 @@ set(dolphin_SRCS
panels/folders/treeviewcontextmenu.cpp
panels/folders/folderspanel.cpp
panels/folders/paneltreeview.cpp
settings/settingspagebase.cpp
settings/startupsettingspage.cpp
settings/behaviorsettingspage.cpp
settings/columnviewsettingspage.cpp
settings/contextmenusettingspage.cpp
settings/dolphinfontrequester.cpp
settings/dolphinsettingsdialog.cpp
settings/detailsviewsettingspage.cpp
settings/generalsettingspage.cpp
settings/generalviewsettingspage.cpp
settings/iconsizegroupbox.cpp
settings/iconsviewsettingspage.cpp
settings/navigationsettingspage.cpp
settings/previewssettingspage.cpp
settings/servicessettingspage.cpp
settings/settingspagebase.cpp
settings/startupsettingspage.cpp
settings/statusbarsettingspage.cpp
settings/viewsettingspage.cpp
settings/viewsettingspagebase.cpp
statusbarspaceinfo.cpp
......@@ -169,12 +174,11 @@ install(TARGETS dolphin ${INSTALL_TARGETS_DEFAULT_ARGS})
##########################################
set(kcm_dolphin_PART_SRCS
kcmdolphin.cpp
set(kcm_dolphinviewmodes_PART_SRCS
kcmdolphinviewmodes.cpp
settings/columnviewsettingspage.cpp
settings/detailsviewsettingspage.cpp
settings/dolphinfontrequester.cpp
settings/generalviewsettingspage.cpp
settings/iconsizegroupbox.cpp
settings/iconsviewsettingspage.cpp
settings/viewsettingspagebase.cpp
......@@ -182,25 +186,25 @@ set(kcm_dolphin_PART_SRCS
zoomlevelinfo.cpp
)
kde4_add_kcfg_files(kcm_dolphin_PART_SRCS
kde4_add_kcfg_files(kcm_dolphinviewmodes_PART_SRCS
settings/dolphin_columnmodesettings.kcfgc
settings/dolphin_directoryviewpropertysettings.kcfgc
settings/dolphin_detailsmodesettings.kcfgc
settings/dolphin_iconsmodesettings.kcfgc
settings/dolphin_generalsettings.kcfgc)
kde4_add_plugin(kcm_dolphin ${kcm_dolphin_PART_SRCS})
kde4_add_plugin(kcm_dolphinviewmodes ${kcm_dolphinviewmodes_PART_SRCS})
target_link_libraries(kcm_dolphin ${KDE4_KDEUI_LIBS} ${KDE4_KFILE_LIBS} dolphinprivate)
target_link_libraries(kcm_dolphinviewmodes ${KDE4_KDEUI_LIBS} ${KDE4_KFILE_LIBS} dolphinprivate)
if (Nepomuk_FOUND)
target_link_libraries(kcm_dolphin ${NEPOMUK_LIBRARIES})
target_link_libraries(kcm_dolphinviewmodes ${NEPOMUK_LIBRARIES})
endif (Nepomuk_FOUND)
install(TARGETS kcm_dolphin DESTINATION ${PLUGIN_INSTALL_DIR} )
install(TARGETS kcm_dolphinviewmodes DESTINATION ${PLUGIN_INSTALL_DIR} )
########### install files ###############
install( FILES dolphin.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
install( FILES settings/dolphin_directoryviewpropertysettings.kcfg settings/dolphin_generalsettings.kcfg settings/dolphin_columnmodesettings.kcfg settings/dolphin_iconsmodesettings.kcfg settings/dolphin_detailsmodesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR} )
install( FILES dolphinui.rc DESTINATION ${DATA_INSTALL_DIR}/dolphin )
install( FILES kcmdolphin.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
install( FILES kcmdolphinviewmodes.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
......@@ -703,7 +703,8 @@ void DolphinMainWindow::toggleShowMenuBar()
void DolphinMainWindow::editSettings()
{
if (m_settingsDialog == 0) {
m_settingsDialog = new DolphinSettingsDialog(this);
const KUrl& url = activeViewContainer()->url();
m_settingsDialog = new DolphinSettingsDialog(url, this);
m_settingsDialog->setAttribute(Qt::WA_DeleteOnClose);
m_settingsDialog->show();
} else {
......
......@@ -17,11 +17,10 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
#include "kcmdolphin.h"
#include "kcmdolphinviewmodes.h"
#include "settings/columnviewsettingspage.h"
#include "settings/detailsviewsettingspage.h"
#include "settings/generalviewsettingspage.h"
#include "settings/iconsviewsettingspage.h"
#include <ktabwidget.h>
......@@ -36,16 +35,16 @@
#include <QPushButton>
#include <QVBoxLayout>
K_PLUGIN_FACTORY(KCMDolphinConfigFactory, registerPlugin<DolphinConfigModule>("dolphin");)
K_EXPORT_PLUGIN(KCMDolphinConfigFactory("kcmdolphin"))
K_PLUGIN_FACTORY(KCMDolphinConfigFactory, registerPlugin<DolphinViewModesConfigModule>("dolphinviewmodes");)
K_EXPORT_PLUGIN(KCMDolphinConfigFactory("kcmdolphinviewmodes"))
DolphinConfigModule::DolphinConfigModule(QWidget* parent, const QVariantList& args) :
DolphinViewModesConfigModule::DolphinViewModesConfigModule(QWidget* parent, const QVariantList& args) :
KCModule(KCMDolphinConfigFactory::componentData(), parent),
m_pages()
{
Q_UNUSED(args);
KGlobal::locale()->insertCatalog("dolphin");
KGlobal::locale()->insertCatalog("dolphinviewmodes");
setButtons(KCModule::Default | KCModule::Help);
......@@ -55,11 +54,6 @@ DolphinConfigModule::DolphinConfigModule(QWidget* parent, const QVariantList& ar
KTabWidget* tabWidget = new KTabWidget(this);
// initialize 'General' tab
GeneralViewSettingsPage* generalPage = new GeneralViewSettingsPage(QDir::homePath(), tabWidget);
tabWidget->addTab(generalPage, KIcon("view-choose"), i18nc("@title:tab General settings", "General"));
connect(generalPage, SIGNAL(changed()), this, SLOT(changed()));
// initialize 'Icons' tab
IconsViewSettingsPage* iconsPage = new IconsViewSettingsPage(tabWidget);
tabWidget->addTab(iconsPage, KIcon("view-list-icons"), i18nc("@title:tab", "Icons"));
......@@ -75,7 +69,6 @@ DolphinConfigModule::DolphinConfigModule(QWidget* parent, const QVariantList& ar
tabWidget->addTab(columnPage, KIcon("view-file-columns"), i18nc("@title:tab", "Column"));
connect(columnPage, SIGNAL(changed()), this, SLOT(changed()));
m_pages.append(generalPage);
m_pages.append(iconsPage);
m_pages.append(detailsPage);
m_pages.append(columnPage);
......@@ -83,11 +76,11 @@ DolphinConfigModule::DolphinConfigModule(QWidget* parent, const QVariantList& ar
topLayout->addWidget(tabWidget, 0, 0);
}
DolphinConfigModule::~DolphinConfigModule()
DolphinViewModesConfigModule::~DolphinViewModesConfigModule()
{
}
void DolphinConfigModule::save()
void DolphinViewModesConfigModule::save()
{
foreach (ViewSettingsPageBase* page, m_pages) {
page->applySettings();
......@@ -95,7 +88,7 @@ void DolphinConfigModule::save()
reparseConfiguration();
}
void DolphinConfigModule::defaults()
void DolphinViewModesConfigModule::defaults()
{
foreach (ViewSettingsPageBase* page, m_pages) {
page->restoreDefaults();
......@@ -103,10 +96,10 @@ void DolphinConfigModule::defaults()
reparseConfiguration();
}
void DolphinConfigModule::reparseConfiguration()
void DolphinViewModesConfigModule::reparseConfiguration()
{
QDBusMessage message = QDBusMessage::createSignal("/KonqMain", "org.kde.Konqueror.Main", "reparseConfiguration");
QDBusConnection::sessionBus().send(message);
}
#include "kcmdolphin.moc"
#include "kcmdolphinviewmodes.moc"
......@@ -27,13 +27,13 @@ class ViewSettingsPageBase;
/**
* @brief Allow to configure the Dolphin views.
*/
class DolphinConfigModule : public KCModule
class DolphinViewModesConfigModule : public KCModule
{
Q_OBJECT
public:
DolphinConfigModule(QWidget* parent, const QVariantList& args);
virtual ~DolphinConfigModule();
DolphinViewModesConfigModule(QWidget* parent, const QVariantList& args);
virtual ~DolphinViewModesConfigModule();
virtual void save();
virtual void defaults();
......
/***************************************************************************
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) and *
* and Patrice Tremblay *
* *
* 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; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
#include "behaviorsettingspage.h"
#include "dolphinsettings.h"
#include "dolphin_generalsettings.h"
#include <viewproperties.h>
#include <kdialog.h>
#include <klocale.h>
#include <kvbox.h>
#include <QCheckBox>
#include <QGroupBox>
#include <QLabel>
#include <QRadioButton>
#include <QVBoxLayout>
BehaviorSettingsPage::BehaviorSettingsPage(const KUrl& url, QWidget* parent) :
SettingsPageBase(parent),
m_url(url),
m_localProps(0),
m_globalProps(0),
m_confirmMoveToTrash(0),
m_confirmDelete(0),
m_renameInline(0),
m_showToolTips(0),
m_showSelectionToggle(0)
{
const int spacing = KDialog::spacingHint();
QVBoxLayout* topLayout = new QVBoxLayout(this);
KVBox* vBox = new KVBox(this);
vBox->setSpacing(spacing);
// 'View Properties' box
QGroupBox* propsBox = new QGroupBox(i18nc("@title:group", "View Properties"), vBox);
m_localProps = new QRadioButton(i18nc("@option:radio", "Remember view properties for each folder"), propsBox);
connect(m_localProps, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
m_globalProps = new QRadioButton(i18nc("@option:radio", "Use common view properties for all folders"), propsBox);
connect(m_globalProps, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
QVBoxLayout* propsBoxLayout = new QVBoxLayout(propsBox);
propsBoxLayout->addWidget(m_localProps);
propsBoxLayout->addWidget(m_globalProps);
// 'Ask Confirmation For' box
QGroupBox* confirmBox = new QGroupBox(i18nc("@title:group", "Ask For Confirmation When"), vBox);
m_confirmMoveToTrash = new QCheckBox(i18nc("@option:check Ask for Confirmation When",
"Moving files or folders to trash"), confirmBox);
connect(m_confirmMoveToTrash, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
m_confirmDelete = new QCheckBox(i18nc("@option:check Ask for Confirmation When",
"Deleting files or folders"), confirmBox);
connect(m_confirmDelete, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
QVBoxLayout* confirmBoxLayout = new QVBoxLayout(confirmBox);
confirmBoxLayout->addWidget(m_confirmMoveToTrash);
confirmBoxLayout->addWidget(m_confirmDelete);
m_renameInline = new QCheckBox(i18nc("@option:check", "Rename inline"), vBox);
connect(m_renameInline, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
m_showToolTips = new QCheckBox(i18nc("@option:check", "Show tooltips"), vBox);
connect(m_showToolTips, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
m_showSelectionToggle = new QCheckBox(i18nc("@option:check", "Show selection marker"), vBox);
connect(m_showSelectionToggle, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
// Add a dummy widget with no restriction regarding
// a vertical resizing. This assures that the dialog layout
// is not stretched vertically.
new QWidget(vBox);
topLayout->addWidget(vBox);
loadSettings();
}
BehaviorSettingsPage::~BehaviorSettingsPage()
{
}
void BehaviorSettingsPage::applySettings()
{
ViewProperties props(m_url); // read current view properties
const bool useGlobalProps = m_globalProps->isChecked();
GeneralSettings* settings = DolphinSettings::instance().generalSettings();
settings->setGlobalViewProps(useGlobalProps);
if (useGlobalProps) {
// Remember the global view properties by applying the current view properties.
// It is important that GeneralSettings::globalViewProps() is set before
// the class ViewProperties is used, as ViewProperties uses this setting
// to find the destination folder for storing the view properties.
ViewProperties globalProps(m_url);
globalProps.setDirProperties(props);
}
KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig("kiorc", KConfig::NoGlobals);
KConfigGroup confirmationGroup(kioConfig, "Confirmations");
confirmationGroup.writeEntry("ConfirmTrash", m_confirmMoveToTrash->isChecked());
confirmationGroup.writeEntry("ConfirmDelete", m_confirmDelete->isChecked());
confirmationGroup.sync();
settings->setRenameInline(m_renameInline->isChecked());
settings->setShowToolTips(m_showToolTips->isChecked());
settings->setShowSelectionToggle(m_showSelectionToggle->isChecked());
}
void BehaviorSettingsPage::restoreDefaults()
{
GeneralSettings* settings = DolphinSettings::instance().generalSettings();
settings->setDefaults();
// TODO: reset default settings for trash and show delete command...
loadSettings();
}
void BehaviorSettingsPage::loadSettings()
{
GeneralSettings* settings = DolphinSettings::instance().generalSettings();
if (settings->globalViewProps()) {
m_globalProps->setChecked(true);
} else {
m_localProps->setChecked(true);
}
KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig("kiorc", KConfig::IncludeGlobals);
const KConfigGroup confirmationGroup(kioConfig, "Confirmations");
m_confirmMoveToTrash->setChecked(confirmationGroup.readEntry("ConfirmTrash", false));
m_confirmDelete->setChecked(confirmationGroup.readEntry("ConfirmDelete", true));
m_renameInline->setChecked(settings->renameInline());
m_showToolTips->setChecked(settings->showToolTips());
m_showSelectionToggle->setChecked(settings->showSelectionToggle());
}
#include "behaviorsettingspage.moc"
/***************************************************************************
* Copyright (C) 2006 by Peter Penz *
* peter.penz@gmx.at *
* *
* 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; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
#ifndef BEHAVIORSETTINGSPAGE_H
#define BEHAVIORSETTINGSPAGE_H
#include <settings/settingspagebase.h>
#include <kurl.h>
class DolphinMainWindow;
class QCheckBox;
class QRadioButton;
/**
* @brief Tab page for the 'Behavior' settings of the Dolphin settings dialog.
*/
class BehaviorSettingsPage : public SettingsPageBase
{
Q_OBJECT
public:
BehaviorSettingsPage(const KUrl& url, QWidget* parent);
virtual ~BehaviorSettingsPage();
/** @see SettingsPageBase::applySettings() */
virtual void applySettings();
/** @see SettingsPageBase::restoreDefaults() */
virtual void restoreDefaults();
private:
void loadSettings();
private:
KUrl m_url;
QRadioButton* m_localProps;
QRadioButton* m_globalProps;
QCheckBox* m_confirmMoveToTrash;
QCheckBox* m_confirmDelete;
QCheckBox* m_renameInline;
QCheckBox* m_showToolTips;
QCheckBox* m_showSelectionToggle;
};
#endif
/***************************************************************************
* Copyright (C) 2009 by Peter Penz <peter.penz@gmx.at> *
* *
* 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; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
#include "contextmenusettingspage.h"
#include "dolphinsettings.h"
#include "dolphin_generalsettings.h"
#include <kdialog.h>
#include <klocale.h>
#include <kvbox.h>
#include <QCheckBox>
#include <QVBoxLayout>
ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget* parent) :
SettingsPageBase(parent),
m_showDeleteCommand(0),
m_showCopyMoveMenu(0)
{
QVBoxLayout* topLayout = new QVBoxLayout(this);
KVBox* vBox = new KVBox(this);
vBox->setSpacing(KDialog::spacingHint());
m_showDeleteCommand = new QCheckBox(i18nc("@option:check", "Show 'Delete' command"), vBox);
connect(m_showDeleteCommand, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
m_showCopyMoveMenu = new QCheckBox(i18nc("@option:check", "Show 'Copy To' and 'Move To' commands"), vBox);
connect(m_showCopyMoveMenu, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
// Add a dummy widget with no restriction regarding
// a vertical resizing. This assures that the dialog layout
// is not stretched vertically.
new QWidget(vBox);
topLayout->addWidget(vBox);
loadSettings();
}
ContextMenuSettingsPage::~ContextMenuSettingsPage()
{
}
void ContextMenuSettingsPage::applySettings()
{
KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::NoGlobals);
KConfigGroup configGroup(globalConfig, "KDE");
configGroup.writeEntry("ShowDeleteCommand", m_showDeleteCommand->isChecked());
configGroup.sync();
GeneralSettings* settings = DolphinSettings::instance().generalSettings();
settings->setShowCopyMoveMenu(m_showCopyMoveMenu->isChecked());
}
void ContextMenuSettingsPage::restoreDefaults()
{
GeneralSettings* settings = DolphinSettings::instance().generalSettings();
settings->setDefaults();
loadSettings();
}
void ContextMenuSettingsPage::loadSettings()
{
KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::IncludeGlobals);
KConfigGroup configGroup(globalConfig, "KDE");
m_showDeleteCommand->setChecked(configGroup.readEntry("ShowDeleteCommand", false));
GeneralSettings* settings = DolphinSettings::instance().generalSettings();
m_showCopyMoveMenu->setChecked(settings->showCopyMoveMenu());
}
#include "contextmenusettingspage.moc"
/***************************************************************************
* Copyright (C) 2009 by Peter Penz <peter.penz@gmx.at> *
* *
* 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; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
#ifndef CONTEXTMENUSETTINGSPAGE_H
#define CONTEXTMENUSETTINGSPAGE_H
#include <settings/settingspagebase.h>
class QCheckBox;
/**
* @brief Page for the 'Context Menu' settings of the Dolphin settings dialog.
*/
class ContextMenuSettingsPage : public SettingsPageBase
{
Q_OBJECT
public:
ContextMenuSettingsPage(QWidget* parent);
virtual ~ContextMenuSettingsPage();
/** @see SettingsPageBase::applySettings() */
virtual void applySettings();
/** @see SettingsPageBase::restoreDefaults() */
virtual void restoreDefaults();
private:
void loadSettings();
private:
QCheckBox* m_showDeleteCommand;
QCheckBox* m_showCopyMoveMenu;
};
#endif
......@@ -23,6 +23,8 @@
#include <dolphinapplication.h>
#include <dolphinmainwindow.h>
#include "generalsettingspage.h"
#include "navigationsettingspage.h"
#include "servicessettingspage.h"
#include "startupsettingspage.h"
#include "viewsettingspage.h"
......@@ -30,8 +32,8 @@
#include <kmessagebox.h>
#include <kicon.h>
DolphinSettingsDialog::DolphinSettingsDialog(DolphinMainWindow* mainWindow) :
KPageDialog(mainWindow),
DolphinSettingsDialog::DolphinSettingsDialog(const KUrl& url, QWidget* parent) :
KPageDialog(parent),
m_pages()
{
......@@ -44,19 +46,36 @@ DolphinSettingsDialog::DolphinSettingsDialog(DolphinMainWindow* mainWindow) :
enableButtonApply(false);
setDefaultButton(Ok);
StartupSettingsPage* startupSettingsPage = new StartupSettingsPage(mainWindow, this);
// Startup
StartupSettingsPage* startupSettingsPage = new StartupSettingsPage(url, this);
KPageWidgetItem* startupSettingsFrame = addPage(startupSettingsPage,
i18nc("@title:group", "Startup"));
startupSettingsFrame->setIcon(KIcon("go-home"));
connect(startupSettingsPage, SIGNAL(changed()), this, SLOT(enableApply()));
ViewSettingsPage* viewSettingsPage = new ViewSettingsPage(mainWindow, this);
// View Modes
ViewSettingsPage* viewSettingsPage = new ViewSettingsPage(this);
KPageWidgetItem* viewSettingsFrame = addPage(viewSettingsPage,
i18nc("@title:group", "View Modes"));
viewSettingsFrame->setIcon(KIcon("view-choose"));
connect(viewSettingsPage, SIGNAL(changed()), this, SLOT(enableApply()));
GeneralSettingsPage* generalSettingsPage = new GeneralSettingsPage(mainWindow, this);
// Navigation
NavigationSettingsPage* navigationSettingsPage = new NavigationSettingsPage(this);
KPageWidgetItem* navigationSettingsFrame = addPage(navigationSettingsPage,
i18nc("@title:group", "Navigation"));
navigationSettingsFrame->setIcon(KIcon("input-mouse"));
connect(navigationSettingsPage, SIGNAL(changed()), this, SLOT(enableApply()));
// Services
ServicesSettingsPage* servicesSettingsPage = new ServicesSettingsPage(this);
KPageWidgetItem* servicesSettingsFrame = addPage(servicesSettingsPage,
i18nc("@title:group", "Services"));
servicesSettingsFrame->setIcon(KIcon("services"));
connect(servicesSettingsPage, SIGNAL(changed()), this, SLOT(enableApply()));
// General
GeneralSettingsPage* generalSettingsPage = new GeneralSettingsPage(url, this);
KPageWidgetItem* generalSettingsFrame = addPage(generalSettingsPage,