Port QMovie to the new property system
Task-number: QTBUG-85520 Task-number: QTBUG-85521 Change-Id: Ib936020260cf01a5221b63fb1eb0ccb23f5553a3 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>bb10
parent
67ced4da5a
commit
3a5a404a53
|
|
@ -186,6 +186,7 @@
|
|||
#include "qbuffer.h"
|
||||
#include "qdir.h"
|
||||
#include "private/qobject_p.h"
|
||||
#include "private/qproperty_p.h"
|
||||
|
||||
#define QMOVIE_INVALID_DELAY -1
|
||||
|
||||
|
|
@ -248,7 +249,10 @@ public:
|
|||
void _q_loadNextFrame(bool starting);
|
||||
|
||||
QImageReader *reader = nullptr;
|
||||
int speed = 100;
|
||||
|
||||
void setSpeed(int percentSpeed) { q_func()->setSpeed(percentSpeed); }
|
||||
Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS(QMoviePrivate, int, speed, &QMoviePrivate::setSpeed, 100)
|
||||
|
||||
QMovie::MovieState movieState = QMovie::NotRunning;
|
||||
QRect frameRect;
|
||||
QPixmap currentPixmap;
|
||||
|
|
@ -258,7 +262,8 @@ public:
|
|||
int nextDelay = 0;
|
||||
int playCounter = -1;
|
||||
qint64 initialDevicePos = 0;
|
||||
QMovie::CacheMode cacheMode = QMovie::CacheNone;
|
||||
Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(QMoviePrivate, QMovie::CacheMode, cacheMode,
|
||||
QMovie::CacheNone)
|
||||
bool haveReadAll = false;
|
||||
bool isFirstIteration = true;
|
||||
QMap<int, QFrameInfo> frameMap;
|
||||
|
|
@ -933,6 +938,12 @@ int QMovie::speed() const
|
|||
return d->speed;
|
||||
}
|
||||
|
||||
QBindable<int> QMovie::bindableSpeed()
|
||||
{
|
||||
Q_D(QMovie);
|
||||
return &d->speed;
|
||||
}
|
||||
|
||||
/*!
|
||||
Starts the movie. QMovie will enter \l Running state, and start emitting
|
||||
updated() and resized() as the movie progresses.
|
||||
|
|
@ -1055,6 +1066,12 @@ void QMovie::setCacheMode(CacheMode cacheMode)
|
|||
d->cacheMode = cacheMode;
|
||||
}
|
||||
|
||||
QBindable<QMovie::CacheMode> QMovie::bindableCacheMode()
|
||||
{
|
||||
Q_D(QMovie);
|
||||
return &d->cacheMode;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#include "moc_qmovie.cpp"
|
||||
|
|
|
|||
|
|
@ -64,8 +64,8 @@ class Q_GUI_EXPORT QMovie : public QObject
|
|||
{
|
||||
Q_OBJECT
|
||||
Q_DECLARE_PRIVATE(QMovie)
|
||||
Q_PROPERTY(int speed READ speed WRITE setSpeed)
|
||||
Q_PROPERTY(CacheMode cacheMode READ cacheMode WRITE setCacheMode)
|
||||
Q_PROPERTY(int speed READ speed WRITE setSpeed BINDABLE bindableSpeed)
|
||||
Q_PROPERTY(CacheMode cacheMode READ cacheMode WRITE setCacheMode BINDABLE bindableCacheMode)
|
||||
public:
|
||||
enum MovieState {
|
||||
NotRunning,
|
||||
|
|
@ -115,12 +115,14 @@ public:
|
|||
int currentFrameNumber() const;
|
||||
|
||||
int speed() const;
|
||||
QBindable<int> bindableSpeed();
|
||||
|
||||
QSize scaledSize();
|
||||
void setScaledSize(const QSize &size);
|
||||
|
||||
CacheMode cacheMode() const;
|
||||
void setCacheMode(CacheMode mode);
|
||||
QBindable<CacheMode> bindableCacheMode();
|
||||
|
||||
Q_SIGNALS:
|
||||
void started();
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ private slots:
|
|||
void infiniteLoop();
|
||||
#endif
|
||||
void emptyMovie();
|
||||
void bindings();
|
||||
};
|
||||
|
||||
// Testing get/set functions
|
||||
|
|
@ -230,5 +231,37 @@ void tst_QMovie::emptyMovie()
|
|||
QCOMPARE(movie.currentFrameNumber(), -1);
|
||||
}
|
||||
|
||||
void tst_QMovie::bindings()
|
||||
{
|
||||
QMovie movie;
|
||||
|
||||
// speed property
|
||||
QCOMPARE(movie.speed(), 100);
|
||||
QProperty<int> speed;
|
||||
movie.bindableSpeed().setBinding(Qt::makePropertyBinding(speed));
|
||||
speed = 50;
|
||||
QCOMPARE(movie.speed(), 50);
|
||||
|
||||
QProperty<int> speedObserver;
|
||||
speedObserver.setBinding([&] { return movie.speed(); });
|
||||
movie.setSpeed(75);
|
||||
QCOMPARE(speedObserver, 75);
|
||||
|
||||
// chacheMode property
|
||||
QCOMPARE(movie.cacheMode(), QMovie::CacheNone);
|
||||
QProperty<QMovie::CacheMode> cacheMode;
|
||||
movie.bindableCacheMode().setBinding(Qt::makePropertyBinding(cacheMode));
|
||||
cacheMode = QMovie::CacheAll;
|
||||
QCOMPARE(movie.cacheMode(), QMovie::CacheAll);
|
||||
|
||||
movie.setCacheMode(QMovie::CacheNone);
|
||||
|
||||
QProperty<QMovie::CacheMode> cacheModeObserver;
|
||||
QCOMPARE(cacheModeObserver, QMovie::CacheNone);
|
||||
cacheModeObserver.setBinding([&] { return movie.cacheMode(); });
|
||||
movie.setCacheMode(QMovie::CacheAll);
|
||||
QCOMPARE(cacheModeObserver, QMovie::CacheAll);
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QMovie)
|
||||
#include "tst_qmovie.moc"
|
||||
|
|
|
|||
Loading…
Reference in New Issue