/* Copyright (C) 2010 Timothy Pearson This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef TQTIMER_H #define TQTIMER_H #include #ifdef USE_QT3 // Reimplement the QTimer class // For Qt3, no changes are needed #include #endif // USE_QT3 #ifdef USE_QT4 // Reimplement the QTimer class // For Qt4, some changes are needed // Linker tricks required to override a class without changing its name #define QTimer IQTimer #include #undef QTimer class QTimer : public IQTimer { // This is taken straight from the Qt header file, with all Q_OBJECT, slot, and similar keywords stripped out. // This is the last and most obnoxious part of the linker tricks mentioned above // Essentially, the compiler needs to know that these Q functions exist so that the above I functions // are not attempted to link. Instead, these empty declarations allow the linker to pull in the complete Q function // from the Qt toolkit in use. Convoluted, yes, but it should make maintinance MUCH easier as the Qt API changes. public: QTimer( QObject *parent=0, const char *name=0 ); ~QTimer(); bool isActive() const; int start( int msec, bool sshot = FALSE ); void changeInterval( int msec ); void stop(); static void singleShot( int msec, QObject *receiver, const char *member ); int timerId() const { return id; } void timeout(); protected: bool event( QEvent * ); private: int id; uint single : 1; uint nulltimer : 1; private: // Disabled copy constructor and operator= #if defined(Q_DISABLE_COPY) QTimer( const QTimer & ); QTimer &operator=( const QTimer & ); #endif // End Qt header file copy // This is where the new member functions should be placed // Unlike the above copied block, these members must be defined in the associated .cpp file, // and they should usually do something. Feel free to include as many Qt files as needed // in the cpp source file, but DO NOT include them in this header file. int myNewFunction(int parameter_one); }; inline bool QTimer::isActive() const { return id >= 0; } #endif // USE_QT4 // #ifdef USE_QT4 // // // Reimplement the QTimer class // // For Qt4, a few overrides are required // // Specifically, these functions were altered: // // OLD: NEW: // // // // #include // // class Q_EXPORT TQTimer : public QTimer // { // Q_OBJECT // public: // TQTimer( QObject *parent=0, const char *name=0 ); // ~TQTimer(); // // // FIXME: Example ONLY // virtual void oldFunction (); // }; // // #endif // USE_QT4 #endif /* TQTIMER_H */