/* 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. // Also, all inline functions must be converted to simple declarations. // 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: explicit QTimer(QObject *parent = 0); ~QTimer(); inline bool isActive() const; int timerId() const; void setInterval(int msec); int interval() const; inline void setSingleShot(bool singleShot); inline bool isSingleShot() const; static void singleShot(int msec, QObject *receiver, const char *member); void start(int msec); void start(); void stop(); void timeout(); // 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); // Begin Qt header file copy protected: void timerEvent(QTimerEvent *); private: inline int startTimer(int); inline void killTimer(int); }; //inline void QTimer::setSingleShot(bool asingleShot) { single = asingleShot; } // End Qt header file copy #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 */