From 72d005edf85d2fa49a8543ae4c23f7a2268a589f Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Tue, 14 Jul 2009 15:10:28 +1000 Subject: Move QmlTimer to util/ --- examples/declarative/loader/Button.qml | 14 ++ src/declarative/extra/qmltimer.cpp | 233 --------------------------------- src/declarative/extra/qmltimer.h | 103 --------------- src/declarative/util/qmltimer.cpp | 233 +++++++++++++++++++++++++++++++++ src/declarative/util/qmltimer.h | 103 +++++++++++++++ 5 files changed, 350 insertions(+), 336 deletions(-) create mode 100644 examples/declarative/loader/Button.qml delete mode 100644 src/declarative/extra/qmltimer.cpp delete mode 100644 src/declarative/extra/qmltimer.h create mode 100644 src/declarative/util/qmltimer.cpp create mode 100644 src/declarative/util/qmltimer.h diff --git a/examples/declarative/loader/Button.qml b/examples/declarative/loader/Button.qml new file mode 100644 index 0000000..3efedc4 --- /dev/null +++ b/examples/declarative/loader/Button.qml @@ -0,0 +1,14 @@ +Rect { + id: Container + + property var text + signal clicked + + height: Text.height + 10 + width: Text.width + 20 + pen.width: 1 + radius: 4 + color: "grey" + MouseRegion { anchors.fill: parent; onClicked: Container.clicked() } + Text { id: Text; anchors.centeredIn:parent; font.size: 10; text: parent.text } +} diff --git a/src/declarative/extra/qmltimer.cpp b/src/declarative/extra/qmltimer.cpp deleted file mode 100644 index 4af83d3..0000000 --- a/src/declarative/extra/qmltimer.cpp +++ /dev/null @@ -1,233 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** Contact: Qt Software Information (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 either Technology Preview License Agreement or the -** Beta Release License Agreement. -** -** 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.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "QtCore/qcoreapplication.h" -#include "QtCore/qpauseanimation.h" -#include "private/qobject_p.h" -#include "qmltimer.h" -#include "qdebug.h" - -QT_BEGIN_NAMESPACE - -QML_DEFINE_TYPE(QmlTimer,Timer) - -class QmlTimerPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QmlTimer) -public: - QmlTimerPrivate() - : interval(1000), running(false), repeating(false), triggeredOnStart(false) - , componentComplete(false) {} - int interval; - bool running; - bool repeating; - bool triggeredOnStart; - QPauseAnimation pause; - bool componentComplete; -}; - -/*! - \qmlclass Timer QFxTimer - \brief The Timer item triggers a handler at a specified interval. - - A timer can be used to trigger an action either once, or repeatedly - at a given interval. - - \qml - Timer { - interval: 500; running: true; repeat: true - onTriggered: Time.text = Date().toString() - } - Text { - id: Time - } - \endqml - -*/ - -QmlTimer::QmlTimer(QObject *parent) - : QObject(*(new QmlTimerPrivate), parent) -{ - Q_D(QmlTimer); - connect(&d->pause, SIGNAL(currentLoopChanged(int)), this, SLOT(ticked())); - connect(&d->pause, SIGNAL(finished()), this, SLOT(ticked())); - connect(&d->pause, SIGNAL(stateChanged(QAbstractAnimation::State,QAbstractAnimation::State)) - , this, SLOT(stateChanged(QAbstractAnimation::State,QAbstractAnimation::State))); - d->pause.setLoopCount(1); - d->pause.setDuration(d->interval); -} - -/*! - \qmlproperty int Timer::interval - - Sets the \a interval in milliseconds between triggering. -*/ -void QmlTimer::setInterval(int interval) -{ - Q_D(QmlTimer); - if (interval != d->interval) { - d->interval = interval; - update(); - } -} - -int QmlTimer::interval() const -{ - Q_D(const QmlTimer); - return d->interval; -} - -/*! - \qmlproperty bool Timer::running - - If set to true, starts the timer; otherwise stops the timer. - For a non-repeating timer, \a running will be set to false after the - timer has been triggered. - - \sa repeat -*/ -bool QmlTimer::isRunning() const -{ - Q_D(const QmlTimer); - return d->running; -} - -void QmlTimer::setRunning(bool running) -{ - Q_D(QmlTimer); - if (d->running != running) { - d->running = running; - emit runningChanged(); - update(); - } -} - -/*! - \qmlproperty bool Timer::repeat - - If \a repeat is true the timer will be triggered repeatedly at the - specified interval; otherwise, the timer will trigger once at the - specified interval and then stop (i.e. running will be set to false). - - \sa running -*/ -bool QmlTimer::isRepeating() const -{ - Q_D(const QmlTimer); - return d->repeating; -} - -void QmlTimer::setRepeating(bool repeating) -{ - Q_D(QmlTimer); - if (repeating != d->repeating) { - d->repeating = repeating; - update(); - } -} - -/*! - \qmlproperty bool Timer::triggeredOnStart - - If \a triggeredOnStart is true, the timer will be triggered immediately - when started, and subsequently at the specified interval. - - \sa running -*/ -bool QmlTimer::triggeredOnStart() const -{ - Q_D(const QmlTimer); - return d->triggeredOnStart; -} - -void QmlTimer::setTriggeredOnStart(bool triggeredOnStart) -{ - Q_D(QmlTimer); - if (d->triggeredOnStart != triggeredOnStart) { - d->triggeredOnStart = triggeredOnStart; - update(); - } -} - -void QmlTimer::update() -{ - Q_D(QmlTimer); - if (!d->componentComplete) - return; - d->pause.stop(); - if (d->running) { - d->pause.setLoopCount(d->repeating ? -1 : 1); - d->pause.setDuration(d->interval); - d->pause.start(); - if (d->triggeredOnStart) { - QCoreApplication::removePostedEvents(this, QEvent::MetaCall); - QMetaObject::invokeMethod(this, "ticked", Qt::QueuedConnection); - } - } -} - -void QmlTimer::componentComplete() -{ - Q_D(QmlTimer); - d->componentComplete = true; - update(); -} - -/*! - \qmlsignal Timer::onTriggered - - This handler is called when the Timer is triggered. -*/ -void QmlTimer::ticked() -{ - emit triggered(); -} - -void QmlTimer::stateChanged(QAbstractAnimation::State, QAbstractAnimation::State state) -{ - Q_D(QmlTimer); - if (d->running && state != QAbstractAnimation::Running) { - d->running = false; - emit runningChanged(); - } -} - -QT_END_NAMESPACE diff --git a/src/declarative/extra/qmltimer.h b/src/declarative/extra/qmltimer.h deleted file mode 100644 index 0df4cb9..0000000 --- a/src/declarative/extra/qmltimer.h +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** Contact: Qt Software Information (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 either Technology Preview License Agreement or the -** Beta Release License Agreement. -** -** 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.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QMLTIMER_H -#define QMLTIMER_H - -#include -#include -#include -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QmlTimerPrivate; -class Q_DECLARATIVE_EXPORT QmlTimer : public QObject, public QmlParserStatus -{ - Q_OBJECT - Q_DECLARE_PRIVATE(QmlTimer) - Q_INTERFACES(QmlParserStatus) - Q_PROPERTY(int interval READ interval WRITE setInterval) - Q_PROPERTY(bool running READ isRunning WRITE setRunning NOTIFY runningChanged) - Q_PROPERTY(bool repeat READ isRepeating WRITE setRepeating) - Q_PROPERTY(bool triggeredOnStart READ triggeredOnStart WRITE setTriggeredOnStart) - -public: - QmlTimer(QObject *parent=0); - - void setInterval(int interval); - int interval() const; - - bool isRunning() const; - void setRunning(bool running); - - bool isRepeating() const; - void setRepeating(bool repeating); - - bool triggeredOnStart() const; - void setTriggeredOnStart(bool triggeredOnStart); - -protected: - void componentComplete(); - -Q_SIGNALS: - void triggered(); - void runningChanged(); - -private: - void update(); - -private Q_SLOTS: - void ticked(); - void stateChanged(QAbstractAnimation::State,QAbstractAnimation::State); -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QmlTimer) - -QT_END_HEADER - -#endif diff --git a/src/declarative/util/qmltimer.cpp b/src/declarative/util/qmltimer.cpp new file mode 100644 index 0000000..4af83d3 --- /dev/null +++ b/src/declarative/util/qmltimer.cpp @@ -0,0 +1,233 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (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 either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "QtCore/qcoreapplication.h" +#include "QtCore/qpauseanimation.h" +#include "private/qobject_p.h" +#include "qmltimer.h" +#include "qdebug.h" + +QT_BEGIN_NAMESPACE + +QML_DEFINE_TYPE(QmlTimer,Timer) + +class QmlTimerPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QmlTimer) +public: + QmlTimerPrivate() + : interval(1000), running(false), repeating(false), triggeredOnStart(false) + , componentComplete(false) {} + int interval; + bool running; + bool repeating; + bool triggeredOnStart; + QPauseAnimation pause; + bool componentComplete; +}; + +/*! + \qmlclass Timer QFxTimer + \brief The Timer item triggers a handler at a specified interval. + + A timer can be used to trigger an action either once, or repeatedly + at a given interval. + + \qml + Timer { + interval: 500; running: true; repeat: true + onTriggered: Time.text = Date().toString() + } + Text { + id: Time + } + \endqml + +*/ + +QmlTimer::QmlTimer(QObject *parent) + : QObject(*(new QmlTimerPrivate), parent) +{ + Q_D(QmlTimer); + connect(&d->pause, SIGNAL(currentLoopChanged(int)), this, SLOT(ticked())); + connect(&d->pause, SIGNAL(finished()), this, SLOT(ticked())); + connect(&d->pause, SIGNAL(stateChanged(QAbstractAnimation::State,QAbstractAnimation::State)) + , this, SLOT(stateChanged(QAbstractAnimation::State,QAbstractAnimation::State))); + d->pause.setLoopCount(1); + d->pause.setDuration(d->interval); +} + +/*! + \qmlproperty int Timer::interval + + Sets the \a interval in milliseconds between triggering. +*/ +void QmlTimer::setInterval(int interval) +{ + Q_D(QmlTimer); + if (interval != d->interval) { + d->interval = interval; + update(); + } +} + +int QmlTimer::interval() const +{ + Q_D(const QmlTimer); + return d->interval; +} + +/*! + \qmlproperty bool Timer::running + + If set to true, starts the timer; otherwise stops the timer. + For a non-repeating timer, \a running will be set to false after the + timer has been triggered. + + \sa repeat +*/ +bool QmlTimer::isRunning() const +{ + Q_D(const QmlTimer); + return d->running; +} + +void QmlTimer::setRunning(bool running) +{ + Q_D(QmlTimer); + if (d->running != running) { + d->running = running; + emit runningChanged(); + update(); + } +} + +/*! + \qmlproperty bool Timer::repeat + + If \a repeat is true the timer will be triggered repeatedly at the + specified interval; otherwise, the timer will trigger once at the + specified interval and then stop (i.e. running will be set to false). + + \sa running +*/ +bool QmlTimer::isRepeating() const +{ + Q_D(const QmlTimer); + return d->repeating; +} + +void QmlTimer::setRepeating(bool repeating) +{ + Q_D(QmlTimer); + if (repeating != d->repeating) { + d->repeating = repeating; + update(); + } +} + +/*! + \qmlproperty bool Timer::triggeredOnStart + + If \a triggeredOnStart is true, the timer will be triggered immediately + when started, and subsequently at the specified interval. + + \sa running +*/ +bool QmlTimer::triggeredOnStart() const +{ + Q_D(const QmlTimer); + return d->triggeredOnStart; +} + +void QmlTimer::setTriggeredOnStart(bool triggeredOnStart) +{ + Q_D(QmlTimer); + if (d->triggeredOnStart != triggeredOnStart) { + d->triggeredOnStart = triggeredOnStart; + update(); + } +} + +void QmlTimer::update() +{ + Q_D(QmlTimer); + if (!d->componentComplete) + return; + d->pause.stop(); + if (d->running) { + d->pause.setLoopCount(d->repeating ? -1 : 1); + d->pause.setDuration(d->interval); + d->pause.start(); + if (d->triggeredOnStart) { + QCoreApplication::removePostedEvents(this, QEvent::MetaCall); + QMetaObject::invokeMethod(this, "ticked", Qt::QueuedConnection); + } + } +} + +void QmlTimer::componentComplete() +{ + Q_D(QmlTimer); + d->componentComplete = true; + update(); +} + +/*! + \qmlsignal Timer::onTriggered + + This handler is called when the Timer is triggered. +*/ +void QmlTimer::ticked() +{ + emit triggered(); +} + +void QmlTimer::stateChanged(QAbstractAnimation::State, QAbstractAnimation::State state) +{ + Q_D(QmlTimer); + if (d->running && state != QAbstractAnimation::Running) { + d->running = false; + emit runningChanged(); + } +} + +QT_END_NAMESPACE diff --git a/src/declarative/util/qmltimer.h b/src/declarative/util/qmltimer.h new file mode 100644 index 0000000..0df4cb9 --- /dev/null +++ b/src/declarative/util/qmltimer.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (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 either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMLTIMER_H +#define QMLTIMER_H + +#include +#include +#include +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +class QmlTimerPrivate; +class Q_DECLARATIVE_EXPORT QmlTimer : public QObject, public QmlParserStatus +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QmlTimer) + Q_INTERFACES(QmlParserStatus) + Q_PROPERTY(int interval READ interval WRITE setInterval) + Q_PROPERTY(bool running READ isRunning WRITE setRunning NOTIFY runningChanged) + Q_PROPERTY(bool repeat READ isRepeating WRITE setRepeating) + Q_PROPERTY(bool triggeredOnStart READ triggeredOnStart WRITE setTriggeredOnStart) + +public: + QmlTimer(QObject *parent=0); + + void setInterval(int interval); + int interval() const; + + bool isRunning() const; + void setRunning(bool running); + + bool isRepeating() const; + void setRepeating(bool repeating); + + bool triggeredOnStart() const; + void setTriggeredOnStart(bool triggeredOnStart); + +protected: + void componentComplete(); + +Q_SIGNALS: + void triggered(); + void runningChanged(); + +private: + void update(); + +private Q_SLOTS: + void ticked(); + void stateChanged(QAbstractAnimation::State,QAbstractAnimation::State); +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QmlTimer) + +QT_END_HEADER + +#endif -- cgit v0.12