diff options
Diffstat (limited to 'src/quick/items/qquickpathview.cpp')
-rw-r--r-- | src/quick/items/qquickpathview.cpp | 86 |
1 files changed, 40 insertions, 46 deletions
diff --git a/src/quick/items/qquickpathview.cpp b/src/quick/items/qquickpathview.cpp index e54ee66fe5..11881ae0ab 100644 --- a/src/quick/items/qquickpathview.cpp +++ b/src/quick/items/qquickpathview.cpp @@ -63,13 +63,7 @@ Q_DECLARE_LOGGING_CATEGORY(lcItemViewDelegateLifecycle) const qreal MinimumFlickVelocity = 75.0; -inline qreal qmlMod(qreal x, qreal y) -{ - using std::fmod; - return fmod(x, y); -} - -static QQmlOpenMetaObjectType *qPathViewAttachedType = 0; +static QQmlOpenMetaObjectType *qPathViewAttachedType = nullptr; QQuickPathViewAttached::QQuickPathViewAttached(QObject *parent) : QObject(parent), m_percent(-1), m_view(0), m_onPath(false), m_isCurrent(false) @@ -96,7 +90,7 @@ void QQuickPathViewAttached::setValue(const QByteArray &name, const QVariant &va } QQuickPathViewPrivate::QQuickPathViewPrivate() - : path(0), currentIndex(0), currentItemOffset(0.0), startPc(0) + : path(nullptr), currentIndex(0), currentItemOffset(0.0), startPc(0) , offset(0.0), offsetAdj(0.0), mappedRange(1.0), mappedCache(0.0) , stealMouse(false), ownModel(false), interactive(true), haveHighlightRange(true) , autoHighlight(true), highlightUp(false), layoutScheduled(false) @@ -106,7 +100,7 @@ QQuickPathViewPrivate::QQuickPathViewPrivate() , moveOffset(this, &QQuickPathViewPrivate::setAdjustedOffset), flickDuration(0) , pathItems(-1), requestedIndex(-1), cacheSize(0), requestedZ(0) , moveReason(Other), movementDirection(QQuickPathView::Shortest), moveDirection(QQuickPathView::Shortest) - , attType(0), highlightComponent(0), highlightItem(0) + , attType(nullptr), highlightComponent(nullptr), highlightItem(nullptr) , moveHighlight(this, &QQuickPathViewPrivate::setHighlightPosition) , highlightPosition(0) , highlightRangeStart(0), highlightRangeEnd(0) @@ -163,7 +157,7 @@ void QQuickPathView::createdItem(int index, QObject *object) if (d->requestedIndex != index) { qPathViewAttachedType = d->attachedType(); QQuickPathViewAttached *att = static_cast<QQuickPathViewAttached *>(qmlAttachedPropertiesObject<QQuickPathView>(item)); - qPathViewAttachedType = 0; + qPathViewAttachedType = nullptr; if (att) { att->m_view = this; att->setOnPath(false); @@ -186,7 +180,7 @@ void QQuickPathView::initItem(int index, QObject *object) item->setParentItem(this); qPathViewAttachedType = d->attachedType(); QQuickPathViewAttached *att = static_cast<QQuickPathViewAttached *>(qmlAttachedPropertiesObject<QQuickPathView>(item)); - qPathViewAttachedType = 0; + qPathViewAttachedType = nullptr; if (att) { att->m_view = this; qreal percent = d->positionOfIndex(index); @@ -215,7 +209,7 @@ void QQuickPathViewPrivate::releaseItem(QQuickItem *item) att->setOnPath(false); } else if (flags & QQmlInstanceModel::Destroyed) { // but we still reference it - item->setParentItem(0); + item->setParentItem(nullptr); } } @@ -244,7 +238,7 @@ void QQuickPathViewPrivate::clear() { if (currentItem) { releaseItem(currentItem); - currentItem = 0; + currentItem = nullptr; } for (QQuickItem *p : qAsConst(items)) releaseItem(p); @@ -280,13 +274,13 @@ qreal QQuickPathViewPrivate::positionOfIndex(qreal index) const || snapMode != QQuickPathView::NoSnap)) start = highlightRangeStart; qreal globalPos = index + offset; - globalPos = qmlMod(globalPos, qreal(modelCount)) / modelCount; + globalPos = std::fmod(globalPos, qreal(modelCount)) / modelCount; if (pathItems != -1 && pathItems < modelCount) { globalPos += start / mappedRange; - globalPos = qmlMod(globalPos, 1.0); + globalPos = std::fmod(globalPos, qreal(1.0)); pos = globalPos * mappedRange; } else { - pos = qmlMod(globalPos + start, 1.0); + pos = std::fmod(globalPos + start, qreal(1.0)); } } @@ -315,13 +309,13 @@ void QQuickPathViewPrivate::createHighlight() bool changed = false; if (highlightItem) { - highlightItem->setParentItem(0); + highlightItem->setParentItem(nullptr); highlightItem->deleteLater(); - highlightItem = 0; + highlightItem = nullptr; changed = true; } - QQuickItem *item = 0; + QQuickItem *item = nullptr; if (highlightComponent) { QQmlContext *creationContext = highlightComponent->creationContext(); QQmlContext *highlightContext = new QQmlContext( @@ -397,7 +391,7 @@ void QQuickPathViewPrivate::setHighlightPosition(qreal pos) qreal range = qreal(modelCount); // calc normalized position of highlight relative to offset - qreal relativeHighlight = qmlMod(pos + offset, range) / range; + qreal relativeHighlight = std::fmod(pos + offset, range) / range; if (!highlightUp && relativeHighlight > end / mappedRange) { qreal diff = 1.0 - relativeHighlight; @@ -636,7 +630,7 @@ void QQuickPathView::setModel(const QVariant &m) d->modelVariant = model; QObject *object = qvariant_cast<QObject*>(model); - QQmlInstanceModel *vim = 0; + QQmlInstanceModel *vim = nullptr; if (object && (vim = qobject_cast<QQmlInstanceModel *>(object))) { if (d->ownModel) { delete d->model; @@ -716,7 +710,7 @@ void QQuickPathView::setPath(QQuickPath *path) d->clear(); if (d->attType) { d->attType->release(); - d->attType = 0; + d->attType = nullptr; } d->regenerate(); } @@ -755,7 +749,7 @@ void QQuickPathView::setCurrentIndex(int idx) } int oldCurrentIdx = d->currentIndex; QQuickItem *oldCurrentItem = d->currentItem; - d->currentItem = 0; + d->currentItem = nullptr; d->moveReason = QQuickPathViewPrivate::SetIndex; d->currentIndex = idx; if (d->modelCount) { @@ -836,7 +830,7 @@ void QQuickPathViewPrivate::setOffset(qreal o) if (offset != o) { if (isValid() && q->isComponentComplete()) { qreal oldOffset = offset; - offset = qmlMod(o, qreal(modelCount)); + offset = std::fmod(o, qreal(modelCount)); if (offset < 0) offset += qreal(modelCount); qCDebug(lcItemViewDelegateLifecycle) << o << "was" << oldOffset << "now" << offset; @@ -902,7 +896,7 @@ void QQuickPathView::setHighlight(QQmlComponent *highlight) \sa highlight */ -QQuickItem *QQuickPathView::highlightItem() +QQuickItem *QQuickPathView::highlightItem() const { Q_D(const QQuickPathView); return d->highlightItem; @@ -1237,7 +1231,7 @@ QQmlComponent *QQuickPathView::delegate() const return dataModel->delegate(); } - return 0; + return nullptr; } void QQuickPathView::setDelegate(QQmlComponent *delegate) @@ -1468,7 +1462,7 @@ void QQuickPathView::positionViewAtIndex(int index, int mode) // Small offset since the last point coincides with the first and // this the only "end" position that gives the expected visual result. qreal adj = sizeof(qreal) == sizeof(float) ? 0.00001f : 0.000000000001; - endOffset = qmlMod(beginOffset + count, d->modelCount) - adj; + endOffset = std::fmod(beginOffset + count, qreal(d->modelCount)) - adj; } qreal offset = d->offset; switch (mode) { @@ -1489,8 +1483,8 @@ void QQuickPathView::positionViewAtIndex(int index, int mode) case Contain: if ((beginOffset < endOffset && (d->offset < beginOffset || d->offset > endOffset)) || (d->offset < beginOffset && d->offset > endOffset)) { - qreal diff1 = qmlMod(beginOffset - d->offset + d->modelCount, d->modelCount); - qreal diff2 = qmlMod(d->offset - endOffset + d->modelCount, d->modelCount); + qreal diff1 = std::fmod(beginOffset - d->offset + d->modelCount, qreal(d->modelCount)); + qreal diff2 = std::fmod(d->offset - endOffset + d->modelCount, qreal(d->modelCount)); if (diff1 < diff2) offset = beginOffset; else @@ -1518,7 +1512,7 @@ int QQuickPathView::indexAt(qreal x, qreal y) const { Q_D(const QQuickPathView); QQuickItem *item = itemAt(x, y); - return item ? d->model->indexOf(item, 0) : -1; + return item ? d->model->indexOf(item, nullptr) : -1; } /*! @@ -1533,7 +1527,7 @@ QQuickItem *QQuickPathView::itemAt(qreal x, qreal y) const { Q_D(const QQuickPathView); if (!d->isValid()) - return 0; + return nullptr; for (QQuickItem *item : d->items) { QPointF p = item->mapFromItem(this, QPointF(x, y)); @@ -1541,7 +1535,7 @@ QQuickItem *QQuickPathView::itemAt(qreal x, qreal y) const return item; } - return 0; + return nullptr; } QPointF QQuickPathViewPrivate::pointNear(const QPointF &point, qreal *nearPercent) const @@ -1606,7 +1600,7 @@ qreal QQuickPathViewPrivate::calcVelocity() const return velocity; } -qint64 QQuickPathViewPrivate::computeCurrentTime(QInputEvent *event) +qint64 QQuickPathViewPrivate::computeCurrentTime(QInputEvent *event) const { if (0 != event->timestamp()) return event->timestamp(); @@ -1810,7 +1804,7 @@ bool QQuickPathView::sendMouseEvent(QMouseEvent *event) QPointF localPos = mapFromScene(event->windowPos()); QQuickWindow *c = window(); - QQuickItem *grabber = c ? c->mouseGrabberItem() : 0; + QQuickItem *grabber = c ? c->mouseGrabberItem() : nullptr; if (grabber == this && d->stealMouse) { // we are already the grabber and we do want the mouse event to ourselves. return true; @@ -1836,7 +1830,7 @@ bool QQuickPathView::sendMouseEvent(QMouseEvent *event) default: break; } - grabber = c ? c->mouseGrabberItem() : 0; + grabber = c ? c->mouseGrabberItem() : nullptr; if ((grabber && stealThisEvent && !grabber->keepMouseGrab() && grabber != this) || grabberDisabled) { grabMouse(); } @@ -1915,7 +1909,7 @@ void QQuickPathView::componentComplete() if (d->model) { d->modelCount = d->model->count(); if (d->modelCount && d->currentIndex != 0) // an initial value has been provided for currentIndex - d->offset = qmlMod(d->modelCount - currentIndexRemainder(d->currentIndex, d->modelCount), d->modelCount); + d->offset = std::fmod(qreal(d->modelCount - currentIndexRemainder(d->currentIndex, d->modelCount)), qreal(d->modelCount)); } d->createHighlight(); @@ -1951,7 +1945,7 @@ void QQuickPathView::refill() QList<QQuickItem*>::iterator it = d->items.begin(); while (it != d->items.end()) { QQuickItem *item = *it; - int idx = d->model->indexOf(item, 0); + int idx = d->model->indexOf(item, nullptr); qreal pos = d->positionOfIndex(idx); if (lcItemViewDelegateLifecycle().isDebugEnabled()) { QQuickText *text = qmlobject_cast<QQuickText*>(item); @@ -1996,7 +1990,7 @@ void QQuickPathView::refill() startPos = 2.0; for (QQuickItem * item : qAsConst(d->items)) { - int idx = d->model->indexOf(item, 0); + int idx = d->model->indexOf(item, nullptr); qreal curPos = d->positionOfIndex(idx); if (curPos > endPos) { endPos = curPos; @@ -2198,7 +2192,7 @@ void QQuickPathView::modelUpdated(const QQmlChangeSet &changeSet, bool reset) if (QQuickPathViewAttached *att = d->attached(d->currentItem)) att->setIsCurrentItem(true); d->releaseItem(d->currentItem); - d->currentItem = 0; + d->currentItem = nullptr; } d->currentIndex = qMin(r.index, d->modelCount - r.count - 1); currentChanged = true; @@ -2231,7 +2225,7 @@ void QQuickPathView::modelUpdated(const QQmlChangeSet &changeSet, bool reset) d->modelCount += i.count; } - d->offset = qmlMod(d->offset, d->modelCount); + d->offset = std::fmod(d->offset, qreal(d->modelCount)); if (d->offset < 0) d->offset += d->modelCount; if (d->currentIndex == -1) @@ -2249,7 +2243,7 @@ void QQuickPathView::modelUpdated(const QQmlChangeSet &changeSet, bool reset) d->tl.reset(d->moveOffset); } else { if (!d->flicking && !d->moving && d->haveHighlightRange && d->highlightRangeMode == QQuickPathView::StrictlyEnforceRange) { - d->offset = qmlMod(d->modelCount - d->currentIndex, d->modelCount); + d->offset = std::fmod(qreal(d->modelCount - d->currentIndex), qreal(d->modelCount)); changedOffset = true; } d->updateMappedRange(); @@ -2295,10 +2289,10 @@ int QQuickPathViewPrivate::calcCurrentIndex() { int current = 0; if (modelCount && model && items.count()) { - offset = qmlMod(offset, modelCount); + offset = std::fmod(offset, qreal(modelCount)); if (offset < 0) offset += modelCount; - current = qRound(qAbs(qmlMod(modelCount - offset, modelCount))); + current = qRound(qAbs(std::fmod(modelCount - offset, qreal(modelCount)))); current = current % modelCount; } @@ -2312,7 +2306,7 @@ void QQuickPathViewPrivate::createCurrentItem() bool inItems = false; for (QQuickItem *item : qAsConst(items)) { - if (model->indexOf(item, 0) == currentIndex) { + if (model->indexOf(item, nullptr) == currentIndex) { inItems = true; break; } @@ -2350,7 +2344,7 @@ void QQuickPathViewPrivate::updateCurrent() } int oldCurrentIndex = currentIndex; currentIndex = idx; - currentItem = 0; + currentItem = nullptr; createCurrentItem(); if (oldCurrentIndex != currentIndex) emit q->currentIndexChanged(); @@ -2383,7 +2377,7 @@ void QQuickPathViewPrivate::snapToIndex(int index, MovementReason reason) if (!model || modelCount <= 0) return; - qreal targetOffset = qmlMod(modelCount - index, modelCount); + qreal targetOffset = std::fmod(qreal(modelCount - index), qreal(modelCount)); if (offset == targetOffset) return; |