61 QSGTransformNode *transformNode =
static_cast<QSGTransformNode*>(firstChild());
62 for (
int i = 0; i <
Blocks; ++i) {
63 Q_ASSERT(transformNode->type() == QSGNode::TransformNodeType);
66 const qreal restX = blockRestX(i, m_pixelsPerSecond);
67 const qreal timeInSeconds = time / 1000.0;
71 QEasingCurve easingCurve(QEasingCurve::InQuad);
72 const qreal easedCompletion = easingCurve.valueForProgress(time / qreal(
SecondPhaseStart));
73 const qreal distance = m_pixelsPerSecond * (easedCompletion * (SecondPhaseStart / 1000.0));
74 const qreal position = blockStartX(i) + distance;
75 const qreal destination = restX;
76 m.translate(qMin(position, destination), 0);
79 m.translate(restX, 0);
82 const int thirdPhaseSubKickoff = (BlockMovingSpacing / m_pixelsPerSecond) * 1000;
89 const qreal timeSinceSecondPhase = timeInSeconds - (
ThirdPhaseStart / 1000.0);
100 const qreal timeSinceOurKickoff = timeSinceSecondPhase - (thirdPhaseSubKickoff / 1000.0 * i);
101 const qreal position = restX + (m_pixelsPerSecond * (timeSinceOurKickoff));
102 const qreal destination = blockEndX(i, m_pixelsPerSecond);
103 m.translate(qMin(position, destination), 0);
106 transformNode->setMatrix(m);
108 transformNode =
static_cast<QSGTransformNode*>(transformNode->nextSibling());
114 QQuickBasicProgressBar *bar =
static_cast<QQuickBasicProgressBar *>(item);
115 if (m_indeterminate != bar->isIndeterminate()) {
116 m_indeterminate = bar->isIndeterminate();
122 m_pixelsPerSecond = item->width();
124 QQuickItemPrivate *d = QQuickItemPrivate::get(item);
127 m.translate(0, (item->height() - item->implicitHeight()) / 2);
130 if (m_indeterminate) {
131 if (childCount() !=
Blocks) {
133 removeAllChildNodes();
136 QSGTransformNode *transformNode =
static_cast<QSGTransformNode*>(firstChild());
137 for (
int i = 0; i <
Blocks; ++i) {
138 if (!transformNode) {
139 transformNode =
new QSGTransformNode;
140 appendChildNode(transformNode);
143 QSGInternalRectangleNode *rectNode =
static_cast<QSGInternalRectangleNode*>(transformNode->firstChild());
145 rectNode = d->sceneGraphContext()->createInternalRectangleNode();
146 transformNode->appendChildNode(rectNode);
150 m.translate(blockStartX(i), 0);
151 transformNode->setMatrix(m);
155 rectNode->setColor(bar->color());
156 rectNode->setRect(QRectF(QPointF(0, 0), QSizeF(
BlockWidth, item->implicitHeight())));
159 transformNode =
static_cast<QSGTransformNode *>(transformNode->nextSibling());
162 if (childCount() > 1) {
164 removeAllChildNodes();
167 QSGInternalRectangleNode *rectNode =
static_cast<QSGInternalRectangleNode *>(firstChild());
169 rectNode = d->sceneGraphContext()->createInternalRectangleNode();
170 appendChildNode(rectNode);
175 rectNode->setColor(bar->color());
176 rectNode->setRect(QRectF(QPointF(0, 0), QSizeF(bar->progress() * item->width(), item->implicitHeight())));
230void QQuickBasicProgressBar::itemChange(QQuickItem::ItemChange change,
const QQuickItem::ItemChangeData &data)
232 QQuickItem::itemChange(change, data);
233 if (change == ItemVisibleHasChanged)