summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/src/kernel/tqtimer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tqtinterface/qt4/src/kernel/tqtimer.cpp')
-rw-r--r--tqtinterface/qt4/src/kernel/tqtimer.cpp350
1 files changed, 0 insertions, 350 deletions
diff --git a/tqtinterface/qt4/src/kernel/tqtimer.cpp b/tqtinterface/qt4/src/kernel/tqtimer.cpp
deleted file mode 100644
index c3ddda5..0000000
--- a/tqtinterface/qt4/src/kernel/tqtimer.cpp
+++ /dev/null
@@ -1,350 +0,0 @@
-/****************************************************************************
-**
-** Implementation of TQTimer class
-**
-** Created : 931111
-**
-** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA.
-**
-** This file is part of the kernel module of the TQt GUI Toolkit.
-**
-** This file may be used under the terms of the GNU General
-** Public License versions 2.0 or 3.0 as published by the Free
-** Software Foundation and appearing in the files LICENSE.GPL2
-** and LICENSE.GPL3 included in the packaging of this file.
-** Alternatively you may (at your option) use any later version
-** of the GNU General Public License if such license has been
-** publicly approved by Trolltech ASA (or its successors, if any)
-** and the KDE Free TQt Foundation.
-**
-** Please review the following information to ensure GNU General
-** Public Licensing requirements will be met:
-** http://trolltech.com/products/qt/licenses/licensing/opensource/.
-** If you are unsure which license is appropriate for your use, please
-** review the following information:
-** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
-** or contact the sales department at sales@trolltech.com.
-**
-** This file may be used under the terms of the Q Public License as
-** defined by Trolltech ASA and appearing in the file LICENSE.TQPL
-** included in the packaging of this file. Licensees holding valid TQt
-** Commercial licenses may use this file in accordance with the TQt
-** Commercial License Agreement provided with the Software.
-**
-** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
-** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
-** herein.
-**
-**********************************************************************/
-
-#include "tqtimer.h"
-#include "tqsignal.h"
-#include "tqobjectlist.h"
-
-#ifdef USE_QT4
-#include <Qt/qtimer.h>
-#endif // USE_QT4
-
-/*!
- \class TQTimer tqtimer.h
- \brief The TQTimer class provides timer Q_SIGNALS and single-shot timers.
-
- \ingroup time
- \ingroup events
- \mainclass
-
- It uses \link TQTimerEvent timer events\endlink internally to
- provide a more versatile timer. TQTimer is very easy to use:
- create a TQTimer, call start() to start it and connect its
- timeout() to the appropriate Q_SLOTS. When the time is up it will
- emit the timeout() signal.
-
- Note that a TQTimer object is destroyed automatically when its
- parent object is destroyed.
-
- Example:
- \code
- TQTimer *timer = new TQTimer( myObject );
- connect( timer, TQT_SIGNAL(timeout()), myObject, TQT_SLOT(timerDone()) );
- timer->start( 2000, TRUE ); // 2 seconds single-shot timer
- \endcode
-
- You can also use the static singleShot() function to create a
- single shot timer.
-
- As a special case, a TQTimer with timeout 0 times out as soon as
- all the events in the window system's event queue have been
- processed.
-
- This can be used to do heavy work while providing a snappy
- user interface:
- \code
- TQTimer *t = new TQTimer( myObject );
- connect( t, TQT_SIGNAL(timeout()), TQT_SLOT(processOneThing()) );
- t->start( 0, FALSE );
- \endcode
-
- myObject->processOneThing() will be called repeatedly and should
- return quickly (typically after processing one data item) so that
- TQt can deliver events to widgets and stop the timer as soon as it
- has done all its work. This is the traditional way of
- implementing heavy work in GUI applications; multi-threading is
- now becoming available on more and more platforms, and we expect
- that null events will eventually be replaced by threading.
-
- Note that TQTimer's accuracy depends on the underlying operating
- system and hardware. Most platforms support an accuracy of 20ms;
- some provide more. If TQt is unable to deliver the requested
- number of timer clicks, it will silently discard some.
-
- An alternative to using TQTimer is to call TQObject::startTimer()
- for your object and reimplement the TQObject::timerEvent() event
- handler in your class (which must, of course, inherit TQObject).
- The disadvantage is that timerEvent() does not support such
- high-level features as single-shot timers or Q_SIGNALS.
-
- Some operating systems limit the number of timers that may be
- used; TQt tries to work around these limitations.
-*/
-
-
-static const int INV_TIMER = -1; // invalid timer id
-
-
-/*!
- Constructs a timer called \a name, with the parent \a parent.
-
- Note that the parent object's destructor will destroy this timer
- object.
-*/
-
-TQTimer::TQTimer( TQT_BASE_OBJECT_NAME *parent, const char *name )
- : TQObject( parent, name ), id(INV_TIMER), single(0), nulltimer(0)
-{
-}
-
-/*!
- Destroys the timer.
-*/
-
-TQTimer::~TQTimer()
-{
- if ( id != INV_TIMER ) // stop running timer
- stop();
-}
-
-
-/*!
- \fn void TQTimer::timeout()
-
- This signal is emitted when the timer is activated.
-*/
-
-/*!
- \fn bool TQTimer::isActive() const
-
- Returns TRUE if the timer is running (pending); otherwise returns
- FALSE.
-*/
-
-/*!
- \fn int TQTimer::timerId() const
-
- Returns the ID of the timer if the timer is running; otherwise returns
- -1.
-*/
-
-
-/*!
- Starts the timer with a \a msec milliseconds timeout, and returns
- the ID of the timer, or zero when starting the timer failed.
-
- If \a sshot is TRUE, the timer will be activated only once;
- otherwise it will continue until it is stopped.
-
- Any pending timer will be stopped.
-
- \sa singleShot() stop(), changeInterval(), isActive()
-*/
-
-int TQTimer::start( int msec, bool sshot )
-{
- if ( id >=0 && nulltimer && !msec && sshot )
- return id;
- if ( id != INV_TIMER ) // stop running timer
- stop();
- single = sshot;
- nulltimer = ( !msec && sshot );
- return id = startTimer( msec );
-}
-
-
-/*!
- Changes the timeout interval to \a msec milliseconds.
-
- If the timer signal is pending, it will be stopped and restarted;
- otherwise it will be started.
-
- \sa start(), isActive()
-*/
-
-void TQTimer::changeInterval( int msec )
-{
- if ( id == INV_TIMER ) { // create new timer
- start( msec );
- } else {
- killTimer( id ); // restart timer
- id = startTimer( msec );
- }
-}
-
-/*!
- Stops the timer.
-
- \sa start()
-*/
-
-void TQTimer::stop()
-{
- if ( id != INV_TIMER ) {
- killTimer( id );
- id = INV_TIMER;
- }
-}
-
-
-/*!
- \reimp
-*/
-bool TQTimer::event( TQEvent *e )
-{
- if ( e->type() != TQEvent::Timer ) // ignore all other events
- return FALSE;
- if ( single ) // stop single shot timer
- stop();
- emit timeout(); // emit timeout signal
- return TRUE;
-}
-
-
-/*
- The TQSingleShotTimer class is an internal class for implementing
- TQTimer::singleShot(). It starts a timer and emits the signal
- and kills itself when it gets the timeout.
-*/
-
-static TQObjectList *sst_list = 0; // list of single shot timers
-
-static void sst_cleanup()
-{
- if ( sst_list ) {
- sst_list->setAutoDelete( TRUE );
- delete sst_list;
- sst_list = 0;
- }
-}
-
-static void sst_init()
-{
- if ( !sst_list ) {
- sst_list = new TQObjectList;
- TQ_CHECK_PTR( sst_list );
- qAddPostRoutine( sst_cleanup );
- }
-}
-
-
-class TQSingleShotTimer : public TQObject
-{
-public:
- ~TQSingleShotTimer();
- bool start( int msec, TQT_BASE_OBJECT_NAME *r, const char * m );
- bool isActive() const { return timerId > 0; }
-protected:
- bool event( TQEvent * );
-private:
- TQSignal signal;
- int timerId;
-};
-
-extern int qStartTimer( int interval, TQObject *obj ); // implemented in qapp_xxx.cpp
-extern bool qKillTimer( int id );
-
-TQSingleShotTimer::~TQSingleShotTimer()
-{
- if (timerId != 0) {
- qKillTimer(timerId);
- timerId = 0;
- }
-}
-
-bool TQSingleShotTimer::start( int msec, TQT_BASE_OBJECT_NAME *r, const char *m )
-{
- timerId = 0;
- if ( signal.connect(TQT_TQOBJECT(r), m) )
- timerId = qStartTimer( msec, TQT_TQOBJECT(this) );
- return timerId != 0;
-}
-
-bool TQSingleShotTimer::event( TQEvent * )
-{
- qKillTimer( timerId ); // no more timeouts
- signal.activate(); // emit the signal
- signal.disconnect( 0, 0 );
- timerId = 0; // mark as inactive
- return TRUE;
-}
-
-
-/*!
- This static function calls a slot after a given time interval.
-
- It is very convenient to use this function because you do not need
- to bother with a \link TQObject::timerEvent() timerEvent\endlink or
- to create a local TQTimer object.
-
- Example:
- \code
- #include <tqapplication.h>
- #include <tqtimer.h>
-
- int main( int argc, char **argv )
- {
- TQApplication a( argc, argv );
- TQTimer::singleShot( 10*60*1000, &a, TQT_SLOT(quit()) );
- ... // create and show your widgets
- return a.exec();
- }
- \endcode
-
- This sample program automatically terminates after 10 minutes (i.e.
- 600000 milliseconds).
-
- The \a receiver is the receiving object and the \a member is the
- slot. The time interval is \a msec.
-*/
-
-#ifdef USE_QT4
-void TQTimer::singleShot( int msec, TQT_BASE_OBJECT_NAME *receiver, const char *member )
-{
- // Cheat!
- QTimer::singleShot(msec, receiver, member);
-}
-#else // USE_QT4
-void TQTimer::singleShot( int msec, TQT_BASE_OBJECT_NAME *receiver, const char *member )
-{
- if ( !sst_list )
- sst_init();
- // search the list for a free ss timer we could reuse
- TQSingleShotTimer *sst = (TQSingleShotTimer*)sst_list->first();
- while ( sst && sst->isActive() )
- sst = (TQSingleShotTimer*)sst_list->next();
- // create a new one if not successful
- if ( !sst ) {
- sst = new TQSingleShotTimer;
- sst_list->append( sst );
- }
- sst->start(msec, receiver, member);
-}
-#endif // USE_QT4