summaryrefslogtreecommitdiffstats
path: root/qtinterface/tqtimer.h
diff options
context:
space:
mode:
Diffstat (limited to 'qtinterface/tqtimer.h')
-rw-r--r--qtinterface/tqtimer.h111
1 files changed, 111 insertions, 0 deletions
diff --git a/qtinterface/tqtimer.h b/qtinterface/tqtimer.h
new file mode 100644
index 0000000..4df2502
--- /dev/null
+++ b/qtinterface/tqtimer.h
@@ -0,0 +1,111 @@
+/*
+
+Copyright (C) 2010 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+
+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 <tqt.h>
+
+#ifdef USE_QT3
+
+// Reimplement the QTimer class
+// For Qt3, no changes are needed
+
+// Linker tricks required to override a class without changing its name
+#define QTimer IQTimer
+#include <qtimer.h>
+#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_QT3
+
+// #ifdef USE_QT4
+//
+// // Reimplement the QTimer class
+// // For Qt4, a few overrides are required
+// // Specifically, these functions were altered:
+// // OLD: NEW:
+// //
+//
+// #include <qtimer.h>
+//
+// 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 */ \ No newline at end of file