SVN commit 1009930 by bcooksley: Add initial support of configuration pages for views to System Settings M +8 -3 app/SettingsBase.cpp M +2 -2 app/SettingsBase.h M +6 -0 core/BaseMode.cpp M +8 -0 core/BaseMode.h --- trunk/KDE/kdebase/workspace/systemsettings/app/SettingsBase.cpp #1009929:1009930 @@ -151,14 +151,19 @@ void SettingsBase::initConfig() { // Prepare dialog first - configDialog = new KDialog(this); + configDialog = new KConfigDialog( this, "systemsettingsconfig", BaseConfig::self() ); configDialog->setButtons( KDialog::Ok | KDialog::Cancel ); - configWidget.setupUi(configDialog->mainWidget()); - configDialog->setCaption(i18n("Configure")); configDialog->setInitialSize(QSize(400,160)); configDialog->restoreDialogSize( KGlobal::config()->group("ConfigDialog") ); + + // Add our page + QWidget * configPage = new QWidget( configDialog ); + configWidget.setupUi(configPage); + QString iconName = KGlobal::activeComponent().aboutData()->programIconName(); + configDialog->addPage( configPage, i18n("General"), iconName ); // Get the list of modules foreach( BaseMode * mode, possibleViews ) { + mode->addConfiguration( configDialog ); configWidget.CbPlugins->addItem( KIcon(mode->service()->icon()), mode->service()->name() ); } connect(configDialog, SIGNAL(okClicked()), this, SLOT(configUpdated())); --- trunk/KDE/kdebase/workspace/systemsettings/app/SettingsBase.h #1009929:1009930 @@ -28,10 +28,10 @@ #include #include -#include #include #include #include +#include #include #include @@ -79,7 +79,7 @@ KAction * aboutModuleAction; KActionMenu * helpActionMenu; // The configuration - KDialog * configDialog; + KConfigDialog * configDialog; Ui::ConfigDialog configWidget; // The control module QStackedWidget * stackedWidget; --- trunk/KDE/kdebase/workspace/systemsettings/core/BaseMode.cpp #1009929:1009930 @@ -24,6 +24,7 @@ #include #include +#include #include #include "MenuItem.h" @@ -106,6 +107,11 @@ { } +void BaseMode::addConfiguration( KConfigDialog * config ) +{ + Q_UNUSED( config ); +} + MenuItem * BaseMode::rootItem() const { return d->rootItem; --- trunk/KDE/kdebase/workspace/systemsettings/core/BaseMode.h #1009929:1009930 @@ -28,6 +28,7 @@ class QAction; class MenuItem; class ModuleView; +class KConfigDialog; class QAbstractItemView; template class QList; @@ -163,6 +164,13 @@ */ virtual void searchChanged( const QString& text ); + /** + * Allows views to add custom configuration pages to the System Settings configure dialog + * + * @warning Deleting the config object will cause System Settings to crash + */ + virtual void addConfiguration( KConfigDialog * config ); + Q_SIGNALS: /** * Triggers a reload of the views actions by the host application.