diff options
Diffstat (limited to 'src/imports/controls/qquickdefaultbusyindicator.cpp')
-rw-r--r-- | src/imports/controls/qquickdefaultbusyindicator.cpp | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/src/imports/controls/qquickdefaultbusyindicator.cpp b/src/imports/controls/qquickdefaultbusyindicator.cpp index 315b2b8b..138e94e8 100644 --- a/src/imports/controls/qquickdefaultbusyindicator.cpp +++ b/src/imports/controls/qquickdefaultbusyindicator.cpp @@ -45,7 +45,6 @@ QT_BEGIN_NAMESPACE static const int CircleCount = 10; static const int TotalDuration = 100 * CircleCount * 2; static const QRgb TransparentColor = 0x00000000; -static const QRgb FillColor = 0xFF353637; static QPointF moveCircle(const QPointF &pos, qreal rotation, qreal distance) { @@ -59,6 +58,10 @@ public: void updateCurrentTime(int time) override; void sync(QQuickItem *item) override; + +private: + QColor m_pen; + QColor m_fill; }; QQuickDefaultBusyIndicatorNode::QQuickDefaultBusyIndicatorNode(QQuickDefaultBusyIndicator *item) @@ -92,8 +95,9 @@ void QQuickDefaultBusyIndicatorNode::updateCurrentTime(int time) Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); const bool fill = (firstPhaseProgress > qreal(i) / CircleCount) || (secondPhaseProgress > 0 && secondPhaseProgress < qreal(i) / CircleCount); - rectNode->setColor(QColor::fromRgba(fill ? FillColor : TransparentColor)); - rectNode->setPenWidth(fill ? 0 : 1); + rectNode->setColor(fill ? m_fill : QColor::fromRgba(TransparentColor)); + rectNode->setPenColor(m_pen); + rectNode->setPenWidth(1); rectNode->update(); transformNode = static_cast<QSGTransformNode*>(transformNode->nextSibling()); @@ -109,6 +113,9 @@ void QQuickDefaultBusyIndicatorNode::sync(QQuickItem *item) const qreal dy = (h - sz) / 2; const int circleRadius = sz / 12; + m_pen = static_cast<QQuickDefaultBusyIndicator *>(item)->pen(); + m_fill = static_cast<QQuickDefaultBusyIndicator *>(item)->fill(); + QSGTransformNode *transformNode = static_cast<QSGTransformNode *>(firstChild()); for (int i = 0; i < CircleCount; ++i) { Q_ASSERT(transformNode->type() == QSGNode::TransformNodeType); @@ -136,6 +143,34 @@ QQuickDefaultBusyIndicator::QQuickDefaultBusyIndicator(QQuickItem *parent) : setFlag(ItemHasContents); } +QColor QQuickDefaultBusyIndicator::pen() const +{ + return m_pen; +} + +void QQuickDefaultBusyIndicator::setPen(const QColor &pen) +{ + if (pen == m_pen) + return; + + m_pen = pen; + update(); +} + +QColor QQuickDefaultBusyIndicator::fill() const +{ + return m_fill; +} + +void QQuickDefaultBusyIndicator::setFill(const QColor &fill) +{ + if (fill == m_fill) + return; + + m_fill = fill; + update(); +} + int QQuickDefaultBusyIndicator::elapsed() const { return m_elapsed; |