Getting ready to revamp the settings dialog and stuff. We will no longer make
[quassel.git] / src / qtui / settingspage.h
index c636ac3..49c4c6b 100644 (file)
 #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
+
   public:
+    SettingsPage(const QString &category, const QString &name, QWidget *parent = 0);
     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;
 
   signals:
-    void modified();
+    void changed(bool hasChanged = true);
 
 };
 
-Q_DECLARE_INTERFACE(SettingsPage, "org.quassel-irc.iface.SettingsPage/1.0");
-
 #endif