/***************************************************************************
- * Copyright (C) 2005-2018 by the Quassel Project *
+ * Copyright (C) 2005-2020 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include "settingspage.h"
+#include <utility>
+
#include <QCheckBox>
#include <QComboBox>
#include <QSpinBox>
#include <QVariant>
+#include "fontselector.h"
#include "uisettings.h"
+#include "widgethelpers.h"
-SettingsPage::SettingsPage(const QString &category, const QString &title, QWidget *parent)
- : QWidget(parent),
- _category(category),
- _title(title),
- _changed(false),
- _autoWidgetsChanged(false)
-{
-}
-
+SettingsPage::SettingsPage(QString category, QString title, QWidget* parent)
+ : QWidget(parent)
+ , _category(std::move(category))
+ , _title(std::move(title))
+ , _changed(false)
+ , _autoWidgetsChanged(false)
+{}
void SettingsPage::setChangedState(bool hasChanged_)
{
}
}
-
-void SettingsPage::load(QCheckBox *box, bool checked)
+void SettingsPage::load(QCheckBox* box, bool checked)
{
box->setProperty("storedValue", checked);
box->setChecked(checked);
}
-
-bool SettingsPage::hasChanged(QCheckBox *box)
+bool SettingsPage::hasChanged(QCheckBox* box)
{
return box->property("storedValue").toBool() != box->isChecked();
}
-
-void SettingsPage::load(QComboBox *box, int index)
+void SettingsPage::load(QComboBox* box, int index)
{
box->setProperty("storedValue", index);
box->setCurrentIndex(index);
}
-
-bool SettingsPage::hasChanged(QComboBox *box)
+bool SettingsPage::hasChanged(QComboBox* box)
{
return box->property("storedValue").toInt() != box->currentIndex();
}
-
-void SettingsPage::load(QSpinBox *box, int value)
+void SettingsPage::load(QSpinBox* box, int value)
{
box->setProperty("storedValue", value);
box->setValue(value);
}
-
-bool SettingsPage::hasChanged(QSpinBox *box)
+bool SettingsPage::hasChanged(QSpinBox* box)
{
return box->property("storedValue").toInt() != box->value();
}
+
+void SettingsPage::load(FontSelector* box, QFont value)
+{
+ box->setProperty("storedValue", value);
+ box->setSelectedFont(value);
}
+bool SettingsPage::hasChanged(FontSelector* box)
+{
+ return box->property("storedValue").value<QFont>() != box->selectedFont();
+}
/*** Auto child widget handling ***/
// 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();
+ if (!connectToWidgetsChangedSignals(_autoWidgets, this, &SettingsPage::autoWidgetHasChanged)) {
+ qWarning() << "SettingsPage::initAutoWidgets(): Unsupported auto widget type(s)!";
}
}
-
-void SettingsPage::findAutoWidgets(QObject *parent, QObjectList *autoList) const
+void SettingsPage::findAutoWidgets(QObject* parent, QObjectList* autoList) const
{
- foreach(QObject *child, parent->children()) {
+ foreach (QObject* child, parent->children()) {
if (child->property("settingsKey").isValid())
autoList->append(child);
findAutoWidgets(child, autoList);
}
}
-
-QByteArray SettingsPage::autoWidgetPropertyName(QObject *widget) const
+QByteArray SettingsPage::autoWidgetPropertyName(QObject* widget) const
{
QByteArray prop;
if (widget->inherits("ColorButton"))
return prop;
}
-
-QString SettingsPage::autoWidgetSettingsKey(QObject *widget) const
+QString SettingsPage::autoWidgetSettingsKey(QObject* widget) const
{
QString key = widget->property("settingsKey").toString();
if (key.isEmpty())
return key;
}
-
void SettingsPage::autoWidgetHasChanged()
{
bool changed_ = false;
- foreach(QObject *widget, _autoWidgets) {
+ foreach (QObject* widget, _autoWidgets) {
QVariant curValue = widget->property(autoWidgetPropertyName(widget));
if (!curValue.isValid())
qWarning() << "SettingsPage::autoWidgetHasChanged(): Unknown property";
}
}
-
void SettingsPage::load()
{
UiSettings s("");
- foreach(QObject *widget, _autoWidgets) {
+ foreach (QObject* widget, _autoWidgets) {
QString key = autoWidgetSettingsKey(widget);
QVariant val;
if (key.isEmpty())
emit changed(hasChanged());
}
-
void SettingsPage::save()
{
UiSettings s("");
- foreach(QObject *widget, _autoWidgets) {
+ foreach (QObject* widget, _autoWidgets) {
QString key = autoWidgetSettingsKey(widget);
QVariant val = widget->property(autoWidgetPropertyName(widget));
widget->setProperty("storedValue", val);
emit changed(hasChanged());
}
-
void SettingsPage::defaults()
{
- foreach(QObject *widget, _autoWidgets) {
+ foreach (QObject* widget, _autoWidgets) {
QVariant val = widget->property("defaultValue");
widget->setProperty(autoWidgetPropertyName(widget), val);
}
autoWidgetHasChanged();
}
-
-QVariant SettingsPage::loadAutoWidgetValue(const QString &widgetName)
+QVariant SettingsPage::loadAutoWidgetValue(const QString& widgetName)
{
qWarning() << "Could not load value for SettingsPage widget" << widgetName;
return QVariant();
}
-
-void SettingsPage::saveAutoWidgetValue(const QString &widgetName, const QVariant &)
+void SettingsPage::saveAutoWidgetValue(const QString& widgetName, const QVariant&)
{
qWarning() << "Could not save value for SettingsPage widget" << widgetName;
}