| Revision 1 (by moose, 2006/03/06 10:35:57) |
Initial Import
|
#ifndef SciQSettingsPage_H_GUARD
#define SciQSettingsPage_H_GUARD
#include <QScrollArea>
#include <QHash>
#include <QSignalMapper>
#include "SciQSettings.h"
class SciQSettingsLvItem;
class QAbstractButton;
class QButtonGroup;
class QLineEdit;
class QComboBox;
class QSpinBox;
class QAbstractSlider;
class QWidget;
class QObject;
class QGroupBox;
class Map {
public:
Map() : wid(0), changed(false) { }
Map(const Map &m) { wid = m.wid; changed = m.changed; }
Map(QObject *w) : wid(w), changed(false) { }
Map &operator=(const Map &m) { wid = m.wid; changed = m.changed; return *this; }
bool isChanged() { return changed; }
void setChanged(bool c) { changed = c; }
QObject *wid; // hacky hacky </bart>
private:
bool changed;
};
class SciQSettingsPage : public QScrollArea {
Q_OBJECT
Q_PROPERTY(bool modified READ isModified WRITE setModified)
public:
SciQSettingsPage(SciQSettingsLvItem *li, QWidget * parent = 0);
virtual ~SciQSettingsPage();
virtual bool isModified() { return modified; }
QWidget *inner() { return frame; }
QString objectKey(QObject *o);
SciQSettings *qSettings() { return &qs; }
SciQSettingsLvItem *lvi;
public slots:
void applySettings();
void applySetting(const QString &l);
void loadSettings();
void loadSetting(const QString &l);
// commented for testing purposes
// protected:
void registerSetting(QAbstractButton *widget, QString name);
void registerSetting(QGroupBox *widget, QString name);
void registerSetting(QButtonGroup *widget, QString name);
void registerSetting(QLineEdit *widget, QString name);
void registerSetting(QComboBox *widget, QString name);
void registerSetting(QSpinBox *widget, QString name);
void registerSetting(QAbstractSlider *widget, QString name);
signals:
void settingsChanged(SciQSettingsPage *page);
void settingsApplied(SciQSettingsPage *page);
void mapped(const QString &);
private slots:
virtual void setModified(bool m);
virtual void mappedSlot(const QString &l);
virtual void onChange() { emit settingsChanged(this); }
private:
bool modified;
SciQSettings qs;
QSignalMapper sm;
QHash<QString, Map> widgets;
QWidget *frame;
};
#endif /* SciQSettingsPage_H_GUARD */