diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-01-14 11:34:22 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-01-14 10:40:09 +0000 |
commit | 70a31cdafbdb3f018e10465ccb9a481d6fa54ab5 (patch) | |
tree | af5ef4c20223bf17a55ca00e18589c34630d9ad7 /src/imports/controls/material/qquickmaterialstyle.cpp | |
parent | c08c717225e3c5387dd5f03cf42a7473403142ae (diff) |
Improve Material & Universal warnings
Before:
QQuickMaterialStyle: unknown accent "foo"
After:
qrc:/main.qml:28:9: QML CheckBox: unknown Material.accent value: foo
Furthermore, before invalid values in :/qtlabscontrols.conf were silently
ignored. Now it gives a clear warning:
:/qtlabscontrols.conf: unknown Material theme value: foo
Change-Id: I0be4eb26ffe23643e282197dc76a091801ab2f4d
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Diffstat (limited to 'src/imports/controls/material/qquickmaterialstyle.cpp')
-rw-r--r-- | src/imports/controls/material/qquickmaterialstyle.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/imports/controls/material/qquickmaterialstyle.cpp b/src/imports/controls/material/qquickmaterialstyle.cpp index ca2b653c..401566e9 100644 --- a/src/imports/controls/material/qquickmaterialstyle.cpp +++ b/src/imports/controls/material/qquickmaterialstyle.cpp @@ -38,6 +38,7 @@ #include <QtCore/qdebug.h> #include <QtCore/qsettings.h> +#include <QtQml/qqmlinfo.h> #include <QtLabsControls/private/qquickstyle_p.h> QT_BEGIN_NAMESPACE @@ -488,7 +489,7 @@ void QQuickMaterialStyle::setAccent(const QVariant &var) if (var.type() == QVariant::Int) { int val = var.toInt(); if (val > BlueGrey) { - qWarning() << "QQuickMaterialStyle: unknown accent" << val; + qmlInfo(parent()) << "unknown Material.accent value: " << val; return; } accent = val; @@ -499,7 +500,7 @@ void QQuickMaterialStyle::setAccent(const QVariant &var) } else { QColor color(var.toString()); if (!color.isValid()) { - qWarning() << "QQuickMaterialStyle: unknown accent" << var.toString(); + qmlInfo(parent()) << "unknown Material.accent value: " << var.toString(); return; } custom = true; @@ -823,15 +824,10 @@ void QQuickMaterialStyle::parentStyleChange(QQuickStyle *newParent, QQuickStyle } template <typename Enum> -static Enum readEnumValue(QSettings *settings, const QString &name, bool *ok) +static Enum toEnumValue(const QByteArray &value, bool *ok) { - int value = -1; - *ok = settings->contains(name); - if (*ok) { - QMetaEnum enumeration = QMetaEnum::fromType<Enum>(); - value = enumeration.keyToValue(settings->value(name).toByteArray(), ok); - } - return static_cast<Enum>(value); + QMetaEnum enumeration = QMetaEnum::fromType<Enum>(); + return static_cast<Enum>(enumeration.keyToValue(value, ok)); } void QQuickMaterialStyle::init() @@ -841,19 +837,25 @@ void QQuickMaterialStyle::init() QSharedPointer<QSettings> settings = QQuickStyle::settings(QStringLiteral("Material")); if (!settings.isNull()) { bool ok = false; - Theme theme = readEnumValue<Theme>(settings.data(), QStringLiteral("Theme"), &ok); + QByteArray value = settings->value(QStringLiteral("Theme")).toByteArray(); + Theme theme = toEnumValue<Theme>(value, &ok); if (ok) defaultTheme = m_theme = theme; + else if (!value.isEmpty()) + qWarning().nospace().noquote() << settings->fileName() << ": unknown Material theme value: " << value; - Color accent = readEnumValue<Color>(settings.data(), QStringLiteral("Accent"), &ok); + value = settings->value(QStringLiteral("Accent")).toByteArray(); + Color accent = toEnumValue<Color>(value, &ok); if (ok) { defaultCustom = m_customAccent = false; defaultAccent = m_accent = accent; } else { - QColor color(settings->value(QStringLiteral("Accent")).toString()); + QColor color(value.constData()); if (color.isValid()) { defaultCustom = m_customAccent = true; defaultAccent = m_accent = color.rgba(); + } else if (!value.isEmpty()) { + qWarning().nospace().noquote() << settings->fileName() << ": unknown Material accent value: " << value; } } } |