-void SettingsPage::initAutoWidgets() {
- _autoWidgets.clear();
-
- if(settingsKey().isNull())
- return;
-
- // 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"))
- 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()));
+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();
+ }
+}
+
+
+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("ColorButton"))
+ prop = "color";
+ else 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 if (widget->inherits("FontSelector"))
+ prop = "selectedFont";