SettingsPage an interface, but subclass QWidget instead.
connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
}
connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
}
void SettingsDlg::registerSettingsPage(SettingsPage *sp) {
QWidget *w = sp->widget();
w->setParent(this);
void SettingsDlg::registerSettingsPage(SettingsPage *sp) {
QWidget *w = sp->widget();
w->setParent(this);
//SettingsInterface *sp = qobject_cast<SettingsInterface *>(ui.settingsStack->currentWidget());
//if(sp) sp->applyChanges();
}
//SettingsInterface *sp = qobject_cast<SettingsInterface *>(ui.settingsStack->currentWidget());
//if(sp) sp->applyChanges();
}
SettingsDlg(QWidget *parent = 0);
void registerSettingsPage(SettingsPage *);
void unregisterSettingsPage(SettingsPage *);
SettingsDlg(QWidget *parent = 0);
void registerSettingsPage(SettingsPage *);
void unregisterSettingsPage(SettingsPage *);
public slots:
void selectPage(const QString &category, const QString &title);
public slots:
void selectPage(const QString &category, const QString &title);
void itemSelected();
void buttonClicked(QAbstractButton *);
void applyChanges();
void itemSelected();
void buttonClicked(QAbstractButton *);
void applyChanges();
private:
Ui::SettingsDlg ui;
private:
Ui::SettingsDlg ui;
#ifndef _SETTINGSPAGE_H_
#define _SETTINGSPAGE_H_
#ifndef _SETTINGSPAGE_H_
#define _SETTINGSPAGE_H_
-//! Interface that needs to be implemented by pages of the settings dialog.
-class SettingsPage {
+#include <QWidget>
+
+//! A SettingsPage is a page in the settings dialog.
+class SettingsPage : public QWidget {
+ Q_OBJECT
+
+ SettingsPage(const QString &category, const QString &name, QWidget *parent = 0);
virtual ~SettingsPage() {};
virtual ~SettingsPage() {};
- virtual QString category() = 0;
- virtual QString title() = 0;
- virtual QWidget *widget() = 0;
- virtual void saveSettings() = 0;
- virtual void loadSettings() = 0;
+ virtual QString category() const;
+ virtual QString name() const;
- virtual bool hasChanged() = 0;
+ virtual bool hasChanged() const = 0;
+
+ public slots:
+ virtual void save() = 0;
+ virtual void load() = 0;
+ virtual void defaults() = 0;
+ void changed(bool hasChanged = true);
-Q_DECLARE_INTERFACE(SettingsPage, "org.quassel-irc.iface.SettingsPage/1.0");
-