-void SettingsPage::initAutoWidgets() {
- _autoWidgets.clear();
-
- // find all descendants that should be considered auto widgets
- // we need to climb the QObject tree recursively
- findAutoWidgets(this, &_autoWidgets);
-
- foreach(QObject *widget, _autoWidgets) {
- if(widget->inherits("QAbstractButton") || widget->inherits("QGroupBox"))
- connect(widget, SIGNAL(toggled(bool)), SLOT(autoWidgetHasChanged()));
- else if(widget->inherits("QLineEdit") || widget->inherits("QTextEdit"))
- connect(widget, SIGNAL(textChanged(const QString &)), SLOT(autoWidgetHasChanged()));
- else if(widget->inherits("QComboBox"))
- connect(widget, SIGNAL(currentIndexChanged(int)), SLOT(autoWidgetHasChanged()));
- else if(widget->inherits("QSpinBox"))
- connect(widget, SIGNAL(valueChanged(int)), SLOT(autoWidgetHasChanged()));
- else
- qWarning() << "SettingsPage::init(): Unknown autoWidget type" << widget->metaObject()->className();
- }
-}
-
-void SettingsPage::findAutoWidgets(QObject *parent, QObjectList *autoList) const {
- foreach(QObject *child, parent->children()) {
- if(child->property("settingsKey").isValid())
- autoList->append(child);
- findAutoWidgets(child, autoList);
- }
-}
-
-QByteArray SettingsPage::autoWidgetPropertyName(QObject *widget) const {
- QByteArray prop;
- if(widget->inherits("QAbstractButton") || widget->inherits("QGroupBox"))
- prop = "checked";
- else if(widget->inherits("QLineEdit") || widget->inherits("QTextEdit"))
- prop = "text";
- else if(widget->inherits("QComboBox"))
- prop = "currentIndex";
- else if(widget->inherits("QSpinBox"))
- prop = "value";
- else
- qWarning() << "SettingsPage::autoWidgetPropertyName(): Unhandled widget type for" << widget;
-
- return prop;
-}
-
-QString SettingsPage::autoWidgetSettingsKey(QObject *widget) const {
- QString key = widget->property("settingsKey").toString();
- if(key.isEmpty())
- return QString("");
- if(key.startsWith('/'))
- key.remove(0, 1);
- else
- key.prepend(settingsKey() + '/');
- return key;
-}
-
-void SettingsPage::autoWidgetHasChanged() {
- bool changed_ = false;
- foreach(QObject *widget, _autoWidgets) {
- QVariant curValue = widget->property(autoWidgetPropertyName(widget));
- if(!curValue.isValid())
- qWarning() << "SettingsPage::autoWidgetHasChanged(): Unknown property";
-
- if(curValue != widget->property("storedValue")) {
- changed_ = true;
- break;
+void SettingsPage::initAutoWidgets()
+{
+ _autoWidgets.clear();
+
+ // find all descendants that should be considered auto widgets
+ // we need to climb the QObject tree recursively
+ findAutoWidgets(this, &_autoWidgets);
+
+ foreach(QObject *widget, _autoWidgets) {
+ if (widget->inherits("ColorButton"))
+ connect(widget, SIGNAL(colorChanged(QColor)), SLOT(autoWidgetHasChanged()));
+ else if (widget->inherits("QAbstractButton") || widget->inherits("QGroupBox"))
+ connect(widget, SIGNAL(toggled(bool)), SLOT(autoWidgetHasChanged()));
+ else if (widget->inherits("QLineEdit") || widget->inherits("QTextEdit"))
+ connect(widget, SIGNAL(textChanged(const QString &)), SLOT(autoWidgetHasChanged()));
+ else if (widget->inherits("QComboBox"))
+ connect(widget, SIGNAL(currentIndexChanged(int)), SLOT(autoWidgetHasChanged()));
+ else if (widget->inherits("QSpinBox"))
+ connect(widget, SIGNAL(valueChanged(int)), SLOT(autoWidgetHasChanged()));
+ else if (widget->inherits("FontSelector"))
+ connect(widget, SIGNAL(fontChanged(QFont)), SLOT(autoWidgetHasChanged()));
+ else
+ qWarning() << "SettingsPage::init(): Unknown autoWidget type" << widget->metaObject()->className();