aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickcontrols2/material/qquickmaterialstyle.cpp
diff options
context:
space:
mode:
authorMitch Curtis <[email protected]>2021-08-12 14:39:51 +0200
committerMitch Curtis <[email protected]>2021-08-16 12:52:59 +0200
commit809339d1484cf556512534367b8170bc26baf072 (patch)
tree12871313b658f36d058b5ef25af1e247e9c46ce9 /src/quickcontrols2/material/qquickmaterialstyle.cpp
parentb01b4f00eae8022c6a97d90f54dac395144ae095 (diff)
Remove qtquickcontrols2 sources and explain where they wentHEADdev
Now that qtquickcontrols2 has been merged into qtdeclarative, we should make it obvious that this repo should no longer be used, by preventing it from being built. Task-number: QTBUG-95173 Pick-to: 6.2 Change-Id: I95bd6a214f3d75a865ab163ee0a1f9ffbeb7a051 Reviewed-by: Alexandru Croitor <[email protected]> Reviewed-by: Volker Hilsheimer <[email protected]>
Diffstat (limited to 'src/quickcontrols2/material/qquickmaterialstyle.cpp')
-rw-r--r--src/quickcontrols2/material/qquickmaterialstyle.cpp1383
1 files changed, 0 insertions, 1383 deletions
diff --git a/src/quickcontrols2/material/qquickmaterialstyle.cpp b/src/quickcontrols2/material/qquickmaterialstyle.cpp
deleted file mode 100644
index d70728a0..00000000
--- a/src/quickcontrols2/material/qquickmaterialstyle.cpp
+++ /dev/null
@@ -1,1383 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL3$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPLv3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or later as published by the Free
-** Software Foundation and appearing in the file LICENSE.GPL included in
-** the packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 2.0 requirements will be
-** met: http://www.gnu.org/licenses/gpl-2.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qquickmaterialstyle_p.h"
-
-#include <QtCore/qdebug.h>
-#include <QtCore/qsettings.h>
-#include <QtQml/qqmlinfo.h>
-#include <QtQuickControls2/private/qquickstyle_p.h>
-
-QT_BEGIN_NAMESPACE
-
-static const QRgb colors[][14] = {
- // Red
- {
- 0xFFFFEBEE, // Shade50
- 0xFFFFCDD2, // Shade100
- 0xFFEF9A9A, // Shade200
- 0xFFE57373, // Shade300
- 0xFFEF5350, // Shade400
- 0xFFF44336, // Shade500
- 0xFFE53935, // Shade600
- 0xFFD32F2F, // Shade700
- 0xFFC62828, // Shade800
- 0xFFB71C1C, // Shade900
- 0xFFFF8A80, // ShadeA100
- 0xFFFF5252, // ShadeA200
- 0xFFFF1744, // ShadeA400
- 0xFFD50000 // ShadeA700
- },
- // Pink
- {
- 0xFFFCE4EC, // Shade50
- 0xFFF8BBD0, // Shade100
- 0xFFF48FB1, // Shade200
- 0xFFF06292, // Shade300
- 0xFFEC407A, // Shade400
- 0xFFE91E63, // Shade500
- 0xFFD81B60, // Shade600
- 0xFFC2185B, // Shade700
- 0xFFAD1457, // Shade800
- 0xFF880E4F, // Shade900
- 0xFFFF80AB, // ShadeA100
- 0xFFFF4081, // ShadeA200
- 0xFFF50057, // ShadeA400
- 0xFFC51162 // ShadeA700
- },
- // Purple
- {
- 0xFFF3E5F5, // Shade50
- 0xFFE1BEE7, // Shade100
- 0xFFCE93D8, // Shade200
- 0xFFBA68C8, // Shade300
- 0xFFAB47BC, // Shade400
- 0xFF9C27B0, // Shade500
- 0xFF8E24AA, // Shade600
- 0xFF7B1FA2, // Shade700
- 0xFF6A1B9A, // Shade800
- 0xFF4A148C, // Shade900
- 0xFFEA80FC, // ShadeA100
- 0xFFE040FB, // ShadeA200
- 0xFFD500F9, // ShadeA400
- 0xFFAA00FF // ShadeA700
- },
- // DeepPurple
- {
- 0xFFEDE7F6, // Shade50
- 0xFFD1C4E9, // Shade100
- 0xFFB39DDB, // Shade200
- 0xFF9575CD, // Shade300
- 0xFF7E57C2, // Shade400
- 0xFF673AB7, // Shade500
- 0xFF5E35B1, // Shade600
- 0xFF512DA8, // Shade700
- 0xFF4527A0, // Shade800
- 0xFF311B92, // Shade900
- 0xFFB388FF, // ShadeA100
- 0xFF7C4DFF, // ShadeA200
- 0xFF651FFF, // ShadeA400
- 0xFF6200EA // ShadeA700
- },
- // Indigo
- {
- 0xFFE8EAF6, // Shade50
- 0xFFC5CAE9, // Shade100
- 0xFF9FA8DA, // Shade200
- 0xFF7986CB, // Shade300
- 0xFF5C6BC0, // Shade400
- 0xFF3F51B5, // Shade500
- 0xFF3949AB, // Shade600
- 0xFF303F9F, // Shade700
- 0xFF283593, // Shade800
- 0xFF1A237E, // Shade900
- 0xFF8C9EFF, // ShadeA100
- 0xFF536DFE, // ShadeA200
- 0xFF3D5AFE, // ShadeA400
- 0xFF304FFE // ShadeA700
- },
- // Blue
- {
- 0xFFE3F2FD, // Shade50
- 0xFFBBDEFB, // Shade100
- 0xFF90CAF9, // Shade200
- 0xFF64B5F6, // Shade300
- 0xFF42A5F5, // Shade400
- 0xFF2196F3, // Shade500
- 0xFF1E88E5, // Shade600
- 0xFF1976D2, // Shade700
- 0xFF1565C0, // Shade800
- 0xFF0D47A1, // Shade900
- 0xFF82B1FF, // ShadeA100
- 0xFF448AFF, // ShadeA200
- 0xFF2979FF, // ShadeA400
- 0xFF2962FF // ShadeA700
- },
- // LightBlue
- {
- 0xFFE1F5FE, // Shade50
- 0xFFB3E5FC, // Shade100
- 0xFF81D4FA, // Shade200
- 0xFF4FC3F7, // Shade300
- 0xFF29B6F6, // Shade400
- 0xFF03A9F4, // Shade500
- 0xFF039BE5, // Shade600
- 0xFF0288D1, // Shade700
- 0xFF0277BD, // Shade800
- 0xFF01579B, // Shade900
- 0xFF80D8FF, // ShadeA100
- 0xFF40C4FF, // ShadeA200
- 0xFF00B0FF, // ShadeA400
- 0xFF0091EA // ShadeA700
- },
- // Cyan
- {
- 0xFFE0F7FA, // Shade50
- 0xFFB2EBF2, // Shade100
- 0xFF80DEEA, // Shade200
- 0xFF4DD0E1, // Shade300
- 0xFF26C6DA, // Shade400
- 0xFF00BCD4, // Shade500
- 0xFF00ACC1, // Shade600
- 0xFF0097A7, // Shade700
- 0xFF00838F, // Shade800
- 0xFF006064, // Shade900
- 0xFF84FFFF, // ShadeA100
- 0xFF18FFFF, // ShadeA200
- 0xFF00E5FF, // ShadeA400
- 0xFF00B8D4 // ShadeA700
- },
- // Teal
- {
- 0xFFE0F2F1, // Shade50
- 0xFFB2DFDB, // Shade100
- 0xFF80CBC4, // Shade200
- 0xFF4DB6AC, // Shade300
- 0xFF26A69A, // Shade400
- 0xFF009688, // Shade500
- 0xFF00897B, // Shade600
- 0xFF00796B, // Shade700
- 0xFF00695C, // Shade800
- 0xFF004D40, // Shade900
- 0xFFA7FFEB, // ShadeA100
- 0xFF64FFDA, // ShadeA200
- 0xFF1DE9B6, // ShadeA400
- 0xFF00BFA5 // ShadeA700
- },
- // Green
- {
- 0xFFE8F5E9, // Shade50
- 0xFFC8E6C9, // Shade100
- 0xFFA5D6A7, // Shade200
- 0xFF81C784, // Shade300
- 0xFF66BB6A, // Shade400
- 0xFF4CAF50, // Shade500
- 0xFF43A047, // Shade600
- 0xFF388E3C, // Shade700
- 0xFF2E7D32, // Shade800
- 0xFF1B5E20, // Shade900
- 0xFFB9F6CA, // ShadeA100
- 0xFF69F0AE, // ShadeA200
- 0xFF00E676, // ShadeA400
- 0xFF00C853 // ShadeA700
- },
- // LightGreen
- {
- 0xFFF1F8E9, // Shade50
- 0xFFDCEDC8, // Shade100
- 0xFFC5E1A5, // Shade200
- 0xFFAED581, // Shade300
- 0xFF9CCC65, // Shade400
- 0xFF8BC34A, // Shade500
- 0xFF7CB342, // Shade600
- 0xFF689F38, // Shade700
- 0xFF558B2F, // Shade800
- 0xFF33691E, // Shade900
- 0xFFCCFF90, // ShadeA100
- 0xFFB2FF59, // ShadeA200
- 0xFF76FF03, // ShadeA400
- 0xFF64DD17 // ShadeA700
- },
- // Lime
- {
- 0xFFF9FBE7, // Shade50
- 0xFFF0F4C3, // Shade100
- 0xFFE6EE9C, // Shade200
- 0xFFDCE775, // Shade300
- 0xFFD4E157, // Shade400
- 0xFFCDDC39, // Shade500
- 0xFFC0CA33, // Shade600
- 0xFFAFB42B, // Shade700
- 0xFF9E9D24, // Shade800
- 0xFF827717, // Shade900
- 0xFFF4FF81, // ShadeA100
- 0xFFEEFF41, // ShadeA200
- 0xFFC6FF00, // ShadeA400
- 0xFFAEEA00 // ShadeA700
- },
- // Yellow
- {
- 0xFFFFFDE7, // Shade50
- 0xFFFFF9C4, // Shade100
- 0xFFFFF59D, // Shade200
- 0xFFFFF176, // Shade300
- 0xFFFFEE58, // Shade400
- 0xFFFFEB3B, // Shade500
- 0xFFFDD835, // Shade600
- 0xFFFBC02D, // Shade700
- 0xFFF9A825, // Shade800
- 0xFFF57F17, // Shade900
- 0xFFFFFF8D, // ShadeA100
- 0xFFFFFF00, // ShadeA200
- 0xFFFFEA00, // ShadeA400
- 0xFFFFD600 // ShadeA700
- },
- // Amber
- {
- 0xFFFFF8E1, // Shade50
- 0xFFFFECB3, // Shade100
- 0xFFFFE082, // Shade200
- 0xFFFFD54F, // Shade300
- 0xFFFFCA28, // Shade400
- 0xFFFFC107, // Shade500
- 0xFFFFB300, // Shade600
- 0xFFFFA000, // Shade700
- 0xFFFF8F00, // Shade800
- 0xFFFF6F00, // Shade900
- 0xFFFFE57F, // ShadeA100
- 0xFFFFD740, // ShadeA200
- 0xFFFFC400, // ShadeA400
- 0xFFFFAB00 // ShadeA700
- },
- // Orange
- {
- 0xFFFFF3E0, // Shade50
- 0xFFFFE0B2, // Shade100
- 0xFFFFCC80, // Shade200
- 0xFFFFB74D, // Shade300
- 0xFFFFA726, // Shade400
- 0xFFFF9800, // Shade500
- 0xFFFB8C00, // Shade600
- 0xFFF57C00, // Shade700
- 0xFFEF6C00, // Shade800
- 0xFFE65100, // Shade900
- 0xFFFFD180, // ShadeA100
- 0xFFFFAB40, // ShadeA200
- 0xFFFF9100, // ShadeA400
- 0xFFFF6D00 // ShadeA700
- },
- // DeepOrange
- {
- 0xFFFBE9E7, // Shade50
- 0xFFFFCCBC, // Shade100
- 0xFFFFAB91, // Shade200
- 0xFFFF8A65, // Shade300
- 0xFFFF7043, // Shade400
- 0xFFFF5722, // Shade500
- 0xFFF4511E, // Shade600
- 0xFFE64A19, // Shade700
- 0xFFD84315, // Shade800
- 0xFFBF360C, // Shade900
- 0xFFFF9E80, // ShadeA100
- 0xFFFF6E40, // ShadeA200
- 0xFFFF3D00, // ShadeA400
- 0xFFDD2C00 // ShadeA700
- },
- // Brown
- {
- 0xFFEFEBE9, // Shade50
- 0xFFD7CCC8, // Shade100
- 0xFFBCAAA4, // Shade200
- 0xFFA1887F, // Shade300
- 0xFF8D6E63, // Shade400
- 0xFF795548, // Shade500
- 0xFF6D4C41, // Shade600
- 0xFF5D4037, // Shade700
- 0xFF4E342E, // Shade800
- 0xFF3E2723, // Shade900
- 0xFF000000, // ShadeA100
- 0xFF000000, // ShadeA200
- 0xFF000000, // ShadeA400
- 0xFF000000 // ShadeA700
- },
- // Grey
- {
- 0xFFFAFAFA, // Shade50
- 0xFFF5F5F5, // Shade100
- 0xFFEEEEEE, // Shade200
- 0xFFE0E0E0, // Shade300
- 0xFFBDBDBD, // Shade400
- 0xFF9E9E9E, // Shade500
- 0xFF757575, // Shade600
- 0xFF616161, // Shade700
- 0xFF424242, // Shade800
- 0xFF212121, // Shade900
- 0xFF000000, // ShadeA100
- 0xFF000000, // ShadeA200
- 0xFF000000, // ShadeA400
- 0xFF000000 // ShadeA700
- },
- // BlueGrey
- {
- 0xFFECEFF1, // Shade50
- 0xFFCFD8DC, // Shade100
- 0xFFB0BEC5, // Shade200
- 0xFF90A4AE, // Shade300
- 0xFF78909C, // Shade400
- 0xFF607D8B, // Shade500
- 0xFF546E7A, // Shade600
- 0xFF455A64, // Shade700
- 0xFF37474F, // Shade800
- 0xFF263238, // Shade900
- 0xFF000000, // ShadeA100
- 0xFF000000, // ShadeA200
- 0xFF000000, // ShadeA400
- 0xFF000000 // ShadeA700
- }
-};
-
-// If no value was inherited from a parent or explicitly set, the "global" values are used.
-// The initial, default values of the globals are hard-coded here, but the environment
-// variables and .conf file override them if specified.
-static QQuickMaterialStyle::Theme globalTheme = QQuickMaterialStyle::Light;
-static uint globalPrimary = QQuickMaterialStyle::Indigo;
-static uint globalAccent = QQuickMaterialStyle::Pink;
-static uint globalForeground = 0xDD000000; // primaryTextColorLight
-static uint globalBackground = 0xFFFAFAFA; // backgroundColorLight
-// These represent whether a global foreground/background was set.
-// Each style's m_hasForeground/m_hasBackground are initialized to these values.
-static bool hasGlobalForeground = false;
-static bool hasGlobalBackground = false;
-// These represent whether or not the global color value was specified as one of the
-// values that QColor accepts, as opposed to one of the pre-defined colors like Red.
-static bool globalPrimaryCustom = false;
-static bool globalAccentCustom = false;
-static bool globalForegroundCustom = true;
-static bool globalBackgroundCustom = true;
-// This is global because:
-// 1) The theme needs access to it to determine font sizes.
-// 2) There can only be one variant used for the whole application.
-static QQuickMaterialStyle::Variant globalVariant = QQuickMaterialStyle::Normal;
-
-static const QRgb backgroundColorLight = 0xFFFAFAFA;
-static const QRgb backgroundColorDark = 0xFF303030;
-static const QRgb dialogColorLight = 0xFFFFFFFF;
-static const QRgb dialogColorDark = 0xFF424242;
-static const QRgb primaryTextColorLight = 0xDD000000;
-static const QRgb primaryTextColorDark = 0xFFFFFFFF;
-static const QRgb secondaryTextColorLight = 0x89000000;
-static const QRgb secondaryTextColorDark = 0xB2FFFFFF;
-static const QRgb hintTextColorLight = 0x60000000;
-static const QRgb hintTextColorDark = 0x4CFFFFFF;
-static const QRgb dividerColorLight = 0x1E000000;
-static const QRgb dividerColorDark = 0x1EFFFFFF;
-static const QRgb iconColorLight = 0x89000000;
-static const QRgb iconColorDark = 0xFFFFFFFF;
-static const QRgb iconDisabledColorLight = 0x42000000;
-static const QRgb iconDisabledColorDark = 0x4CFFFFFF;
-static const QRgb raisedButtonColorLight = 0xFFD6D7D7;
-static const QRgb raisedButtonColorDark = 0x3FCCCCCC;
-static const QRgb raisedButtonDisabledColorLight = dividerColorLight;
-static const QRgb raisedButtonDisabledColorDark = dividerColorDark;
-static const QRgb frameColorLight = hintTextColorLight;
-static const QRgb frameColorDark = hintTextColorDark;
-static const QRgb switchUncheckedTrackColorLight = 0x42000000;
-static const QRgb switchUncheckedTrackColorDark = 0x4CFFFFFF;
-static const QRgb switchDisabledTrackColorLight = 0x1E000000;
-static const QRgb switchDisabledTrackColorDark = 0x19FFFFFF;
-static const QRgb rippleColorLight = 0x10000000;
-static const QRgb rippleColorDark = 0x20FFFFFF;
-static const QRgb spinBoxDisabledIconColorLight = 0xFFCCCCCC;
-static const QRgb spinBoxDisabledIconColorDark = 0xFF666666;
-static const QRgb sliderDisabledColorLight = 0xFF9E9E9E;
-static const QRgb sliderDisabledColorDark = 0xFF616161;
-
-static QQuickMaterialStyle::Theme effectiveTheme(QQuickMaterialStyle::Theme theme)
-{
- if (theme == QQuickMaterialStyle::System)
- theme = QQuickStylePrivate::isDarkSystemTheme() ? QQuickMaterialStyle::Dark : QQuickMaterialStyle::Light;
- return theme;
-}
-
-QQuickMaterialStyle::QQuickMaterialStyle(QObject *parent) : QQuickAttachedObject(parent),
- m_customPrimary(globalPrimaryCustom),
- m_customAccent(globalAccentCustom),
- m_customForeground(globalForegroundCustom),
- m_customBackground(globalBackgroundCustom),
- m_hasForeground(hasGlobalForeground),
- m_hasBackground(hasGlobalBackground),
- m_theme(globalTheme),
- m_primary(globalPrimary),
- m_accent(globalAccent),
- m_foreground(globalForeground),
- m_background(globalBackground)
-{
- QQuickAttachedObject::init();
-}
-
-QQuickMaterialStyle *QQuickMaterialStyle::qmlAttachedProperties(QObject *object)
-{
- return new QQuickMaterialStyle(object);
-}
-
-QQuickMaterialStyle::Theme QQuickMaterialStyle::theme() const
-{
- return m_theme;
-}
-
-void QQuickMaterialStyle::setTheme(Theme theme)
-{
- if (theme == System)
- theme = QQuickStylePrivate::isDarkSystemTheme() ? Dark : Light;
-
- m_explicitTheme = true;
- if (m_theme == theme)
- return;
-
- m_theme = theme;
- propagateTheme();
- themeChange();
- if (!m_customAccent)
- accentChange();
- if (!m_hasBackground)
- backgroundChange();
- if (!m_hasForeground)
- foregroundChange();
-}
-
-void QQuickMaterialStyle::inheritTheme(Theme theme)
-{
- if (m_explicitTheme || m_theme == theme)
- return;
-
- m_theme = theme;
- propagateTheme();
- themeChange();
- if (!m_customAccent)
- accentChange();
- if (!m_hasBackground)
- backgroundChange();
- if (!m_hasForeground)
- foregroundChange();
-}
-
-void QQuickMaterialStyle::propagateTheme()
-{
- const auto styles = attachedChildren();
- for (QQuickAttachedObject *child : styles) {
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child);
- if (material)
- material->inheritTheme(m_theme);
- }
-}
-
-void QQuickMaterialStyle::resetTheme()
-{
- if (!m_explicitTheme)
- return;
-
- m_explicitTheme = false;
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(attachedParent());
- inheritTheme(material ? material->theme() : globalTheme);
-}
-
-void QQuickMaterialStyle::themeChange()
-{
- emit themeChanged();
- emit themeOrAccentChanged();
- emit primaryHighlightedTextColor();
- emit buttonColorChanged();
- emit buttonDisabledColorChanged();
- emit dialogColorChanged();
- emit tooltipColorChanged();
- emit toolBarColorChanged();
- emit toolTextColorChanged();
-}
-
-QVariant QQuickMaterialStyle::primary() const
-{
- return primaryColor();
-}
-
-void QQuickMaterialStyle::setPrimary(const QVariant &var)
-{
- QRgb primary = 0;
- bool custom = false;
- if (!variantToRgba(var, "primary", &primary, &custom))
- return;
-
- m_explicitPrimary = true;
- if (m_primary == primary)
- return;
-
- m_customPrimary = custom;
- m_primary = primary;
- propagatePrimary();
- primaryChange();
-}
-
-void QQuickMaterialStyle::inheritPrimary(uint primary, bool custom)
-{
- if (m_explicitPrimary || m_primary == primary)
- return;
-
- m_customPrimary = custom;
- m_primary = primary;
- propagatePrimary();
- primaryChange();
-}
-
-void QQuickMaterialStyle::propagatePrimary()
-{
- const auto styles = attachedChildren();
- for (QQuickAttachedObject *child : styles) {
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child);
- if (material)
- material->inheritPrimary(m_primary, m_customPrimary);
- }
-}
-
-void QQuickMaterialStyle::resetPrimary()
-{
- if (!m_explicitPrimary)
- return;
-
- m_customPrimary = false;
- m_explicitPrimary = false;
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(attachedParent());
- if (material)
- inheritPrimary(material->m_primary, material->m_customPrimary);
- else
- inheritPrimary(globalPrimary, false);
-}
-
-void QQuickMaterialStyle::primaryChange()
-{
- emit primaryChanged();
- emit toolBarColorChanged();
- emit toolTextColorChanged();
-}
-
-QVariant QQuickMaterialStyle::accent() const
-{
- return accentColor();
-}
-
-void QQuickMaterialStyle::setAccent(const QVariant &var)
-{
- QRgb accent = 0;
- bool custom = false;
- if (!variantToRgba(var, "accent", &accent, &custom))
- return;
-
- m_explicitAccent = true;
- if (m_accent == accent)
- return;
-
- m_customAccent = custom;
- m_accent = accent;
- propagateAccent();
- accentChange();
-}
-
-void QQuickMaterialStyle::inheritAccent(uint accent, bool custom)
-{
- if (m_explicitAccent || m_accent == accent)
- return;
-
- m_customAccent = custom;
- m_accent = accent;
- propagateAccent();
- accentChange();
-}
-
-void QQuickMaterialStyle::propagateAccent()
-{
- const auto styles = attachedChildren();
- for (QQuickAttachedObject *child : styles) {
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child);
- if (material)
- material->inheritAccent(m_accent, m_customAccent);
- }
-}
-
-void QQuickMaterialStyle::resetAccent()
-{
- if (!m_explicitAccent)
- return;
-
- m_customAccent = false;
- m_explicitAccent = false;
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(attachedParent());
- if (material)
- inheritAccent(material->m_accent, material->m_customAccent);
- else
- inheritAccent(globalAccent, false);
-}
-
-void QQuickMaterialStyle::accentChange()
-{
- emit accentChanged();
- emit themeOrAccentChanged();
- emit buttonColorChanged();
-}
-
-QVariant QQuickMaterialStyle::foreground() const
-{
- if (!m_hasForeground)
- return QColor::fromRgba(m_theme == Light ? primaryTextColorLight : primaryTextColorDark);
- if (m_customForeground)
- return QColor::fromRgba(m_foreground);
- if (m_foreground > BlueGrey)
- return QColor();
- return QColor::fromRgba(colors[m_foreground][Shade500]);
-}
-
-void QQuickMaterialStyle::setForeground(const QVariant &var)
-{
- QRgb foreground = 0;
- bool custom = false;
- if (!variantToRgba(var, "foreground", &foreground, &custom))
- return;
-
- m_hasForeground = true;
- m_explicitForeground = true;
- if (m_foreground == foreground)
- return;
-
- m_customForeground = custom;
- m_foreground = foreground;
- propagateForeground();
- foregroundChange();
-}
-
-void QQuickMaterialStyle::inheritForeground(uint foreground, bool custom, bool has)
-{
- if (m_explicitForeground || m_foreground == foreground)
- return;
-
- m_hasForeground = has;
- m_customForeground = custom;
- m_foreground = foreground;
- propagateForeground();
- foregroundChange();
-}
-
-void QQuickMaterialStyle::propagateForeground()
-{
- const auto styles = attachedChildren();
- for (QQuickAttachedObject *child : styles) {
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child);
- if (material)
- material->inheritForeground(m_foreground, m_customForeground, m_hasForeground);
- }
-}
-
-void QQuickMaterialStyle::resetForeground()
-{
- if (!m_explicitForeground)
- return;
-
- m_hasForeground = false;
- m_customForeground = false;
- m_explicitForeground = false;
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(attachedParent());
- inheritForeground(material ? material->m_foreground : globalForeground, true, material ? material->m_hasForeground : false);
-}
-
-void QQuickMaterialStyle::foregroundChange()
-{
- emit foregroundChanged();
- emit primaryHighlightedTextColorChanged();
- // TODO: This causes a binding loop: see QTBUG-85699 and the comments on its fix
-// emit toolTextColorChanged();
-}
-
-QVariant QQuickMaterialStyle::background() const
-{
- return backgroundColor();
-}
-
-void QQuickMaterialStyle::setBackground(const QVariant &var)
-{
- QRgb background = 0;
- bool custom = false;
- if (!variantToRgba(var, "background", &background, &custom))
- return;
-
- m_hasBackground = true;
- m_explicitBackground = true;
- if (m_background == background)
- return;
-
- m_customBackground = custom;
- m_background = background;
- propagateBackground();
- backgroundChange();
-}
-
-void QQuickMaterialStyle::inheritBackground(uint background, bool custom, bool has)
-{
- if (m_explicitBackground || m_background == background)
- return;
-
- m_hasBackground = has;
- m_customBackground = custom;
- m_background = background;
- propagateBackground();
- backgroundChange();
-}
-
-void QQuickMaterialStyle::propagateBackground()
-{
- const auto styles = attachedChildren();
- for (QQuickAttachedObject *child : styles) {
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child);
- if (material)
- material->inheritBackground(m_background, m_customBackground, m_hasBackground);
- }
-}
-
-void QQuickMaterialStyle::resetBackground()
-{
- if (!m_explicitBackground)
- return;
-
- m_hasBackground = false;
- m_customBackground = false;
- m_explicitBackground = false;
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(attachedParent());
- inheritBackground(material ? material->m_background : globalBackground, true, material ? material->m_hasBackground : false);
-}
-
-void QQuickMaterialStyle::backgroundChange()
-{
- emit backgroundChanged();
- emit buttonColorChanged();
- emit dialogColorChanged();
- emit tooltipColorChanged();
- emit toolBarColorChanged();
-}
-
-int QQuickMaterialStyle::elevation() const
-{
- return m_elevation;
-}
-
-void QQuickMaterialStyle::setElevation(int elevation)
-{
- if (m_elevation == elevation)
- return;
-
- m_elevation = elevation;
- elevationChange();
-}
-
-void QQuickMaterialStyle::resetElevation()
-{
- setElevation(0);
-}
-
-void QQuickMaterialStyle::elevationChange()
-{
- emit elevationChanged();
- emit buttonDisabledColorChanged();
-}
-
-QColor QQuickMaterialStyle::primaryColor() const
-{
- if (m_customPrimary)
- return QColor::fromRgba(m_primary);
- if (m_primary > BlueGrey)
- return QColor();
- return colors[m_primary][Shade500];
-}
-
-QColor QQuickMaterialStyle::accentColor(Shade shade) const
-{
- if (m_customAccent)
- return shade == themeShade() ? QColor::fromRgba(m_accent)
- : this->shade(QColor::fromRgba(m_accent), shade);
- if (m_accent > BlueGrey)
- return QColor();
- return colors[m_accent][shade];
-}
-
-QColor QQuickMaterialStyle::accentColor() const
-{
- return accentColor(themeShade());
-}
-
-QColor QQuickMaterialStyle::backgroundColor(Shade shade) const
-{
- if (!m_hasBackground)
- return QColor::fromRgba(m_theme == Light ? backgroundColorLight : backgroundColorDark);
- if (m_customBackground)
- return shade == themeShade() ? QColor::fromRgba(m_background)
- : this->shade(QColor::fromRgba(m_background), shade);
- if (m_background > BlueGrey)
- return QColor();
- return colors[m_background][shade];
-}
-
-QColor QQuickMaterialStyle::backgroundColor() const
-{
- return backgroundColor(themeShade());
-}
-
-QColor QQuickMaterialStyle::primaryTextColor() const
-{
- return QColor::fromRgba(m_theme == Light ? primaryTextColorLight : primaryTextColorDark);
-}
-
-QColor QQuickMaterialStyle::primaryHighlightedTextColor() const
-{
- if (m_explicitForeground)
- return primaryTextColor();
- return QColor::fromRgba(primaryTextColorDark);
-}
-
-QColor QQuickMaterialStyle::secondaryTextColor() const
-{
- return QColor::fromRgba(m_theme == Light ? secondaryTextColorLight : secondaryTextColorDark);
-}
-
-QColor QQuickMaterialStyle::hintTextColor() const
-{
- return QColor::fromRgba(m_theme == Light ? hintTextColorLight : hintTextColorDark);
-}
-
-QColor QQuickMaterialStyle::textSelectionColor() const
-{
- QColor color = accentColor();
- color.setAlphaF(0.4f);
- return color;
-}
-
-QColor QQuickMaterialStyle::dropShadowColor() const
-{
- return QColor::fromRgba(0x40000000);
-}
-
-QColor QQuickMaterialStyle::dividerColor() const
-{
- return QColor::fromRgba(m_theme == Light ? dividerColorLight : dividerColorDark);
-}
-
-QColor QQuickMaterialStyle::iconColor() const
-{
- return QColor::fromRgba(m_theme == Light ? iconColorLight : iconColorDark);
-}
-
-QColor QQuickMaterialStyle::iconDisabledColor() const
-{
- return QColor::fromRgba(m_theme == Light ? iconDisabledColorLight : iconDisabledColorDark);
-}
-
-QColor QQuickMaterialStyle::buttonColor(bool highlighted) const
-{
- Shade shade = themeShade();
-
- QColor color = Qt::transparent;
-
- if (m_explicitBackground) {
- color = backgroundColor(shade);
- } else if (highlighted) {
- color = accentColor(shade);
- } else if (elevation() > 0) {
- color = QColor::fromRgba(m_theme == Light ? raisedButtonColorLight
- : raisedButtonColorDark);
- }
-
- return color;
-}
-
-QColor QQuickMaterialStyle::buttonColor() const
-{
- return buttonColor(false);
-}
-
-QColor QQuickMaterialStyle::buttonDisabledColor() const
-{
- if (elevation() > 0) {
- return QColor::fromRgba(m_theme == Light ? raisedButtonDisabledColorLight
- : raisedButtonDisabledColorDark);
- } else {
- return Qt::transparent;
- }
-}
-
-QColor QQuickMaterialStyle::highlightedButtonColor() const
-{
- return buttonColor(true);
-}
-
-QColor QQuickMaterialStyle::frameColor() const
-{
- return QColor::fromRgba(m_theme == Light ? frameColorLight : frameColorDark);
-}
-
-QColor QQuickMaterialStyle::rippleColor() const
-{
- return QColor::fromRgba(m_theme == Light ? rippleColorLight : rippleColorDark);
-}
-
-QColor QQuickMaterialStyle::highlightedRippleColor() const
-{
- QColor pressColor = accentColor();
- pressColor.setAlpha(m_theme == Light ? 30 : 50);
- return pressColor;
-}
-
-QColor QQuickMaterialStyle::switchUncheckedTrackColor() const
-{
- return QColor::fromRgba(m_theme == Light ? switchUncheckedTrackColorLight : switchUncheckedTrackColorDark);
-}
-
-QColor QQuickMaterialStyle::switchCheckedTrackColor() const
-{
- QColor trackColor(accentColor());
- trackColor.setAlphaF(0.5);
- return trackColor;
-}
-
-QColor QQuickMaterialStyle::switchUncheckedHandleColor() const
-{
- return m_theme == Light ? color(Grey, Shade50) : color(Grey, Shade400);
-}
-
-QColor QQuickMaterialStyle::switchCheckedHandleColor() const
-{
- return m_theme == Light ? accentColor() : shade(accentColor(), Shade200);
-}
-
-QColor QQuickMaterialStyle::switchDisabledTrackColor() const
-{
- return QColor::fromRgba(m_theme == Light ? switchDisabledTrackColorLight : switchDisabledTrackColorDark);
-}
-
-QColor QQuickMaterialStyle::switchDisabledHandleColor() const
-{
- return m_theme == Light ? color(Grey, Shade400) : color(Grey, Shade800);
-}
-
-QColor QQuickMaterialStyle::scrollBarColor() const
-{
- return QColor::fromRgba(m_theme == Light ? 0x40000000 : 0x40FFFFFF);
-}
-
-QColor QQuickMaterialStyle::scrollBarHoveredColor() const
-{
- return QColor::fromRgba(m_theme == Light ? 0x60000000 : 0x60FFFFFF);
-}
-
-QColor QQuickMaterialStyle::scrollBarPressedColor() const
-{
- return QColor::fromRgba(m_theme == Light ? 0x80000000 : 0x80FFFFFF);
-}
-
-QColor QQuickMaterialStyle::dialogColor() const
-{
- if (m_hasBackground)
- return backgroundColor();
- return QColor::fromRgba(m_theme == Light ? dialogColorLight : dialogColorDark);
-}
-
-QColor QQuickMaterialStyle::backgroundDimColor() const
-{
- return QColor::fromRgba(m_theme == Light ? 0x99303030 : 0x99fafafa);
-}
-
-QColor QQuickMaterialStyle::listHighlightColor() const
-{
- return QColor::fromRgba(m_theme == Light ? 0x1e000000 : 0x1effffff);
-}
-
-QColor QQuickMaterialStyle::tooltipColor() const
-{
- if (m_explicitBackground)
- return backgroundColor();
- return color(Grey, Shade700);
-}
-
-QColor QQuickMaterialStyle::toolBarColor() const
-{
- if (m_explicitBackground)
- return backgroundColor();
- return primaryColor();
-}
-
-QColor QQuickMaterialStyle::toolTextColor() const
-{
- if (m_hasForeground || m_customPrimary)
- return primaryTextColor();
-
- switch (m_primary) {
- case Red:
- case Pink:
- case Purple:
- case DeepPurple:
- case Indigo:
- case Blue:
- case Teal:
- case DeepOrange:
- case Brown:
- case BlueGrey:
- return QColor::fromRgba(primaryTextColorDark);
-
- case LightBlue:
- case Cyan:
- case Green:
- case LightGreen:
- case Lime:
- case Yellow:
- case Amber:
- case Orange:
- case Grey:
- return QColor::fromRgba(primaryTextColorLight);
-
- default:
- break;
- }
-
- return primaryTextColor();
-}
-
-QColor QQuickMaterialStyle::spinBoxDisabledIconColor() const
-{
- return QColor::fromRgba(m_theme == Light ? spinBoxDisabledIconColorLight : spinBoxDisabledIconColorDark);
-}
-
-QColor QQuickMaterialStyle::sliderDisabledColor() const
-{
- return QColor::fromRgba(m_theme == Light ? sliderDisabledColorLight : sliderDisabledColorDark);
-}
-
-QColor QQuickMaterialStyle::color(QQuickMaterialStyle::Color color, QQuickMaterialStyle::Shade shade) const
-{
- int count = sizeof(colors) / sizeof(colors[0]);
- if (color < 0 || color >= count)
- return QColor();
-
- count = sizeof(colors[0]) / sizeof(colors[0][0]);
- if (shade < 0 || shade >= count)
- return QColor();
-
- return colors[color][shade];
-}
-
-static QColor lighterShade(const QColor &color, qreal amount)
-{
- QColor hsl = color.toHsl();
- hsl.setHslF(hsl.hueF(), hsl.saturationF(), qBound<qreal>(0.0, hsl.lightnessF() + amount, 1.0), color.alphaF());
- return hsl.convertTo(color.spec());
-}
-
-static QColor darkerShade(const QColor &color, qreal amount)
-{
- QColor hsl = color.toHsl();
- hsl.setHslF(hsl.hueF(), hsl.saturationF(), qBound<qreal>(0.0, hsl.lightnessF() - amount, 1.0), color.alphaF());
- return hsl.convertTo(color.spec());
-}
-
-QQuickMaterialStyle::Shade QQuickMaterialStyle::themeShade() const
-{
- return m_theme == Light ? Shade500 : Shade200;
-}
-
-/*
- * The following lightness values originate from the Material Design Color Generator project.
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2015 mbitson
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-// Returns the same color, if shade == themeShade()
-QColor QQuickMaterialStyle::shade(const QColor &color, Shade shade) const
-{
- switch (shade) {
- case Shade50:
- return lighterShade(color, m_theme == Light ? 0.52 : 0.26);
- case Shade100:
- return lighterShade(color, m_theme == Light ? 0.37 : 0.11);
- case Shade200:
- return m_theme == Light ? lighterShade(color, 0.26) : color;
- case Shade300:
- return m_theme == Light ? lighterShade(color, 0.12) : darkerShade(color, 0.14);
- case Shade400:
- return m_theme == Light ? lighterShade(color, 0.06) : darkerShade(color, 0.20);
- case Shade500:
- return m_theme == Light ? color : darkerShade(color, 0.26);
- case Shade600:
- return darkerShade(color, m_theme == Light ? 0.06 : 0.32);
- case Shade700:
- return darkerShade(color, m_theme == Light ? 0.12 : 0.38);
- case Shade800:
- return darkerShade(color, m_theme == Light ? 0.18 : 0.44);
- case Shade900:
- return darkerShade(color, m_theme == Light ? 0.24 : 0.50);
- case ShadeA100:
- return lighterShade(color, m_theme == Light ? 0.54 : 0.28);
- case ShadeA200:
- return lighterShade(color, m_theme == Light ? 0.37 : 0.11);
- case ShadeA400:
- return m_theme == Light ? lighterShade(color, 0.06) : darkerShade(color, 0.20);
- case ShadeA700:
- return darkerShade(color, m_theme == Light ? 0.12 : 0.38);
- default:
- Q_UNREACHABLE();
- return QColor();
- }
-}
-
-int QQuickMaterialStyle::touchTarget() const
-{
- // https://material.io/guidelines/components/buttons.html#buttons-style
- return globalVariant == Dense ? 44 : 48;
-}
-
-int QQuickMaterialStyle::buttonHeight() const
-{
- // https://material.io/guidelines/components/buttons.html#buttons-style
- return globalVariant == Dense ? 32 : 36;
-}
-
-int QQuickMaterialStyle::delegateHeight() const
-{
- // https://material.io/guidelines/components/lists.html#lists-specs
- return globalVariant == Dense ? 40 : 48;
-}
-
-int QQuickMaterialStyle::dialogButtonBoxHeight() const
-{
- return globalVariant == Dense ? 48 : 52;
-}
-
-int QQuickMaterialStyle::frameVerticalPadding() const
-{
- return globalVariant == Dense ? 8 : 12;
-}
-
-int QQuickMaterialStyle::menuItemHeight() const
-{
- // https://material.io/guidelines/components/menus.html#menus-simple-menus
- return globalVariant == Dense ? 32 : 48;
-}
-
-int QQuickMaterialStyle::menuItemVerticalPadding() const
-{
- return globalVariant == Dense ? 8 : 12;
-}
-
-int QQuickMaterialStyle::switchDelegateVerticalPadding() const
-{
- // SwitchDelegate's indicator is much larger than the others due to the shadow,
- // so we must reduce its padding to ensure its implicitHeight is 40 when dense.
- return globalVariant == Dense ? 4 : 8;
-}
-
-int QQuickMaterialStyle::tooltipHeight() const
-{
- // https://material.io/guidelines/components/tooltips.html
- return globalVariant == Dense ? 22 : 32;
-}
-
-QQuickMaterialStyle::Variant QQuickMaterialStyle::variant()
-{
- return globalVariant;
-}
-
-template <typename Enum>
-static Enum toEnumValue(const QByteArray &value, bool *ok)
-{
- QMetaEnum enumeration = QMetaEnum::fromType<Enum>();
- return static_cast<Enum>(enumeration.keyToValue(value, ok));
-}
-
-static QByteArray resolveSetting(const QByteArray &env, const QSharedPointer<QSettings> &settings, const QString &name)
-{
- QByteArray value = qgetenv(env);
-#if QT_CONFIG(settings)
- if (value.isNull() && !settings.isNull())
- value = settings->value(name).toByteArray();
-#endif
- return value;
-}
-
-void QQuickMaterialStyle::initGlobals()
-{
- QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(QStringLiteral("Material"));
-
- bool ok = false;
- QByteArray themeValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_THEME", settings, QStringLiteral("Theme"));
- Theme themeEnum = toEnumValue<Theme>(themeValue, &ok);
- if (ok)
- globalTheme = effectiveTheme(themeEnum);
- else if (!themeValue.isEmpty())
- qWarning().nospace().noquote() << "Material: unknown theme value: " << themeValue;
-
- QByteArray variantValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_VARIANT", settings, QStringLiteral("Variant"));
- Variant variantEnum = toEnumValue<Variant>(variantValue, &ok);
- if (ok)
- globalVariant = variantEnum;
- else if (!variantValue.isEmpty())
- qWarning().nospace().noquote() << "Material: unknown variant value: " << variantValue;
-
- QByteArray primaryValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_PRIMARY", settings, QStringLiteral("Primary"));
- Color primaryEnum = toEnumValue<Color>(primaryValue, &ok);
- if (ok) {
- globalPrimaryCustom = false;
- globalPrimary = primaryEnum;
- } else {
- QColor color(primaryValue.constData());
- if (color.isValid()) {
- globalPrimaryCustom = true;
- globalPrimary = color.rgba();
- } else if (!primaryValue.isEmpty()) {
- qWarning().nospace().noquote() << "Material: unknown primary value: " << primaryValue;
- }
- }
-
- QByteArray accentValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_ACCENT", settings, QStringLiteral("Accent"));
- Color accentEnum = toEnumValue<Color>(accentValue, &ok);
- if (ok) {
- globalAccentCustom = false;
- globalAccent = accentEnum;
- } else if (!accentValue.isEmpty()) {
- QColor color(accentValue.constData());
- if (color.isValid()) {
- globalAccentCustom = true;
- globalAccent = color.rgba();
- } else {
- qWarning().nospace().noquote() << "Material: unknown accent value: " << accentValue;
- }
- }
-
- QByteArray foregroundValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_FOREGROUND", settings, QStringLiteral("Foreground"));
- Color foregroundEnum = toEnumValue<Color>(foregroundValue, &ok);
- if (ok) {
- globalForegroundCustom = false;
- globalForeground = foregroundEnum;
- hasGlobalForeground = true;
- } else if (!foregroundValue.isEmpty()) {
- QColor color(foregroundValue.constData());
- if (color.isValid()) {
- globalForegroundCustom = true;
- globalForeground = color.rgba();
- hasGlobalForeground = true;
- } else {
- qWarning().nospace().noquote() << "Material: unknown foreground value: " << foregroundValue;
- }
- }
-
- QByteArray backgroundValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_BACKGROUND", settings, QStringLiteral("Background"));
- Color backgroundEnum = toEnumValue<Color>(backgroundValue, &ok);
- if (ok) {
- globalBackgroundCustom = false;
- globalBackground = backgroundEnum;
- hasGlobalBackground = true;
- } else if (!backgroundValue.isEmpty()) {
- QColor color(backgroundValue.constData());
- if (color.isValid()) {
- globalBackgroundCustom = true;
- globalBackground = color.rgba();
- hasGlobalBackground = true;
- } else {
- qWarning().nospace().noquote() << "Material: unknown background value: " << backgroundValue;
- }
- }
-}
-
-void QQuickMaterialStyle::attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent)
-{
- Q_UNUSED(oldParent);
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(newParent);
- if (material) {
- inheritPrimary(material->m_primary, material->m_customPrimary);
- inheritAccent(material->m_accent, material->m_customAccent);
- inheritForeground(material->m_foreground, material->m_customForeground, material->m_hasForeground);
- inheritBackground(material->m_background, material->m_customBackground, material->m_hasBackground);
- inheritTheme(material->theme());
- }
-}
-
-bool QQuickMaterialStyle::variantToRgba(const QVariant &var, const char *name, QRgb *rgba, bool *custom) const
-{
- *custom = false;
- if (var.metaType().id() == QMetaType::Int) {
- int val = var.toInt();
- if (val > BlueGrey) {
- qmlWarning(parent()) << "unknown Material." << name << " value: " << val;
- return false;
- }
- *rgba = val;
- } else {
- int val = QMetaEnum::fromType<Color>().keyToValue(var.toByteArray());
- if (val != -1) {
- *rgba = val;
- } else {
- QColor color(var.toString());
- if (!color.isValid()) {
- qmlWarning(parent()) << "unknown Material." << name << " value: " << var.toString();
- return false;
- }
- *custom = true;
- *rgba = color.rgba();
- }
- }
- return true;
-}
-
-QT_END_NAMESPACE