Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qscrollerproperties.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include <QPointer>
5#include <QObject>
6#include <QtCore/qmath.h>
7
9#include "private/qscrollerproperties_p.h"
10
12
14 QScrollerProperties__OvershootPolicy)
16 QScrollerProperties__FrameRates)
17
18static QScrollerPropertiesPrivate *userDefaults = nullptr;
20
22{
23 if (!systemDefaults) {
25 spp.mousePressEventDelay = qreal(0.25);
26 spp.dragStartDistance = qreal(5.0 / 1000);
27 spp.dragVelocitySmoothingFactor = qreal(0.8);
28 spp.axisLockThreshold = qreal(0);
29 spp.scrollingCurve.setType(QEasingCurve::OutQuad);
30 spp.decelerationFactor = qreal(0.125);
31 spp.minimumVelocity = qreal(50.0 / 1000);
32 spp.maximumVelocity = qreal(500.0 / 1000);
33 spp.maximumClickThroughVelocity = qreal(66.5 / 1000);
34 spp.acceleratingFlickMaximumTime = qreal(1.25);
35 spp.acceleratingFlickSpeedupFactor = qreal(3.0);
36 spp.snapPositionRatio = qreal(0.5);
37 spp.snapTime = qreal(0.3);
38 spp.overshootDragResistanceFactor = qreal(0.5);
39 spp.overshootDragDistanceFactor = qreal(1);
40 spp.overshootScrollDistanceFactor = qreal(0.5);
41 spp.overshootScrollTime = qreal(0.7);
44 spp.frameRate = QScrollerProperties::Standard;
45
47 }
48 return new QScrollerPropertiesPrivate(userDefaults ? *userDefaults : *systemDefaults);
49}
50
76
84
89{
90 *d.data() = *sp.d.data();
91 return *this;
92}
93
100
105{
106 return *d.data() == *sp.d.data();
107}
108
113{
114 return !(*d.data() == *sp.d.data());
115}
116
118{
119 bool same = true;
120 same &= (mousePressEventDelay == p.mousePressEventDelay);
121 same &= (dragStartDistance == p.dragStartDistance);
122 same &= (dragVelocitySmoothingFactor == p.dragVelocitySmoothingFactor);
123 same &= (axisLockThreshold == p.axisLockThreshold);
124 same &= (scrollingCurve == p.scrollingCurve);
125 same &= (decelerationFactor == p.decelerationFactor);
126 same &= (minimumVelocity == p.minimumVelocity);
127 same &= (maximumVelocity == p.maximumVelocity);
128 same &= (maximumClickThroughVelocity == p.maximumClickThroughVelocity);
129 same &= (acceleratingFlickMaximumTime == p.acceleratingFlickMaximumTime);
130 same &= (acceleratingFlickSpeedupFactor == p.acceleratingFlickSpeedupFactor);
131 same &= (snapPositionRatio == p.snapPositionRatio);
132 same &= (snapTime == p.snapTime);
133 same &= (overshootDragResistanceFactor == p.overshootDragResistanceFactor);
134 same &= (overshootDragDistanceFactor == p.overshootDragDistanceFactor);
135 same &= (overshootScrollDistanceFactor == p.overshootScrollDistanceFactor);
136 same &= (overshootScrollTime == p.overshootScrollTime);
137 same &= (hOvershootPolicy == p.hOvershootPolicy);
138 same &= (vOvershootPolicy == p.vOvershootPolicy);
139 same &= (frameRate == p.frameRate);
140 return same;
141}
142
156{
157 if (!userDefaults)
158 userDefaults = new QScrollerPropertiesPrivate(*sp.d);
159 else
160 *userDefaults = *sp.d;
161}
162
170{
171 delete userDefaults;
172 userDefaults = nullptr;
173}
174
181{
182 switch (metric) {
187 case ScrollingCurve: return d->scrollingCurve;
189 case MinimumVelocity: return d->minimumVelocity;
190 case MaximumVelocity: return d->maximumVelocity;
195 case SnapTime: return d->snapTime;
203 case ScrollMetricCount: break;
204 }
205 return QVariant();
206}
207
214{
215 switch (metric) {
216 case MousePressEventDelay: d->mousePressEventDelay = value.toReal(); break;
217 case DragStartDistance: d->dragStartDistance = value.toReal(); break;
219 case AxisLockThreshold: d->axisLockThreshold = qBound(qreal(0), value.toReal(), qreal(1)); break;
220 case ScrollingCurve: d->scrollingCurve = value.toEasingCurve(); break;
221 case DecelerationFactor: d->decelerationFactor = value.toReal(); break;
222 case MinimumVelocity: d->minimumVelocity = value.toReal(); break;
223 case MaximumVelocity: d->maximumVelocity = value.toReal(); break;
227 case SnapPositionRatio: d->snapPositionRatio = qBound(qreal(0), value.toReal(), qreal(1)); break;
228 case SnapTime: d->snapTime = value.toReal(); break;
232 case OvershootScrollTime: d->overshootScrollTime = value.toReal(); break;
233 case HorizontalOvershootPolicy: d->hOvershootPolicy = qvariant_cast<QScrollerProperties::OvershootPolicy>(value); break;
234 case VerticalOvershootPolicy: d->vOvershootPolicy = qvariant_cast<QScrollerProperties::OvershootPolicy>(value); break;
235 case FrameRate: d->frameRate = qvariant_cast<QScrollerProperties::FrameRates>(value); break;
236 case ScrollMetricCount: break;
237 }
238}
239
T * data() const noexcept
Returns the value of the pointer referenced by this object.
static QScrollerPropertiesPrivate * defaults()
QScrollerProperties::OvershootPolicy hOvershootPolicy
bool operator==(const QScrollerPropertiesPrivate &) const
QScrollerProperties::OvershootPolicy vOvershootPolicy
QScrollerProperties::FrameRates frameRate
The QScrollerProperties class stores the settings for a QScroller.
virtual ~QScrollerProperties()
Destroys the scroller properties.
QVariant scrollMetric(ScrollMetric metric) const
Query the metric value of the scroller properties.
bool operator!=(const QScrollerProperties &sp) const
Returns true if these scroller properties are different from sp; otherwise returns false.
friend class QScrollerPropertiesPrivate
QScrollerProperties & operator=(const QScrollerProperties &sp)
Assigns sp to these scroller properties and returns a reference to these scroller properties.
static void unsetDefaultScrollerProperties()
Sets the scroller properties returned by the default constructor back to the platform default propert...
QScopedPointer< QScrollerPropertiesPrivate > d
bool operator==(const QScrollerProperties &sp) const
Returns true if these scroller properties are equal to sp; otherwise returns false.
FrameRates
This enum describes the available frame rates used while dragging or scrolling.
ScrollMetric
This enum contains the different scroll metric types.
QScrollerProperties()
Constructs new scroller properties.
OvershootPolicy
This enum describes the various modes of overshooting.
static void setDefaultScrollerProperties(const QScrollerProperties &sp)
Sets the scroller properties for all new QScrollerProperties objects to sp.
void setScrollMetric(ScrollMetric metric, const QVariant &value)
Set a specific value of the metric ScrollerMetric to value.
\inmodule QtCore
Definition qvariant.h:65
static auto fromValue(T &&value) noexcept(std::is_nothrow_copy_constructible_v< T > &&Private::CanUseInternalSpace< T >) -> std::enable_if_t< std::conjunction_v< std::is_copy_constructible< T >, std::is_destructible< T > >, QVariant >
Definition qvariant.h:536
Combined button and popup list for selecting options.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
#define QT_IMPL_METATYPE_EXTERN_TAGGED(TYPE, TAG)
Definition qmetatype.h:1384
constexpr const T & qBound(const T &min, const T &val, const T &max)
Definition qminmax.h:44
GLfloat GLfloat p
[1]
QT_BEGIN_NAMESPACE static QT_IMPL_METATYPE_EXTERN_TAGGED(QScrollerProperties::OvershootPolicy, QScrollerProperties__OvershootPolicy) QT_IMPL_METATYPE_EXTERN_TAGGED(QScrollerProperties QScrollerPropertiesPrivate * systemDefaults
#define sp
double qreal
Definition qtypes.h:187
QFile defaults(defaultsPath)