diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2012-10-05 10:42:10 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-16 15:29:15 +0200 |
commit | 7501d55ae005cf9a155a6bcbeac468bfde40177d (patch) | |
tree | 2247bea576be9e45b241e50c1db33532211c7f0d /src/widgets/styles/qwindowsvistastyle_p.h | |
parent | e437051ff51d57bcc6937dc23fe6a77bf9897130 (diff) |
Introduce (private) QStyleAnimation
QStyleAnimation handles style animations in a generic fashion by
sending StyleAnimationUpdate events back to the animation target
instead of calling QWidget::update() directly. This decouples style
animations from widgets and makes it possible to run style animations
for QQuickItems (ie. the desktop components).
The next step is to add "QObject* QStyleOption::target" and use that
everywhere instead of the widget pointer passed to various QStyle
methods.
Change-Id: Ib963c54872805fc3f0123ff922f82c9962a68b90
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Diffstat (limited to 'src/widgets/styles/qwindowsvistastyle_p.h')
-rw-r--r-- | src/widgets/styles/qwindowsvistastyle_p.h | 45 |
1 files changed, 16 insertions, 29 deletions
diff --git a/src/widgets/styles/qwindowsvistastyle_p.h b/src/widgets/styles/qwindowsvistastyle_p.h index faf3777025..1d427fe45c 100644 --- a/src/widgets/styles/qwindowsvistastyle_p.h +++ b/src/widgets/styles/qwindowsvistastyle_p.h @@ -57,6 +57,7 @@ #if !defined(QT_NO_STYLE_WINDOWSVISTA) #include <private/qwindowsxpstyle_p.h> +#include <private/qstyleanimation_p.h> #include <private/qpaintengine_raster_p.h> #include <qlibrary.h> #include <qpaintengine.h> @@ -83,7 +84,6 @@ #include <qdialogbuttonbox.h> #include <qinputdialog.h> #include <qtableview.h> -#include <qbasictimer.h> #include <qdatetime.h> #include <qcommandlinkbutton.h> @@ -135,57 +135,50 @@ QT_BEGIN_NAMESPACE #define TDLG_SECONDARYPANEL 8 #endif -class QWindowsVistaAnimation +class QWindowsVistaAnimation : public QStyleAnimation { -public : - QWindowsVistaAnimation() : _running(true) { } + Q_OBJECT +public: + QWindowsVistaAnimation(QObject *target) : QStyleAnimation(target), _duration(-1) { } virtual ~QWindowsVistaAnimation() { } - QWidget * widget() const { return _widget; } - bool running() const { return _running; } - const QTime &startTime() const { return _startTime; } - void setRunning(bool val) { _running = val; } - void setWidget(QWidget *widget) { _widget = widget; } - void setStartTime(const QTime &startTime) { _startTime = startTime; } virtual void paint(QPainter *painter, const QStyleOption *option); + virtual bool isUpdateNeeded() const; + virtual int duration() const { return _duration; } + //set time in ms to complete a state transition / pulse cycle + void setDuration(int duration) { _duration = duration; } protected: void drawBlendedImage(QPainter *painter, QRect rect, float value); - QTime _startTime; - QPointer<QWidget> _widget; QImage _primaryImage; QImage _secondaryImage; QImage _tempImage; - bool _running; + int _duration; }; // Handles state transition animations class QWindowsVistaTransition : public QWindowsVistaAnimation { -public : - QWindowsVistaTransition() : QWindowsVistaAnimation() {} + Q_OBJECT +public: + QWindowsVistaTransition(QObject *target) : QWindowsVistaAnimation(target) {} virtual ~QWindowsVistaTransition() { } - void setDuration(int duration) { _duration = duration; } void setStartImage(const QImage &image) { _primaryImage = image; } void setEndImage(const QImage &image) { _secondaryImage = image; } virtual void paint(QPainter *painter, const QStyleOption *option); - int duration() const { return _duration; } - int _duration; //set time in ms to complete a state transition }; // Handles pulse animations (default buttons) class QWindowsVistaPulse: public QWindowsVistaAnimation { -public : - QWindowsVistaPulse() : QWindowsVistaAnimation() {} + Q_OBJECT +public: + QWindowsVistaPulse(QObject *target) : QWindowsVistaAnimation(target) {} virtual ~QWindowsVistaPulse() { } - void setDuration(int duration) { _duration = duration; } void setPrimaryImage(const QImage &image) { _primaryImage = image; } void setAlternateImage(const QImage &image) { _secondaryImage = image; } virtual void paint(QPainter *painter, const QStyleOption *option); - int duration() const { return _duration; } - int _duration; //time in ms to complete a pulse cycle }; @@ -198,18 +191,12 @@ public: ~QWindowsVistaStylePrivate(); static bool resolveSymbols(); static inline bool useVista(); - void startAnimation(QWindowsVistaAnimation *); - void stopAnimation(const QWidget *); - QWindowsVistaAnimation* widgetAnimation(const QWidget *) const; - void timerEvent(); bool transitionsEnabled() const; private: bool initTreeViewTheming(); void cleanupTreeViewTheming(); - QList <QWindowsVistaAnimation*> animations; - QBasicTimer animationTimer; HWND m_treeViewHelper; }; |