diff options
Diffstat (limited to 'src')
44 files changed, 206 insertions, 1078 deletions
diff --git a/src/3rdparty/phonon/mmf/abstractaudioeffect.h b/src/3rdparty/phonon/mmf/abstractaudioeffect.h index 70adcf6..8879636 100644 --- a/src/3rdparty/phonon/mmf/abstractaudioeffect.h +++ b/src/3rdparty/phonon/mmf/abstractaudioeffect.h @@ -21,7 +21,7 @@ along with this library. If not, see <http://www.gnu.org/licenses/>. #include <QScopedPointer> -#include <AudioEffectBase.h> +#include <audioeffectbase.h> #include <phonon/effectinterface.h> diff --git a/src/3rdparty/phonon/mmf/abstractmediaplayer.h b/src/3rdparty/phonon/mmf/abstractmediaplayer.h index 23a8233..7d28caf 100644 --- a/src/3rdparty/phonon/mmf/abstractmediaplayer.h +++ b/src/3rdparty/phonon/mmf/abstractmediaplayer.h @@ -71,7 +71,6 @@ protected: virtual int openFile(RFile& file) = 0; virtual int openUrl(const QString& url) = 0; virtual int bufferStatus() const = 0; - virtual void close() = 0; void updateMetaData(); virtual int numberOfMetaDataEntries() const = 0; diff --git a/src/3rdparty/phonon/mmf/abstractplayer.h b/src/3rdparty/phonon/mmf/abstractplayer.h index ab892f5..30d5243 100644 --- a/src/3rdparty/phonon/mmf/abstractplayer.h +++ b/src/3rdparty/phonon/mmf/abstractplayer.h @@ -55,6 +55,7 @@ public: AbstractPlayer(const AbstractPlayer *player); virtual void open(const Phonon::MediaSource&, RFile&) = 0; + virtual void close() = 0; // MediaObjectInterface (implemented) qint32 tickInterval() const; diff --git a/src/3rdparty/phonon/mmf/abstractvideooutput.cpp b/src/3rdparty/phonon/mmf/abstractvideooutput.cpp index a8aabfd..2d221ed 100644 --- a/src/3rdparty/phonon/mmf/abstractvideooutput.cpp +++ b/src/3rdparty/phonon/mmf/abstractvideooutput.cpp @@ -60,7 +60,8 @@ MMF::AbstractVideoOutput::AbstractVideoOutput(QWidget *parent) , m_aspectRatio(DefaultAspectRatio) , m_scaleMode(DefaultScaleMode) { - + // Ensure that this widget has a native window handle + winId(); } MMF::AbstractVideoOutput::~AbstractVideoOutput() diff --git a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp index 2e0ab1c..9ea4d18 100644 --- a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp +++ b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp @@ -66,6 +66,8 @@ void MMF::AbstractVideoPlayer::construct() createPlayer(); + m_player->RegisterForVideoLoadingNotification(*this); + TRACE_EXIT_0(); } @@ -211,7 +213,8 @@ void MMF::AbstractVideoPlayer::aspectRatioChanged() TRACE_CONTEXT(AbstractVideoPlayer::aspectRatioChanged, EVideoInternal); TRACE_ENTRY("state %d aspectRatio %d", state()); - updateScaleFactors(m_videoOutput->videoWindowSize()); + if (m_videoOutput) + updateScaleFactors(m_videoOutput->videoWindowSize()); TRACE_EXIT_0(); } @@ -221,7 +224,8 @@ void MMF::AbstractVideoPlayer::scaleModeChanged() TRACE_CONTEXT(AbstractVideoPlayer::scaleModeChanged, EVideoInternal); TRACE_ENTRY("state %d", state()); - updateScaleFactors(m_videoOutput->videoWindowSize()); + if (m_videoOutput) + updateScaleFactors(m_videoOutput->videoWindowSize()); TRACE_EXIT_0(); } @@ -357,6 +361,8 @@ void MMF::AbstractVideoPlayer::videoOutputChanged() void MMF::AbstractVideoPlayer::initVideoOutput() { + Q_ASSERT(m_videoOutput); + bool connected = connect( m_videoOutput, SIGNAL(videoWindowChanged()), this, SLOT(videoWindowChanged()) @@ -378,9 +384,6 @@ void MMF::AbstractVideoPlayer::initVideoOutput() // Suppress warnings in release builds Q_UNUSED(connected); - // Do these after all connections are complete, to ensure - // that any signals generated get to their destinations. - m_videoOutput->winId(); m_videoOutput->setVideoSize(m_videoFrameSize); } @@ -400,6 +403,8 @@ QSize scaleToAspect(const QSize &srcRect, int aspectWidth, int aspectHeight) void MMF::AbstractVideoPlayer::updateScaleFactors(const QSize &windowSize, bool apply) { + Q_ASSERT(m_videoOutput); + if (m_videoFrameSize.isValid()) { QRect videoRect; diff --git a/src/3rdparty/phonon/mmf/audioequalizer.cpp b/src/3rdparty/phonon/mmf/audioequalizer.cpp index 1d2bbd4..28433f6 100644 --- a/src/3rdparty/phonon/mmf/audioequalizer.cpp +++ b/src/3rdparty/phonon/mmf/audioequalizer.cpp @@ -16,7 +16,7 @@ along with this library. If not, see <http://www.gnu.org/licenses/>. */ -#include <AudioEqualizerBase.h> +#include <audioequalizerbase.h> #include "audioequalizer.h" QT_BEGIN_NAMESPACE diff --git a/src/3rdparty/phonon/mmf/bassboost.cpp b/src/3rdparty/phonon/mmf/bassboost.cpp index 67076f6..81d9208 100644 --- a/src/3rdparty/phonon/mmf/bassboost.cpp +++ b/src/3rdparty/phonon/mmf/bassboost.cpp @@ -16,7 +16,7 @@ along with this library. If not, see <http://www.gnu.org/licenses/>. */ -#include <BassBoostBase.h> +#include <bassboostbase.h> #include "bassboost.h" QT_BEGIN_NAMESPACE diff --git a/src/3rdparty/phonon/mmf/dummyplayer.cpp b/src/3rdparty/phonon/mmf/dummyplayer.cpp index 6970088..d39ef76 100644 --- a/src/3rdparty/phonon/mmf/dummyplayer.cpp +++ b/src/3rdparty/phonon/mmf/dummyplayer.cpp @@ -97,6 +97,10 @@ void MMF::DummyPlayer::open(const Phonon::MediaSource &, RFile &) } +void MMF::DummyPlayer::close() +{ + +} //----------------------------------------------------------------------------- // AbstractPlayer diff --git a/src/3rdparty/phonon/mmf/dummyplayer.h b/src/3rdparty/phonon/mmf/dummyplayer.h index 6841b5d..9d45696 100644 --- a/src/3rdparty/phonon/mmf/dummyplayer.h +++ b/src/3rdparty/phonon/mmf/dummyplayer.h @@ -58,6 +58,7 @@ public: // AbstractPlayer virtual void open(const Phonon::MediaSource&, RFile&); + virtual void close(); virtual void doSetTickInterval(qint32 interval); }; } diff --git a/src/3rdparty/phonon/mmf/environmentalreverb.cpp b/src/3rdparty/phonon/mmf/environmentalreverb.cpp index d4f5223..c500385 100644 --- a/src/3rdparty/phonon/mmf/environmentalreverb.cpp +++ b/src/3rdparty/phonon/mmf/environmentalreverb.cpp @@ -16,7 +16,7 @@ along with this library. If not, see <http://www.gnu.org/licenses/>. */ -#include <EnvironmentalReverbBase.h> +#include <environmentalreverbbase.h> #include "environmentalreverb.h" QT_BEGIN_NAMESPACE diff --git a/src/3rdparty/phonon/mmf/loudness.cpp b/src/3rdparty/phonon/mmf/loudness.cpp index ca05ab0..22d7518 100644 --- a/src/3rdparty/phonon/mmf/loudness.cpp +++ b/src/3rdparty/phonon/mmf/loudness.cpp @@ -16,7 +16,7 @@ along with this library. If not, see <http://www.gnu.org/licenses/>. */ -#include <LoudnessBase.h> +#include <loudnessbase.h> #include "loudness.h" QT_BEGIN_NAMESPACE diff --git a/src/3rdparty/phonon/mmf/mediaobject.cpp b/src/3rdparty/phonon/mmf/mediaobject.cpp index e1b921b..d264377 100644 --- a/src/3rdparty/phonon/mmf/mediaobject.cpp +++ b/src/3rdparty/phonon/mmf/mediaobject.cpp @@ -281,6 +281,9 @@ void MMF::MediaObject::createPlayer(const MediaSource &source) break; } + if (oldPlayer) + oldPlayer->close(); + AbstractPlayer* newPlayer = 0; // Construct newPlayer using oldPlayer (if not 0) in order to copy diff --git a/src/3rdparty/phonon/mmf/stereowidening.cpp b/src/3rdparty/phonon/mmf/stereowidening.cpp index f90651b..e452160 100644 --- a/src/3rdparty/phonon/mmf/stereowidening.cpp +++ b/src/3rdparty/phonon/mmf/stereowidening.cpp @@ -16,7 +16,7 @@ along with this library. If not, see <http://www.gnu.org/licenses/>. */ -#include <StereoWideningBase.h> +#include <stereowideningbase.h> #include "stereowidening.h" QT_BEGIN_NAMESPACE diff --git a/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp b/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp index 1925471..deb9774 100644 --- a/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp +++ b/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp @@ -61,6 +61,8 @@ DsaVideoPlayer::~DsaVideoPlayer() void MMF::DsaVideoPlayer::videoWindowScreenRectChanged() { + Q_ASSERT(m_videoOutput); + QRect windowRect = static_cast<DsaVideoOutput *>(m_videoOutput)->videoWindowScreenRect(); // Clip to physical window size @@ -124,12 +126,12 @@ void MMF::DsaVideoPlayer::createPlayer() // CVideoPlayerUtility::NewL starts DSA m_dsaActive = true; - - m_player->RegisterForVideoLoadingNotification(*this); } void MMF::DsaVideoPlayer::initVideoOutput() { + Q_ASSERT(m_videoOutput); + bool connected = connect( m_videoOutput, SIGNAL(videoWindowScreenRectChanged()), this, SLOT(videoWindowScreenRectChanged()) @@ -156,7 +158,8 @@ void MMF::DsaVideoPlayer::initVideoOutput() void MMF::DsaVideoPlayer::prepareCompleted() { - videoWindowScreenRectChanged(); + if (m_videoOutput) + videoWindowScreenRectChanged(); } void MMF::DsaVideoPlayer::handleVideoWindowChanged() diff --git a/src/3rdparty/phonon/mmf/videoplayer_surface.cpp b/src/3rdparty/phonon/mmf/videoplayer_surface.cpp index fda7342..f380e69 100644 --- a/src/3rdparty/phonon/mmf/videoplayer_surface.cpp +++ b/src/3rdparty/phonon/mmf/videoplayer_surface.cpp @@ -59,7 +59,8 @@ SurfaceVideoPlayer::~SurfaceVideoPlayer() void MMF::SurfaceVideoPlayer::videoWindowSizeChanged() { - updateScaleFactors(m_videoOutput->videoWindowSize()); + if (m_videoOutput) + updateScaleFactors(m_videoOutput->videoWindowSize()); } @@ -80,6 +81,8 @@ void MMF::SurfaceVideoPlayer::createPlayer() void MMF::SurfaceVideoPlayer::initVideoOutput() { + Q_ASSERT(m_videoOutput); + bool connected = connect( m_videoOutput, SIGNAL(videoWindowSizeChanged()), this, SLOT(videoWindowSizeChanged()) @@ -104,6 +107,9 @@ void MMF::SurfaceVideoPlayer::handleVideoWindowChanged() void MMF::SurfaceVideoPlayer::handleParametersChanged(VideoParameters parameters) { + TRACE_CONTEXT(SurfaceVideoPlayer::handleParametersChanged, EVideoApi); + TRACE_ENTRY("parameters 0x%x", parameters.operator int()); + TRect rect; if (m_videoOutput) { m_videoOutput->dump(); @@ -115,23 +121,14 @@ void MMF::SurfaceVideoPlayer::handleParametersChanged(VideoParameters parameters if (player) { int err = KErrNone; if (parameters & WindowHandle) { - if (m_displayWindow) - player->RemoveDisplayWindow(*m_displayWindow); - - RWindow *window = static_cast<RWindow *>(m_window); - if (window) { - window->SetBackgroundColor(TRgb(0, 0, 0, 255)); - TRAP(err, player->AddDisplayWindowL(m_wsSession, m_screenDevice, *window, rect, rect)); - if (KErrNone != err) { - setError(tr("Video display error"), err); - window = 0; - } - } - m_displayWindow = window; + removeDisplayWindow(); + addDisplayWindow(rect); } if (KErrNone == err) { if (parameters & ScaleFactors) { + if (!m_displayWindow) + addDisplayWindow(rect); Q_ASSERT(m_displayWindow); TRAP(err, player->SetVideoExtentL(*m_displayWindow, rect)); if (KErrNone == err) @@ -143,6 +140,45 @@ void MMF::SurfaceVideoPlayer::handleParametersChanged(VideoParameters parameters } } } + + TRACE_EXIT_0(); +} + +void MMF::SurfaceVideoPlayer::addDisplayWindow(const TRect &rect) +{ + TRACE_CONTEXT(SurfaceVideoPlayer::addDisplayWindow, EVideoApi); + TRACE_ENTRY("rect %d %d - %d %d", rect.iTl.iX, rect.iTl.iY, rect.iBr.iX, rect.iBr.iY); + + Q_ASSERT(!m_displayWindow); + RWindow *window = static_cast<RWindow *>(m_window); + + TRACE("window 0x%08x", window); + + if (window) { + window->SetBackgroundColor(TRgb(0, 0, 0, 255)); + CVideoPlayerUtility2 *player = static_cast<CVideoPlayerUtility2 *>(m_player.data()); + Q_ASSERT(player); + TRAPD(err, player->AddDisplayWindowL(m_wsSession, m_screenDevice, *window, rect, rect)); + if (KErrNone == err) + m_displayWindow = window; + else + setError(tr("Video display error"), err); + TRACE("err %d", err); + } + + TRACE_EXIT_0(); +} + +void MMF::SurfaceVideoPlayer::removeDisplayWindow() +{ + TRACE_CONTEXT(SurfaceVideoPlayer::removeDisplayWindow, EVideoApi); + TRACE("player 0x%08x window 0x%08x", m_player.data(), m_displayWindow); + + CVideoPlayerUtility2 *player = static_cast<CVideoPlayerUtility2 *>(m_player.data()); + if (player && m_displayWindow) { + player->RemoveDisplayWindow(*m_displayWindow); + m_displayWindow = 0; + } } QT_END_NAMESPACE diff --git a/src/3rdparty/phonon/mmf/videoplayer_surface.h b/src/3rdparty/phonon/mmf/videoplayer_surface.h index c05da9c..8572fdc 100644 --- a/src/3rdparty/phonon/mmf/videoplayer_surface.h +++ b/src/3rdparty/phonon/mmf/videoplayer_surface.h @@ -62,6 +62,9 @@ private: void handleVideoWindowChanged(); void handleParametersChanged(VideoParameters parameters); + void addDisplayWindow(const TRect &rect); + void removeDisplayWindow(); + private: // Window handle which has been passed to the MMF via // CVideoPlayerUtility2::SetDisplayWindowL diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt index 91442c1..259d9a9 100644 --- a/src/declarative/QmlChanges.txt +++ b/src/declarative/QmlChanges.txt @@ -16,8 +16,11 @@ Component: - errorsString() renamed to errorString() ListView: - ListView.prevSection property changed to ListView.previousSection - -TextInput xToPosition -> positionAt (to match TextEdit.positionAt) +TextInput: + - xToPosition -> positionAt (to match TextEdit.positionAt) +Image: + - pixmap property removed, use QDeclarativeImageProvider to serve pixmaps + instead QList<QObject*> models no longer provide properties in model object. The properties are now updated when the object changes. An object's property @@ -35,6 +38,10 @@ The QDeclarativeExpression constructor has changed from to QDeclarativeExpression(context, scope, expression, parent = 0) +QDeclarativeImageProvider::request() has been renamed to +QDeclarativeImageProvider::image() and the class can now provide +both qimages and qpixmaps, and qimages can be served synchronously + QML Viewer ------------ The standalone qml executable has been renamed back to Qml Viewer. Runtime warnings diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 3efb9ad..dce6f0e 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -1390,7 +1390,7 @@ void QDeclarativeGridView::setHighlight(QDeclarativeComponent *highlight) highlight is not moved by the view, and any movement must be implemented by the highlight. - Here is a highlight with its motion defined by a \l {SpringFollow} item: + Here is a highlight with its motion defined by a \l {SpringAnimation} item: \snippet doc/src/snippets/declarative/gridview/gridview.qml highlightFollowsCurrentItem */ diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp index 666ff3f..34d33f5 100644 --- a/src/declarative/graphicsitems/qdeclarativeimage.cpp +++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp @@ -116,15 +116,6 @@ QDeclarativeImage::~QDeclarativeImage() { } -/*! - \qmlproperty QPixmap Image::pixmap - - This property holds the QPixmap image to display. - - This is useful for displaying images provided by a C++ implementation, - for example, a model may provide a data role of type QPixmap. -*/ - QPixmap QDeclarativeImage::pixmap() const { Q_D(const QDeclarativeImage); @@ -524,7 +515,6 @@ void QDeclarativeImage::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWi void QDeclarativeImage::pixmapChange() { updatePaintedGeometry(); - emit pixmapChanged(); } QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qdeclarativeimage_p.h b/src/declarative/graphicsitems/qdeclarativeimage_p.h index a4f4475..c8bb30b 100644 --- a/src/declarative/graphicsitems/qdeclarativeimage_p.h +++ b/src/declarative/graphicsitems/qdeclarativeimage_p.h @@ -57,7 +57,6 @@ class Q_AUTOTEST_EXPORT QDeclarativeImage : public QDeclarativeImageBase Q_OBJECT Q_ENUMS(FillMode) - Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap NOTIFY pixmapChanged DESIGNABLE false) Q_PROPERTY(FillMode fillMode READ fillMode WRITE setFillMode NOTIFY fillModeChanged) Q_PROPERTY(qreal paintedWidth READ paintedWidth NOTIFY paintedGeometryChanged) Q_PROPERTY(qreal paintedHeight READ paintedHeight NOTIFY paintedGeometryChanged) @@ -79,7 +78,6 @@ public: void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); Q_SIGNALS: - void pixmapChanged(); void fillModeChanged(); void paintedGeometryChanged(); diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 9497cb7..91e9995 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -1727,7 +1727,7 @@ void QDeclarativeListView::setHighlight(QDeclarativeComponent *highlight) highlight is not moved by the view, and any movement must be implemented by the highlight. - Here is a highlight with its motion defined by a \l {SpringFollow} item: + Here is a highlight with its motion defined by a \l {SpringAniamtion} item: \snippet doc/src/snippets/declarative/listview/listview.qml highlightFollowsCurrentItem diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index 04ec382..36c4b49 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -108,27 +108,45 @@ class QByteArray; \brief The Component element encapsulates a QML component definition. Components are reusable, encapsulated QML elements with well-defined interfaces. - They are often defined in \l {qdeclarativedocuments.html}{Component Files}. - The \e Component element allows defining components within a QML file. - This can be useful for reusing a small component within a single QML - file, or for defining a component that logically belongs with the - file containing it. + Components are often defined by \l {qdeclarativedocuments.html}{component files} - + that is, \c .qml files. The \e Component element allows components to be defined + within QML items rather than in a separate file. This may be useful for reusing + a small component within a QML file, or for defining a component that logically + belongs with other QML components within a file. + + For example, here is a component that is used by multiple \l Loader objects: \qml Item { Component { id: redSquare + Rectangle { color: "red" width: 10 height: 10 } } + Loader { sourceComponent: redSquare } Loader { sourceComponent: redSquare; x: 20 } } \endqml + + Notice that while a \l Rectangle by itself would be automatically + rendered and displayed, this is not the case for the above rectangle + because it is defined inside a \c Component. The component encapsulates the + QML elements within, as if they were defined in a separate \c .qml + file, and is not loaded until requested (in this case, by the + two \l Loader objects). + + The Component element is commonly used to provide graphical components + for views. For example, the ListView::delegate property requires a Component + to specify how each list item is to be displayed. + + Component objects can also be dynamically generated using + \l{Qt::createComponent}{Qt.createComponent()}. */ /*! diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 2e37af7..00bc1b7 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -1090,6 +1090,8 @@ If you are certain the files will be local, you could simplify to: To create a QML object from an arbitrary string of QML (instead of a file), use \l{QML:Qt::createQmlObject()}{Qt.createQmlObject()}. + +\sa {Dynamic Object Management} */ QScriptValue QDeclarativeEnginePrivate::createComponent(QScriptContext *ctxt, QScriptEngine *engine) @@ -1137,6 +1139,8 @@ Each object in this array has the members \c lineNumber, \c columnNumber, \c fil Note that this function returns immediately, and therefore may not work if the \a qml string loads new components (that is, external QML files that have not yet been loaded). If this is the case, consider using \l{QML:Qt::createComponent()}{Qt.createComponent()} instead. + +\sa {Dynamic Object Management} */ QScriptValue QDeclarativeEnginePrivate::createQmlObject(QScriptContext *ctxt, QScriptEngine *engine) diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index 6559bd5..bdb9510 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -142,8 +142,8 @@ bool QDeclarativeAbstractAnimation::isRunning() const return d->running; } -// the behavior connects the animation to this slot -void QDeclarativeAbstractAnimation::behaviorControlRunningChanged(bool running) +// the behavior calls this function +void QDeclarativeAbstractAnimation::notifyRunningChanged(bool running) { Q_D(QDeclarativeAbstractAnimation); if (d->disableUserControl && d->running != running) { diff --git a/src/declarative/util/qdeclarativeanimation_p.h b/src/declarative/util/qdeclarativeanimation_p.h index 2279b0e..59bd465 100644 --- a/src/declarative/util/qdeclarativeanimation_p.h +++ b/src/declarative/util/qdeclarativeanimation_p.h @@ -134,10 +134,12 @@ public: private Q_SLOTS: void timelineComplete(); void componentFinalized(); - void behaviorControlRunningChanged(bool running); - private: virtual void setTarget(const QDeclarativeProperty &); + void notifyRunningChanged(bool running); + friend class QDeclarativeBehavior; + + }; class QDeclarativePauseAnimationPrivate; diff --git a/src/declarative/util/qdeclarativebehavior.cpp b/src/declarative/util/qdeclarativebehavior.cpp index 4480e75..2bb28c3 100644 --- a/src/declarative/util/qdeclarativebehavior.cpp +++ b/src/declarative/util/qdeclarativebehavior.cpp @@ -138,10 +138,6 @@ void QDeclarativeBehavior::setAnimation(QDeclarativeAbstractAnimation *animation SIGNAL(stateChanged(QAbstractAnimation::State,QAbstractAnimation::State)), this, SLOT(qtAnimationStateChanged(QAbstractAnimation::State,QAbstractAnimation::State))); - connect(this, - SIGNAL(qtAnimationRunningChanged(bool)), - d->animation, - SLOT(behaviorControlRunningChanged(bool))); } } @@ -150,7 +146,7 @@ void QDeclarativeBehavior::qtAnimationStateChanged(QAbstractAnimation::State new { Q_D(QDeclarativeBehavior); if (!d->blockRunningChanged) - emit qtAnimationRunningChanged(newState == QAbstractAnimation::Running); + d->animation->notifyRunningChanged(newState == QAbstractAnimation::Running); } diff --git a/src/declarative/util/qdeclarativebehavior_p.h b/src/declarative/util/qdeclarativebehavior_p.h index a3132d9..9801fb2 100644 --- a/src/declarative/util/qdeclarativebehavior_p.h +++ b/src/declarative/util/qdeclarativebehavior_p.h @@ -83,7 +83,6 @@ public: Q_SIGNALS: void enabledChanged(); - void qtAnimationRunningChanged(bool running); private Q_SLOTS: void componentFinalized(); diff --git a/src/declarative/util/qdeclarativepixmapcache.cpp b/src/declarative/util/qdeclarativepixmapcache.cpp index f729ced..00dd922 100644 --- a/src/declarative/util/qdeclarativepixmapcache.cpp +++ b/src/declarative/util/qdeclarativepixmapcache.cpp @@ -952,10 +952,9 @@ void QDeclarativePixmap::load(QDeclarativeEngine *engine, const QUrl &url, const if (iter == store->m_cache.end()) { if (async) { + // pixmaps can only be loaded synchronously if (url.scheme() == QLatin1String("image") && QDeclarativeEnginePrivate::get(engine)->getImageProviderType(url) == QDeclarativeImageProvider::Pixmap) { - qWarning().nospace() << "Pixmaps must be loaded synchronously, ignoring asynchronous property for Image with source: " - << url.toString(); async = false; } } diff --git a/src/declarative/util/qdeclarativesmoothedanimation.cpp b/src/declarative/util/qdeclarativesmoothedanimation.cpp index 6b6df4d..5d47c30 100644 --- a/src/declarative/util/qdeclarativesmoothedanimation.cpp +++ b/src/declarative/util/qdeclarativesmoothedanimation.cpp @@ -307,7 +307,7 @@ Rectangle { set to a value such as 0.5 units/second. Animating from 0 to 1.0 with a velocity of 0.5 will take 2000 ms to complete. - \sa SpringFollow, {QML Animation}, {declarative/animation/basics}{Animation basics example} + \sa {QML Animation}, {declarative/animation/basics}{Animation basics example} */ QDeclarativeSmoothedAnimation::QDeclarativeSmoothedAnimation(QObject *parent) diff --git a/src/declarative/util/qdeclarativesmoothedfollow.cpp b/src/declarative/util/qdeclarativesmoothedfollow.cpp deleted file mode 100644 index f70df9d..0000000 --- a/src/declarative/util/qdeclarativesmoothedfollow.cpp +++ /dev/null @@ -1,299 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qdeclarativesmoothedfollow_p.h" -#include "qdeclarativesmoothedanimation_p_p.h" - -#include <private/qobject_p.h> -#include <QtCore/qnumeric.h> - -#include "qdeclarativeglobal_p.h" - - -QT_BEGIN_NAMESPACE - -class QDeclarativeSmoothedFollowPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QDeclarativeSmoothedFollow) -public: - QDeclarativeSmoothedFollowPrivate(); - - bool enabled; - QSmoothedAnimation *anim; -}; - -/*! - \qmlclass SmoothedFollow QDeclarativeSmoothedFollow - \since 4.7 - \inherits NumberAnimation - \brief The SmoothedFollow element allows a property to smoothly track a value. - - The SmoothedFollow animates a property's value to a set target value - using an ease in/out quad easing curve. If the animation is restarted - with a different target value, the easing curves used to animate to the old - and the new target values are smoothly spliced together to avoid any obvious - visual glitches by maintaining the current velocity. - - The property animation is configured by setting the velocity at which the - animation should occur, or the duration that the animation should take. - If both a velocity and a duration are specified, the one that results in - the quickest animation is chosen for each change in the target value. - - For example, animating from 0 to 800 will take 4 seconds if a velocity - of 200 is set, will take 8 seconds with a duration of 8000 set, and will - take 4 seconds with both a velocity of 200 and a duration of 8000 set. - Animating from 0 to 20000 will take 10 seconds if a velocity of 200 is set, - will take 8 seconds with a duration of 8000 set, and will take 8 seconds - with both a velocity of 200 and a duration of 8000 set. - - The follow example shows one rectangle tracking the position of another. -\code -import Qt 4.7 - -Rectangle { - width: 800; height: 600; color: "blue" - - Rectangle { - color: "green" - width: 60; height: 60; - SmoothedFollow on x { to: rect1.x - 5; velocity: 200 } - SmoothedFollow on y { to: rect1.y - 5; velocity: 200 } - } - - Rectangle { - id: rect1 - color: "red" - width: 50; height: 50; - } - - focus: true - Keys.onRightPressed: rect1.x = rect1.x + 100 - Keys.onLeftPressed: rect1.x = rect1.x - 100 - Keys.onUpPressed: rect1.y = rect1.y - 100 - Keys.onDownPressed: rect1.y = rect1.y + 100 -} -\endcode - - The default velocity of SmoothedFollow is 200 units/second. Note that if the range of the - value being animated is small, then the velocity will need to be adjusted - appropriately. For example, the opacity of an item ranges from 0 - 1.0. - To enable a smooth animation in this range the velocity will need to be - set to a value such as 0.5 units/second. Animating from 0 to 1.0 with a velocity - of 0.5 will take 2000 ms to complete. - - \sa SpringFollow -*/ - -QDeclarativeSmoothedFollow::QDeclarativeSmoothedFollow(QObject *parent) - : QObject(*(new QDeclarativeSmoothedFollowPrivate), parent) -{ -} - -QDeclarativeSmoothedFollow::~QDeclarativeSmoothedFollow() -{ -} - -QDeclarativeSmoothedFollowPrivate::QDeclarativeSmoothedFollowPrivate() - : enabled(true), anim(new QSmoothedAnimation) -{ - Q_Q(QDeclarativeSmoothedFollow); - QDeclarative_setParent_noEvent(anim, q); -} - -/*! - \qmlproperty enumeration SmoothedFollow::reversingMode - - Sets how the SmoothedFollow behaves if an animation direction is reversed. - - If reversing mode is \c SmoothedFollow.Eased, the animation will smoothly decelerate, and - then reverse direction. If the reversing mode is \c SmoothedFollow.Immediate, the - animation will immediately begin accelerating in the reverse direction, - begining with a velocity of 0. If the reversing mode is \c SmoothedFollow.Sync, the - property is immediately set to the target value. -*/ -QDeclarativeSmoothedFollow::ReversingMode QDeclarativeSmoothedFollow::reversingMode() const -{ - Q_D(const QDeclarativeSmoothedFollow); - return (ReversingMode) d->anim->reversingMode; -} - -void QDeclarativeSmoothedFollow::setReversingMode(ReversingMode m) -{ - Q_D(QDeclarativeSmoothedFollow); - if (d->anim->reversingMode == (QDeclarativeSmoothedAnimation::ReversingMode) m) - return; - - d->anim->reversingMode = (QDeclarativeSmoothedAnimation::ReversingMode) m; - emit reversingModeChanged(); -} - -/*! - \qmlproperty int SmoothedFollow::duration - - This property holds the animation duration, in msecs, used when tracking the source. - - Setting this to -1 (the default) disables the duration value. -*/ -int QDeclarativeSmoothedFollow::duration() const -{ - Q_D(const QDeclarativeSmoothedFollow); - return d->anim->userDuration; -} - -void QDeclarativeSmoothedFollow::setDuration(int duration) -{ - Q_D(QDeclarativeSmoothedFollow); - if (duration == d->anim->duration()) - return; - - d->anim->userDuration = duration; - emit durationChanged(); -} - -qreal QDeclarativeSmoothedFollow::velocity() const -{ - Q_D(const QDeclarativeSmoothedFollow); - return d->anim->velocity; -} - -/*! - \qmlproperty real SmoothedFollow::velocity - - This property holds the average velocity allowed when tracking the 'to' value. - - The default velocity of SmoothedFollow is 200 units/second. - - Setting this to -1 disables the velocity value. -*/ -void QDeclarativeSmoothedFollow::setVelocity(qreal v) -{ - Q_D(QDeclarativeSmoothedFollow); - if (d->anim->velocity == v) - return; - - d->anim->velocity = v; - emit velocityChanged(); -} - -/*! - \qmlproperty int SmoothedFollow::maximumEasingTime - - This property specifies the maximum time, in msecs, an "eases" during the follow should take. - Setting this property causes the velocity to "level out" after at a time. Setting - a negative value reverts to the normal mode of easing over the entire animation - duration. - - The default value is -1. -*/ -int QDeclarativeSmoothedFollow::maximumEasingTime() const -{ - Q_D(const QDeclarativeSmoothedFollow); - return d->anim->maximumEasingTime; -} - -void QDeclarativeSmoothedFollow::setMaximumEasingTime(int v) -{ - Q_D(QDeclarativeSmoothedFollow); - d->anim->maximumEasingTime = v; - emit maximumEasingTimeChanged(); -} - -/*! - \qmlproperty real SmoothedFollow::to - This property holds the ending value. - If not set, then the value defined in the end state of the transition or Behavior. -*/ -qreal QDeclarativeSmoothedFollow::to() const -{ - Q_D(const QDeclarativeSmoothedFollow); - return d->anim->to; -} - -void QDeclarativeSmoothedFollow::setTo(qreal t) -{ - Q_D(QDeclarativeSmoothedFollow); - - if (qIsNaN(t)) - return; - - if (d->anim->to == t) - return; - - d->anim->to = t; - - if (d->enabled) - d->anim->restart(); -} - -/*! - \qmlproperty bool SmoothedFollow::enabled - This property whether this animation should automatically restart when - the 'to' property is upated. - - The default value of this property is 'true'. -*/ -bool QDeclarativeSmoothedFollow::enabled() const -{ - Q_D(const QDeclarativeSmoothedFollow); - return d->enabled; -} - -void QDeclarativeSmoothedFollow::setEnabled(bool e) -{ - Q_D(QDeclarativeSmoothedFollow); - if (d->enabled == e) - return; - d->enabled = e; - - if (d->enabled) - d->anim->restart(); - else - d->anim->stop(); - emit enabledChanged(); -} - -void QDeclarativeSmoothedFollow::setTarget(const QDeclarativeProperty &t) -{ - Q_D(QDeclarativeSmoothedFollow); - d->anim->target = t; -} - -QT_END_NAMESPACE diff --git a/src/declarative/util/qdeclarativesmoothedfollow_p.h b/src/declarative/util/qdeclarativesmoothedfollow_p.h deleted file mode 100644 index f852311..0000000 --- a/src/declarative/util/qdeclarativesmoothedfollow_p.h +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QDECLARATIVESMOOTHEDFOLLOW_H -#define QDECLARATIVESMOOTHEDFOLLOW_H - -#include <qdeclarative.h> -#include <qdeclarativepropertyvaluesource.h> - -#include <QtCore/qobject.h> - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QDeclarativeProperty; -class QDeclarativeSmoothedFollowPrivate; -class Q_AUTOTEST_EXPORT QDeclarativeSmoothedFollow : public QObject, - public QDeclarativePropertyValueSource -{ - Q_OBJECT - Q_DECLARE_PRIVATE(QDeclarativeSmoothedFollow) - Q_INTERFACES(QDeclarativePropertyValueSource) - Q_ENUMS(ReversingMode) - - Q_PROPERTY(qreal to READ to WRITE setTo NOTIFY toChanged) - Q_PROPERTY(qreal velocity READ velocity WRITE setVelocity NOTIFY velocityChanged) - Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged) - Q_PROPERTY(ReversingMode reversingMode READ reversingMode WRITE setReversingMode NOTIFY reversingModeChanged) - Q_PROPERTY(qreal maximumEasingTime READ maximumEasingTime WRITE setMaximumEasingTime NOTIFY maximumEasingTimeChanged) - Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) - -public: - enum ReversingMode { Eased, Immediate, Sync }; - - QDeclarativeSmoothedFollow(QObject *parent = 0); - ~QDeclarativeSmoothedFollow(); - - qreal to() const; - void setTo(qreal); - - ReversingMode reversingMode() const; - void setReversingMode(ReversingMode); - - int duration() const; - void setDuration(int); - - qreal velocity() const; - void setVelocity(qreal); - - int maximumEasingTime() const; - void setMaximumEasingTime(int); - - bool enabled() const; - void setEnabled(bool); - - virtual void setTarget(const QDeclarativeProperty &); - -Q_SIGNALS: - void velocityChanged(); - void durationChanged(); - void reversingModeChanged(); - void maximumEasingTimeChanged(); - void enabledChanged(); -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QDeclarativeSmoothedFollow) - -QT_END_HEADER - -#endif // QDECLARATIVESMOOTHEDFOLLOW_H diff --git a/src/declarative/util/qdeclarativespringanimation.cpp b/src/declarative/util/qdeclarativespringanimation.cpp index 314b82b..4cf2fc0 100644 --- a/src/declarative/util/qdeclarativespringanimation.cpp +++ b/src/declarative/util/qdeclarativespringanimation.cpp @@ -183,11 +183,13 @@ void QDeclarativeSpringAnimationPrivate::tick(int time) lastTime = time; } + qreal old_to = to; + QDeclarativePropertyPrivate::write(defaultProperty, currentValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); - if (stop) + if (stop && old_to == to) // do not stop if we got restarted clock.stop(); } @@ -204,6 +206,15 @@ void QDeclarativeSpringAnimationPrivate::updateMode() /*! \qmlclass SpringAnimation QDeclarativeSpringAnimation \since 4.7 + + \brief The SpringAnimation element allows a property to track a value in a spring-like motion + + SpringAnimation mimics the oscillatory behavior of a spring, with the appropriate \l spring constant to + control the acceleration and the \l damping to control how quickly the effect dies away. + + You can also limit the maximum \l velocity of the animation. + + */ QDeclarativeSpringAnimation::QDeclarativeSpringAnimation(QObject *parent) @@ -232,7 +243,7 @@ qreal QDeclarativeSpringAnimation::to() const } /*! - \qmlproperty real SpringFollow::to + \qmlproperty real SpringAnimation::to */ void QDeclarativeSpringAnimation::setTo(qreal value) @@ -254,7 +265,7 @@ qreal QDeclarativeSpringAnimation::from() const } /*! - \qmlproperty real SpringFollow::from + \qmlproperty real SpringAnimation::from */ void QDeclarativeSpringAnimation::setFrom(qreal value) diff --git a/src/declarative/util/qdeclarativespringfollow.cpp b/src/declarative/util/qdeclarativespringfollow.cpp deleted file mode 100644 index aae66ac..0000000 --- a/src/declarative/util/qdeclarativespringfollow.cpp +++ /dev/null @@ -1,464 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "private/qdeclarativespringfollow_p.h" - -#include "private/qdeclarativeanimation_p_p.h" - -#include <QtCore/qdebug.h> - -#include <private/qobject_p.h> - -#include <limits.h> -#include <math.h> - -QT_BEGIN_NAMESPACE - - - -class QDeclarativeSpringFollowPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QDeclarativeSpringFollow) -public: - QDeclarativeSpringFollowPrivate() - : currentValue(0), to(0), maxVelocity(0), lastTime(0) - , mass(1.0), spring(0.), damping(0.), velocity(0), epsilon(0.01) - , modulus(0.0), useMass(false), haveModulus(false), enabled(true), mode(Track), clock(this) {} - - QDeclarativeProperty property; - qreal currentValue; - qreal to; - qreal maxVelocity; - qreal velocityms; - int lastTime; - qreal mass; - qreal spring; - qreal damping; - qreal velocity; - qreal epsilon; - qreal modulus; - - bool useMass : 1; - bool haveModulus : 1; - bool enabled : 1; - - enum Mode { - Track, - Velocity, - Spring - }; - Mode mode; - - void tick(int); - void updateMode(); - void start(); - void stop(); - - QTickAnimationProxy<QDeclarativeSpringFollowPrivate, &QDeclarativeSpringFollowPrivate::tick> clock; -}; - -void QDeclarativeSpringFollowPrivate::tick(int time) -{ - Q_Q(QDeclarativeSpringFollow); - - int elapsed = time - lastTime; - if (!elapsed) - return; - qreal srcVal = to; - if (haveModulus) { - currentValue = fmod(currentValue, modulus); - srcVal = fmod(srcVal, modulus); - } - if (mode == Spring) { - if (elapsed < 16) // capped at 62fps. - return; - // Real men solve the spring DEs using RK4. - // We'll do something much simpler which gives a result that looks fine. - int count = elapsed / 16; - for (int i = 0; i < count; ++i) { - qreal diff = srcVal - currentValue; - if (haveModulus && qAbs(diff) > modulus / 2) { - if (diff < 0) - diff += modulus; - else - diff -= modulus; - } - if (useMass) - velocity = velocity + (spring * diff - damping * velocity) / mass; - else - velocity = velocity + spring * diff - damping * velocity; - if (maxVelocity > 0.) { - // limit velocity - if (velocity > maxVelocity) - velocity = maxVelocity; - else if (velocity < -maxVelocity) - velocity = -maxVelocity; - } - currentValue += velocity * 16.0 / 1000.0; - if (haveModulus) { - currentValue = fmod(currentValue, modulus); - if (currentValue < 0.0) - currentValue += modulus; - } - } - if (qAbs(velocity) < epsilon && qAbs(srcVal - currentValue) < epsilon) { - velocity = 0.0; - currentValue = srcVal; - clock.stop(); - } - lastTime = time - (elapsed - count * 16); - } else { - qreal moveBy = elapsed * velocityms; - qreal diff = srcVal - currentValue; - if (haveModulus && qAbs(diff) > modulus / 2) { - if (diff < 0) - diff += modulus; - else - diff -= modulus; - } - if (diff > 0) { - currentValue += moveBy; - if (haveModulus) - currentValue = fmod(currentValue, modulus); - if (currentValue > to) { - currentValue = to; - clock.stop(); - } - } else { - currentValue -= moveBy; - if (haveModulus && currentValue < 0.0) - currentValue = fmod(currentValue, modulus) + modulus; - if (currentValue < to) { - currentValue = to; - clock.stop(); - } - } - lastTime = time; - } - property.write(currentValue); - emit q->valueChanged(currentValue); - if (clock.state() != QAbstractAnimation::Running) - emit q->syncChanged(); -} - -void QDeclarativeSpringFollowPrivate::updateMode() -{ - if (spring == 0. && maxVelocity == 0.) - mode = Track; - else if (spring > 0.) - mode = Spring; - else - mode = Velocity; -} - -void QDeclarativeSpringFollowPrivate::start() -{ - if (!enabled) - return; - - Q_Q(QDeclarativeSpringFollow); - if (mode == QDeclarativeSpringFollowPrivate::Track) { - currentValue = to; - property.write(currentValue); - } else if (to != currentValue && clock.state() != QAbstractAnimation::Running) { - lastTime = 0; - currentValue = property.read().toReal(); - clock.start(); // infinity?? - emit q->syncChanged(); - } -} - -void QDeclarativeSpringFollowPrivate::stop() -{ - clock.stop(); -} - -/*! - \qmlclass SpringFollow QDeclarativeSpringFollow - \since 4.7 - \brief The SpringFollow element allows a property to track a value. - - In example below, \e rect2 will follow \e rect1 moving with a velocity of up to 200: - \code - Rectangle { - id: rect1 - width: 20; height: 20 - color: "#00ff00" - y: 200 // initial value - SequentialAnimation on y { - loops: Animation.Infinite - NumberAnimation { - to: 200 - easing.type: Easing.OutBounce - easing.amplitude: 100 - duration: 2000 - } - PauseAnimation { duration: 1000 } - } - } - Rectangle { - id: rect2 - x: rect1.width - width: 20; height: 20 - color: "#ff0000" - SpringFollow on y { to: rect1.y; velocity: 200 } - } - \endcode -*/ - -QDeclarativeSpringFollow::QDeclarativeSpringFollow(QObject *parent) -: QObject(*(new QDeclarativeSpringFollowPrivate),parent) -{ -} - -QDeclarativeSpringFollow::~QDeclarativeSpringFollow() -{ -} - -void QDeclarativeSpringFollow::setTarget(const QDeclarativeProperty &property) -{ - Q_D(QDeclarativeSpringFollow); - d->property = property; - d->currentValue = property.read().toReal(); -} - -qreal QDeclarativeSpringFollow::to() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->to; -} - -/*! - \qmlproperty real SpringFollow::to - This property holds the target value which will be tracked. - - Bind to a property in order to track its changes. -*/ - -void QDeclarativeSpringFollow::setTo(qreal value) -{ - Q_D(QDeclarativeSpringFollow); - if (d->clock.state() == QAbstractAnimation::Running && d->to == value) - return; - - d->to = value; - d->start(); -} - -/*! - \qmlproperty real SpringFollow::velocity - This property holds the maximum velocity allowed when tracking the source. -*/ - -qreal QDeclarativeSpringFollow::velocity() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->maxVelocity; -} - -void QDeclarativeSpringFollow::setVelocity(qreal velocity) -{ - Q_D(QDeclarativeSpringFollow); - d->maxVelocity = velocity; - d->velocityms = velocity / 1000.0; - d->updateMode(); -} - -/*! - \qmlproperty real SpringFollow::spring - This property holds the spring constant - - The spring constant describes how strongly the target is pulled towards the - source. Setting spring to 0 turns off spring tracking. Useful values 0 - 5.0 - - When a spring constant is set and the velocity property is greater than 0, - velocity limits the maximum speed. -*/ -qreal QDeclarativeSpringFollow::spring() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->spring; -} - -void QDeclarativeSpringFollow::setSpring(qreal spring) -{ - Q_D(QDeclarativeSpringFollow); - d->spring = spring; - d->updateMode(); -} - -/*! - \qmlproperty real SpringFollow::damping - This property holds the spring damping constant - - The damping constant describes how quickly a sprung follower comes to rest. - Useful range is 0 - 1.0 -*/ -qreal QDeclarativeSpringFollow::damping() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->damping; -} - -void QDeclarativeSpringFollow::setDamping(qreal damping) -{ - Q_D(QDeclarativeSpringFollow); - if (damping > 1.) - damping = 1.; - - d->damping = damping; -} - - -/*! - \qmlproperty real SpringFollow::epsilon - This property holds the spring epsilon - - The epsilon is the rate and amount of change in the value which is close enough - to 0 to be considered equal to zero. This will depend on the usage of the value. - For pixel positions, 0.25 would suffice. For scale, 0.005 will suffice. - - The default is 0.01. Tuning this value can provide small performance improvements. -*/ -qreal QDeclarativeSpringFollow::epsilon() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->epsilon; -} - -void QDeclarativeSpringFollow::setEpsilon(qreal epsilon) -{ - Q_D(QDeclarativeSpringFollow); - d->epsilon = epsilon; -} - -/*! - \qmlproperty real SpringFollow::modulus - This property holds the modulus value. - - Setting a \a modulus forces the target value to "wrap around" at the modulus. - For example, setting the modulus to 360 will cause a value of 370 to wrap around to 10. -*/ -qreal QDeclarativeSpringFollow::modulus() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->modulus; -} - -void QDeclarativeSpringFollow::setModulus(qreal modulus) -{ - Q_D(QDeclarativeSpringFollow); - if (d->modulus != modulus) { - d->haveModulus = modulus != 0.0; - d->modulus = modulus; - emit modulusChanged(); - } -} - -/*! - \qmlproperty real SpringFollow::mass - This property holds the "mass" of the property being moved. - - mass is 1.0 by default. Setting a different mass changes the dynamics of - a \l spring follow. -*/ -qreal QDeclarativeSpringFollow::mass() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->mass; -} - -void QDeclarativeSpringFollow::setMass(qreal mass) -{ - Q_D(QDeclarativeSpringFollow); - if (d->mass != mass && mass > 0.0) { - d->useMass = mass != 1.0; - d->mass = mass; - emit massChanged(); - } -} - -/*! - \qmlproperty bool SpringFollow::enabled - This property holds whether the target will track the source. - - The default value of this property is 'true'. -*/ -bool QDeclarativeSpringFollow::enabled() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->enabled; -} - -void QDeclarativeSpringFollow::setEnabled(bool enabled) -{ - Q_D(QDeclarativeSpringFollow); - d->enabled = enabled; - if (enabled) - d->start(); - else - d->stop(); -} - -/*! - \qmlproperty bool SpringFollow::inSync - This property is true when target is equal to the source; otherwise - false. If inSync is true the target is not being animated. - - If \l enabled is false then inSync will also be false. -*/ -bool QDeclarativeSpringFollow::inSync() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->enabled && d->clock.state() != QAbstractAnimation::Running; -} - -/*! - \qmlproperty real SpringFollow::value - The current value. -*/ -qreal QDeclarativeSpringFollow::value() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->currentValue; -} - -QT_END_NAMESPACE diff --git a/src/declarative/util/qdeclarativespringfollow_p.h b/src/declarative/util/qdeclarativespringfollow_p.h deleted file mode 100644 index b6277c3..0000000 --- a/src/declarative/util/qdeclarativespringfollow_p.h +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QDECLARATIVESMOOTHFOLLOW_H -#define QDECLARATIVESMOOTHFOLLOW_H - -#include <qdeclarativepropertyvaluesource.h> -#include <qdeclarative.h> - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QDeclarativeSpringFollowPrivate; -class Q_AUTOTEST_EXPORT QDeclarativeSpringFollow : public QObject, - public QDeclarativePropertyValueSource -{ - Q_OBJECT - Q_DECLARE_PRIVATE(QDeclarativeSpringFollow) - Q_INTERFACES(QDeclarativePropertyValueSource) - - Q_PROPERTY(qreal to READ to WRITE setTo) - Q_PROPERTY(qreal velocity READ velocity WRITE setVelocity) - Q_PROPERTY(qreal spring READ spring WRITE setSpring) - Q_PROPERTY(qreal damping READ damping WRITE setDamping) - Q_PROPERTY(qreal epsilon READ epsilon WRITE setEpsilon) - Q_PROPERTY(bool enabled READ enabled WRITE setEnabled) - Q_PROPERTY(qreal value READ value NOTIFY valueChanged) - Q_PROPERTY(qreal modulus READ modulus WRITE setModulus NOTIFY modulusChanged) - Q_PROPERTY(qreal mass READ mass WRITE setMass NOTIFY massChanged) - Q_PROPERTY(bool inSync READ inSync NOTIFY syncChanged) - -public: - QDeclarativeSpringFollow(QObject *parent=0); - ~QDeclarativeSpringFollow(); - - virtual void setTarget(const QDeclarativeProperty &); - - qreal to() const; - void setTo(qreal value); - - qreal velocity() const; - void setVelocity(qreal velocity); - - qreal spring() const; - void setSpring(qreal spring); - - qreal damping() const; - void setDamping(qreal damping); - - qreal epsilon() const; - void setEpsilon(qreal epsilon); - - qreal mass() const; - void setMass(qreal modulus); - - qreal modulus() const; - void setModulus(qreal modulus); - - bool enabled() const; - void setEnabled(bool enabled); - - bool inSync() const; - - qreal value() const; - -Q_SIGNALS: - void valueChanged(qreal); - void modulusChanged(); - void massChanged(); - void syncChanged(); -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QDeclarativeSpringFollow) - -QT_END_HEADER - -#endif // QDECLARATIVESMOOTHFOLLOW_H diff --git a/src/declarative/util/qdeclarativeutilmodule.cpp b/src/declarative/util/qdeclarativeutilmodule.cpp index 74fdac6..c5bfebd 100644 --- a/src/declarative/util/qdeclarativeutilmodule.cpp +++ b/src/declarative/util/qdeclarativeutilmodule.cpp @@ -46,7 +46,6 @@ #include "private/qdeclarativebind_p.h" #include "private/qdeclarativeconnections_p.h" #include "private/qdeclarativesmoothedanimation_p.h" -#include "private/qdeclarativesmoothedfollow_p.h" #include "private/qdeclarativefontloader_p.h" #include "private/qdeclarativelistaccessor_p.h" #include "private/qdeclarativelistmodel_p.h" @@ -56,7 +55,6 @@ #include "private/qdeclarativepixmapcache_p.h" #include "private/qdeclarativepropertychanges_p.h" #include "qdeclarativepropertymap.h" -#include "private/qdeclarativespringfollow_p.h" #include "private/qdeclarativespringanimation_p.h" #include "private/qdeclarativestategroup_p.h" #include "private/qdeclarativestateoperations_p.h" @@ -84,7 +82,6 @@ void QDeclarativeUtilModule::defineModule() qmlRegisterType<QDeclarativeColorAnimation>("Qt",4,7,"ColorAnimation"); qmlRegisterType<QDeclarativeConnections>("Qt",4,7,"Connections"); qmlRegisterType<QDeclarativeSmoothedAnimation>("Qt",4,7,"SmoothedAnimation"); - qmlRegisterType<QDeclarativeSmoothedFollow>("Qt",4,7,"SmoothedFollow"); qmlRegisterType<QDeclarativeFontLoader>("Qt",4,7,"FontLoader"); qmlRegisterType<QDeclarativeListElement>("Qt",4,7,"ListElement"); qmlRegisterType<QDeclarativeNumberAnimation>("Qt",4,7,"NumberAnimation"); @@ -98,7 +95,6 @@ void QDeclarativeUtilModule::defineModule() qmlRegisterType<QDeclarativeRotationAnimation>("Qt",4,7,"RotationAnimation"); qmlRegisterType<QDeclarativeScriptAction>("Qt",4,7,"ScriptAction"); qmlRegisterType<QDeclarativeSequentialAnimation>("Qt",4,7,"SequentialAnimation"); - qmlRegisterType<QDeclarativeSpringFollow>("Qt",4,7,"SpringFollow"); qmlRegisterType<QDeclarativeSpringAnimation>("Qt",4,7,"SpringAnimation"); qmlRegisterType<QDeclarativeStateChangeScript>("Qt",4,7,"StateChangeScript"); qmlRegisterType<QDeclarativeStateGroup>("Qt",4,7,"StateGroup"); diff --git a/src/declarative/util/util.pri b/src/declarative/util/util.pri index 0cbcbd7..fd57144 100644 --- a/src/declarative/util/util.pri +++ b/src/declarative/util/util.pri @@ -7,10 +7,8 @@ SOURCES += \ $$PWD/qdeclarativepackage.cpp \ $$PWD/qdeclarativeanimation.cpp \ $$PWD/qdeclarativesystempalette.cpp \ - $$PWD/qdeclarativespringfollow.cpp \ $$PWD/qdeclarativespringanimation.cpp \ $$PWD/qdeclarativesmoothedanimation.cpp \ - $$PWD/qdeclarativesmoothedfollow.cpp \ $$PWD/qdeclarativestate.cpp\ $$PWD/qdeclarativetransitionmanager.cpp \ $$PWD/qdeclarativestateoperations.cpp \ @@ -39,10 +37,8 @@ HEADERS += \ $$PWD/qdeclarativeanimation_p.h \ $$PWD/qdeclarativeanimation_p_p.h \ $$PWD/qdeclarativesystempalette_p.h \ - $$PWD/qdeclarativespringfollow_p.h \ $$PWD/qdeclarativespringanimation_p.h \ $$PWD/qdeclarativesmoothedanimation_p.h \ - $$PWD/qdeclarativesmoothedfollow_p.h \ $$PWD/qdeclarativesmoothedanimation_p_p.h \ $$PWD/qdeclarativestate_p.h\ $$PWD/qdeclarativestateoperations_p.h \ diff --git a/src/gui/kernel/qsoftkeymanager.cpp b/src/gui/kernel/qsoftkeymanager.cpp index 04e4685..54e6317 100644 --- a/src/gui/kernel/qsoftkeymanager.cpp +++ b/src/gui/kernel/qsoftkeymanager.cpp @@ -162,6 +162,7 @@ void QSoftKeyManager::sendKeyEvent() void QSoftKeyManager::updateSoftKeys() { + QSoftKeyManager::instance()->d_func()->pendingUpdate = true; QEvent *event = new QEvent(QEvent::UpdateSoftKeys); QApplication::postEvent(QSoftKeyManager::instance(), event); } @@ -250,6 +251,7 @@ bool QSoftKeyManager::handleUpdateSoftKeys() } d->updateSoftKeys_sys(); + d->pendingUpdate = false; return true; } @@ -275,6 +277,9 @@ bool QSoftKeyManager::event(QEvent *e) #ifdef Q_WS_S60 bool QSoftKeyManager::handleCommand(int command) { + if (QSoftKeyManager::instance()->d_func()->pendingUpdate) + (void)QSoftKeyManager::instance()->handleUpdateSoftKeys(); + return static_cast<QSoftKeyManagerPrivateS60*>(QSoftKeyManager::instance()->d_func())->handleCommand(command); } #endif diff --git a/src/gui/kernel/qsoftkeymanager_common_p.h b/src/gui/kernel/qsoftkeymanager_common_p.h index 04ddf7d..1b364d4 100644 --- a/src/gui/kernel/qsoftkeymanager_common_p.h +++ b/src/gui/kernel/qsoftkeymanager_common_p.h @@ -71,7 +71,7 @@ protected: QHash<QAction*, Qt::Key> keyedActions; QMultiHash<int, QAction*> requestedSoftKeyActions; QWidget *initialSoftKeySource; - + bool pendingUpdate; }; QT_END_NAMESPACE diff --git a/src/gui/text/qtextcursor.cpp b/src/gui/text/qtextcursor.cpp index 63aa946..daa40a1 100644 --- a/src/gui/text/qtextcursor.cpp +++ b/src/gui/text/qtextcursor.cpp @@ -81,6 +81,7 @@ QTextCursorPrivate::QTextCursorPrivate(const QTextCursorPrivate &rhs) currentCharFormat = rhs.currentCharFormat; visualNavigation = rhs.visualNavigation; keepPositionOnInsert = rhs.keepPositionOnInsert; + changed = rhs.changed; priv->addCursor(this); } diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp index 9bcf8b4..7b3f985 100644 --- a/src/gui/text/qtextdocument_p.cpp +++ b/src/gui/text/qtextdocument_p.cpp @@ -205,6 +205,7 @@ QTextDocumentPrivate::QTextDocumentPrivate() undoEnabled = true; inContentsChange = false; + blockCursorAdjustment = false; defaultTextOption.setTabStop(80); // same as in qtextengine.cpp defaultTextOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); @@ -669,7 +670,14 @@ void QTextDocumentPrivate::remove(int pos, int length, QTextUndoCommand::Operati { if (length == 0) return; + blockCursorAdjustment = true; move(pos, -1, length, op); + blockCursorAdjustment = false; + foreach (QTextCursorPrivate *curs, cursors) { + if (curs->adjustPosition(pos, -length, op) == QTextCursorPrivate::CursorMoved) { + curs->changed = true; + } + } } void QTextDocumentPrivate::setCharFormat(int pos, int length, const QTextCharFormat &newFormat, FormatChangeMode mode) @@ -1221,12 +1229,15 @@ void QTextDocumentPrivate::finishEdit() } } + QList<QTextCursor> changedCursors; foreach (QTextCursorPrivate *curs, cursors) { if (curs->changed) { curs->changed = false; - emit q->cursorPositionChanged(QTextCursor(curs)); + changedCursors.append(QTextCursor(curs)); } } + foreach (const QTextCursor &cursor, changedCursors) + emit q->cursorPositionChanged(cursor); contentsChanged(); @@ -1268,9 +1279,13 @@ void QTextDocumentPrivate::adjustDocumentChangesAndCursors(int from, int addedOr if (!editBlock) ++revision; - foreach (QTextCursorPrivate *curs, cursors) { - if (curs->adjustPosition(from, addedOrRemoved, op) == QTextCursorPrivate::CursorMoved) { - curs->changed = true; + if (blockCursorAdjustment) { + ; // postpone, will be called again from QTextDocumentPrivate::remove() + } else { + foreach (QTextCursorPrivate *curs, cursors) { + if (curs->adjustPosition(from, addedOrRemoved, op) == QTextCursorPrivate::CursorMoved) { + curs->changed = true; + } } } diff --git a/src/gui/text/qtextdocument_p.h b/src/gui/text/qtextdocument_p.h index b9d5f5a..b46d01c 100644 --- a/src/gui/text/qtextdocument_p.h +++ b/src/gui/text/qtextdocument_p.h @@ -345,6 +345,7 @@ public: int maximumBlockCount; uint needsEnsureMaximumBlockCount : 1; uint inContentsChange : 1; + uint blockCursorAdjustment : 1; QSizeF pageSize; QString title; QString url; diff --git a/src/network/network.pro b/src/network/network.pro index 7ed7d3a..5e33080 100644 --- a/src/network/network.pro +++ b/src/network/network.pro @@ -28,4 +28,19 @@ QMAKE_LIBS += $$QMAKE_LIBS_NETWORK symbian { TARGET.UID3=0x2001B2DE LIBS += -lesock -linsock -lcertstore -lefsrv -lctframework + + # Partial upgrade SIS file + vendorinfo = \ + "; Localised Vendor name" \ + "%{\"Nokia, Qt\"}" \ + " " \ + "; Unique Vendor name" \ + ":\"Nokia, Qt\"" \ + " " + pu_header = "; Partial upgrade package for testing QtGui changes without reinstalling everything" \ + "$${LITERAL_HASH}{\"Qt network\"}, (0x2001E61C), $${QT_MAJOR_VERSION},$${QT_MINOR_VERSION},$${QT_PATCH_VERSION}, TYPE=PU" + partial_upgrade.pkg_prerules = pu_header vendorinfo + partial_upgrade.sources = $$QMAKE_LIBDIR_QT/QtNetwork.dll + partial_upgrade.path = c:/sys/bin + DEPLOYMENT = partial_upgrade $$DEPLOYMENT } diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def index 80ba423..e96f83f 100644 --- a/src/s60installs/bwins/QtDeclarativeu.def +++ b/src/s60installs/bwins/QtDeclarativeu.def @@ -751,7 +751,7 @@ EXPORTS ?paint@QDeclarativeItem@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 750 NONAME ; void QDeclarativeItem::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) ?send@QPacketProtocol@@QAE?AVQPacketAutoSend@@XZ @ 751 NONAME ; class QPacketAutoSend QPacketProtocol::send(void) ?countChanged@QDeclarativeListModel@@IAEXXZ @ 752 NONAME ; void QDeclarativeListModel::countChanged(void) - ?setBindingForObject@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugExpressionQuery@@HABVQString@@ABVQVariant@@_NPAVQObject@@@Z @ 753 NONAME ; class QDeclarativeDebugExpressionQuery * QDeclarativeEngineDebug::setBindingForObject(int, class QString const &, class QVariant const &, bool, class QObject *) + ?setBindingForObject@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugExpressionQuery@@HABVQString@@ABVQVariant@@_NPAVQObject@@@Z @ 753 NONAME ABSENT ; class QDeclarativeDebugExpressionQuery * QDeclarativeEngineDebug::setBindingForObject(int, class QString const &, class QVariant const &, bool, class QObject *) ??0QDeclarativeGridScaledImage@@QAE@PAVQIODevice@@@Z @ 754 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(class QIODevice *) ??_EQDeclarativeBinding@@UAE@I@Z @ 755 NONAME ; QDeclarativeBinding::~QDeclarativeBinding(unsigned int) ?baseMetaObject@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 756 NONAME ; struct QMetaObject const * QDeclarativeType::baseMetaObject(void) const @@ -1668,4 +1668,11 @@ EXPORTS ??0QDeclarativePixmap@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@@Z @ 1667 NONAME ; QDeclarativePixmap::QDeclarativePixmap(class QDeclarativeEngine *, class QUrl const &, class QSize const &) ?url@QDeclarativePixmap@@QBEABVQUrl@@XZ @ 1668 NONAME ; class QUrl const & QDeclarativePixmap::url(void) const ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@_N@Z @ 1669 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, class QSize const &, bool) + ?imageType@QDeclarativeImageProvider@@QBE?AW4ImageType@1@XZ @ 1670 NONAME ; enum QDeclarativeImageProvider::ImageType QDeclarativeImageProvider::imageType(void) const + ?qtAnimationStateChanged@QDeclarativeBehavior@@AAEXW4State@QAbstractAnimation@@0@Z @ 1671 NONAME ; void QDeclarativeBehavior::qtAnimationStateChanged(enum QAbstractAnimation::State, enum QAbstractAnimation::State) + ?requestImage@QDeclarativeImageProvider@@UAE?AVQImage@@ABVQString@@PAVQSize@@ABV4@@Z @ 1672 NONAME ; class QImage QDeclarativeImageProvider::requestImage(class QString const &, class QSize *, class QSize const &) + ?requestPixmap@QDeclarativeImageProvider@@UAE?AVQPixmap@@ABVQString@@PAVQSize@@ABV4@@Z @ 1673 NONAME ; class QPixmap QDeclarativeImageProvider::requestPixmap(class QString const &, class QSize *, class QSize const &) + ?setBindingForObject@QDeclarativeEngineDebug@@QAE_NHABVQString@@ABVQVariant@@_N@Z @ 1674 NONAME ; bool QDeclarativeEngineDebug::setBindingForObject(int, class QString const &, class QVariant const &, bool) + ??0QDeclarativeImageProvider@@QAE@W4ImageType@0@@Z @ 1675 NONAME ; QDeclarativeImageProvider::QDeclarativeImageProvider(enum QDeclarativeImageProvider::ImageType) + ?setMethodBody@QDeclarativeEngineDebug@@QAE_NHABVQString@@0@Z @ 1676 NONAME ; bool QDeclarativeEngineDebug::setMethodBody(int, class QString const &, class QString const &) diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def index 8c59b18..083e07f 100644 --- a/src/s60installs/eabi/QtDeclarativeu.def +++ b/src/s60installs/eabi/QtDeclarativeu.def @@ -691,7 +691,7 @@ EXPORTS _ZN23QDeclarativeEngineDebug16staticMetaObjectE @ 690 NONAME DATA 16 _ZN23QDeclarativeEngineDebug17queryRootContextsERK32QDeclarativeDebugEngineReferenceP7QObject @ 691 NONAME _ZN23QDeclarativeEngineDebug19getStaticMetaObjectEv @ 692 NONAME - _ZN23QDeclarativeEngineDebug19setBindingForObjectEiRK7QStringRK8QVariantbP7QObject @ 693 NONAME + _ZN23QDeclarativeEngineDebug19setBindingForObjectEiRK7QStringRK8QVariantbP7QObject @ 693 NONAME ABSENT _ZN23QDeclarativeEngineDebug20queryObjectRecursiveERK32QDeclarativeDebugObjectReferenceP7QObject @ 694 NONAME _ZN23QDeclarativeEngineDebug21queryAvailableEnginesEP7QObject @ 695 NONAME _ZN23QDeclarativeEngineDebug21queryExpressionResultEiRK7QStringP7QObject @ 696 NONAME @@ -1698,4 +1698,12 @@ EXPORTS _ZNK18QDeclarativePixmap7isErrorEv @ 1697 NONAME _ZNK18QDeclarativePixmap7isReadyEv @ 1698 NONAME _ZNK18QDeclarativePixmap9isLoadingEv @ 1699 NONAME + _ZN20QDeclarativeBehavior23qtAnimationStateChangedEN18QAbstractAnimation5StateES1_ @ 1700 NONAME + _ZN23QDeclarativeEngineDebug13setMethodBodyEiRK7QStringS2_ @ 1701 NONAME + _ZN23QDeclarativeEngineDebug19setBindingForObjectEiRK7QStringRK8QVariantb @ 1702 NONAME + _ZN25QDeclarativeImageProvider12requestImageERK7QStringP5QSizeRKS3_ @ 1703 NONAME + _ZN25QDeclarativeImageProvider13requestPixmapERK7QStringP5QSizeRKS3_ @ 1704 NONAME + _ZN25QDeclarativeImageProviderC1ENS_9ImageTypeE @ 1705 NONAME + _ZN25QDeclarativeImageProviderC2ENS_9ImageTypeE @ 1706 NONAME + _ZNK25QDeclarativeImageProvider9imageTypeEv @ 1707 NONAME |