diff --git a/qtinterface/tqapplication.cpp b/qtinterface/tqapplication.cpp index bac32b4..07fe94a 100644 --- a/qtinterface/tqapplication.cpp +++ b/qtinterface/tqapplication.cpp @@ -20,4 +20,13 @@ Boston, MA 02110-1301, USA. */ #include -#include \ No newline at end of file +#include + +#ifdef USE_QT4 + +void QApplication::processOneEvent() +{ + #warning "!!! WARNING: QApplication::processOneEvent() UNIMPLEMENTED !!!" +} + +#endif // USE_QT4 \ No newline at end of file diff --git a/qtinterface/tqapplication.h b/qtinterface/tqapplication.h index 26e4035..7d88b46 100644 --- a/qtinterface/tqapplication.h +++ b/qtinterface/tqapplication.h @@ -36,9 +36,236 @@ Boston, MA 02110-1301, USA. #ifdef USE_QT4 // Reimplement the QApplication class -// For Qt4, no changes are needed +// For Qt4, some changes are needed -#include +// Linker tricks required to override a class without changing its name +#define QApplication IQApplication +#include +#undef QApplication + +class QApplication : public IQApplication { +// 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. + enum Type { Tty, GuiClient, GuiServer }; + +#ifdef Q_WS_S60 + typedef CApaApplication * (*QS60MainApplicationFactory)(); +#endif + +#ifndef qdoc + QApplication(int &argc, char **argv, int = QT_VERSION); + QApplication(int &argc, char **argv, bool GUIenabled, int = QT_VERSION); + QApplication(int &argc, char **argv, Type, int = QT_VERSION); +#if defined(Q_WS_X11) + QApplication(Display* dpy, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0, int = QT_VERSION); + QApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap= 0, int = QT_VERSION); +#endif +#if defined(Q_WS_S60) + QApplication(QApplication::QS60MainApplicationFactory factory, int &argc, char **argv, int = QT_VERSION); +#endif +#endif + virtual ~QApplication(); + + static Type type(); + + static QStyle *style(); + static void setStyle(QStyle*); + static QStyle *setStyle(const QString&); + enum ColorSpec { NormalColor=0, CustomColor=1, ManyColor=2 }; + static int colorSpec(); + static void setColorSpec(int); + static void setGraphicsSystem(const QString &); + +#ifndef QT_NO_CURSOR + static QCursor *overrideCursor(); + static void setOverrideCursor(const QCursor &); + static void changeOverrideCursor(const QCursor &); + static void restoreOverrideCursor(); +#endif + static QPalette palette(); + static QPalette palette(const QWidget *); + static QPalette palette(const char *className); + static void setPalette(const QPalette &, const char* className = 0); + static QFont font(); + static QFont font(const QWidget*); + static QFont font(const char *className); + static void setFont(const QFont &, const char* className = 0); + static QFontMetrics fontMetrics(); + + static void setWindowIcon(const QIcon &icon); + static QIcon windowIcon(); + + static QWidgetList allWidgets(); + static QWidgetList topLevelWidgets(); + + static QDesktopWidget *desktop(); + + static QWidget *activePopupWidget(); + static QWidget *activeModalWidget(); +#ifndef QT_NO_CLIPBOARD + static QClipboard *clipboard(); +#endif + static QWidget *focusWidget(); + + static QWidget *activeWindow(); + static void setActiveWindow(QWidget* act); + + static QWidget *widgetAt(const QPoint &p); + static inline QWidget *widgetAt(int x, int y) { return widgetAt(QPoint(x, y)); } + static QWidget *topLevelAt(const QPoint &p); + static inline QWidget *topLevelAt(int x, int y) { return topLevelAt(QPoint(x, y)); } + + static void syncX(); + static void beep(); + static void alert(QWidget *widget, int duration = 0); + + static Qt::KeyboardModifiers keyboardModifiers(); + static Qt::MouseButtons mouseButtons(); + + static void setDesktopSettingsAware(bool); + static bool desktopSettingsAware(); + + static void setCursorFlashTime(int); + static int cursorFlashTime(); + + static void setDoubleClickInterval(int); + static int doubleClickInterval(); + + static void setKeyboardInputInterval(int); + static int keyboardInputInterval(); + +#ifndef QT_NO_WHEELEVENT + static void setWheelScrollLines(int); + static int wheelScrollLines(); +#endif + static void setGlobalStrut(const QSize &); + static QSize globalStrut(); + + static void setStartDragTime(int ms); + static int startDragTime(); + static void setStartDragDistance(int l); + static int startDragDistance(); + + static void setLayoutDirection(Qt::LayoutDirection direction); + static Qt::LayoutDirection layoutDirection(); + + static inline bool isRightToLeft() { return layoutDirection() == Qt::RightToLeft; } + static inline bool isLeftToRight() { return layoutDirection() == Qt::LeftToRight; } + + static bool isEffectEnabled(Qt::UIEffect); + static void setEffectEnabled(Qt::UIEffect, bool enable = true); + +#if defined(Q_WS_MAC) + virtual bool macEventFilter(EventHandlerCallRef, EventRef); +#endif +#if defined(Q_WS_X11) + virtual bool x11EventFilter(XEvent *); + virtual int x11ClientMessage(QWidget*, XEvent*, bool passive_only); + int x11ProcessEvent(XEvent*); +#endif +#if defined(Q_OS_SYMBIAN) + int symbianProcessEvent(const QSymbianEvent *event); + virtual bool symbianEventFilter(const QSymbianEvent *event); +#endif +#if defined(Q_WS_QWS) + virtual bool qwsEventFilter(QWSEvent *); + int qwsProcessEvent(QWSEvent*); + void qwsSetCustomColors(QRgb *colortable, int start, int numColors); +#ifndef QT_NO_QWS_MANAGER + static QDecoration &qwsDecoration(); + static void qwsSetDecoration(QDecoration *); + static QDecoration *qwsSetDecoration(const QString &decoration); +#endif +#endif + + +#if defined(Q_WS_WIN) + void winFocus(QWidget *, bool); + static void winMouseButtonUp(); +#endif +#ifndef QT_NO_SESSIONMANAGER + // session management + bool isSessionRestored() const; + QString sessionId() const; + QString sessionKey() const; + virtual void commitData(QSessionManager& sm); + virtual void saveState(QSessionManager& sm); +#endif + void setInputContext(QInputContext *); + QInputContext *inputContext() const; + + static QLocale keyboardInputLocale(); + static Qt::LayoutDirection keyboardInputDirection(); + + static int exec(); + bool notify(QObject *, QEvent *); + + + static void setQuitOnLastWindowClosed(bool quit); + static bool quitOnLastWindowClosed(); + +#ifdef QT_KEYPAD_NAVIGATION + static Q_DECL_DEPRECATED void setKeypadNavigationEnabled(bool); + static bool keypadNavigationEnabled(); + static void setNavigationMode(Qt::NavigationMode mode); + static Qt::NavigationMode navigationMode(); +#endif + + void lastWindowClosed(); + void focusChanged(QWidget *old, QWidget *now); + void fontDatabaseChanged(); +#ifndef QT_NO_SESSIONMANAGER + void commitDataRequest(QSessionManager &sessionManager); + void saveStateRequest(QSessionManager &sessionManager); +#endif + +public: + QString styleSheet() const; +#ifndef QT_NO_STYLE_STYLESHEET + void setStyleSheet(const QString& sheet); +#endif +#ifdef Q_WS_WINCE + void setAutoMaximizeThreshold(const int threshold); + int autoMaximizeThreshold() const; +#endif + void setAutoSipEnabled(const bool enabled); + bool autoSipEnabled() const; + static void closeAllWindows(); + static void aboutQt(); + +protected: +#if defined(Q_WS_QWS) + void setArgs(int, char **); +#endif + bool event(QEvent *); + bool compressEvent(QEvent *, QObject *receiver, QPostEventList *); + +#if defined(Q_INTERNAL_QAPP_SRC) || defined(qdoc) + QApplication(int &argc, char **argv); + QApplication(int &argc, char **argv, bool GUIenabled); + QApplication(int &argc, char **argv, Type); +#if defined(Q_WS_X11) + QApplication(Display* dpy, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0); + QApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap= 0); +#endif +#if defined(Q_WS_S60) || defined(qdoc) + QApplication(QApplication::QS60MainApplicationFactory factory, int &argc, char **argv); +#endif +#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. +public: + void processOneEvent(); +}; #endif // USE_QT4 diff --git a/qtinterface/tqasyncio.h b/qtinterface/tqasyncio.h index 210c6df..5708884 100644 --- a/qtinterface/tqasyncio.h +++ b/qtinterface/tqasyncio.h @@ -37,9 +37,9 @@ Boston, MA 02110-1301, USA. #ifdef USE_QT4 // Reimplement the QAsyncIO class -// For Qt4, no changes are needed +// For Qt4, some changes are needed -#include +//#include #endif // USE_QT4 diff --git a/qtinterface/tqobject.h b/qtinterface/tqobject.h index 6d5e063..90de091 100644 --- a/qtinterface/tqobject.h +++ b/qtinterface/tqobject.h @@ -23,9 +23,9 @@ Boston, MA 02110-1301, USA. #define TQOBJECT_H #include -#include -#include -#include +// #include +// #include +// #include #ifdef USE_QT3 @@ -41,7 +41,7 @@ Boston, MA 02110-1301, USA. // Reimplement the QObject class // For Qt4, no changes are needed -#include +#include #endif // USE_QT4 diff --git a/qtinterface/tqsocketnotifier.h b/qtinterface/tqsocketnotifier.h index d2a4f1a..529fe3b 100644 --- a/qtinterface/tqsocketnotifier.h +++ b/qtinterface/tqsocketnotifier.h @@ -38,7 +38,7 @@ Boston, MA 02110-1301, USA. // Reimplement the QSocketNotifier class // For Qt4, no changes are needed -#include +#include #endif // USE_QT4 diff --git a/qtinterface/tqt.h b/qtinterface/tqt.h index 2848177..62f6021 100644 --- a/qtinterface/tqt.h +++ b/qtinterface/tqt.h @@ -22,8 +22,8 @@ Boston, MA 02110-1301, USA. #ifndef TQT_H #define TQT_H -#define USE_QT3 -//#define USE_QT4 +//#define USE_QT3 +#define USE_QT4 //#include "kdemacros.h.in" //#define TQT_EXPORT KDE_EXPORT diff --git a/qtinterface/tqtimer.h b/qtinterface/tqtimer.h index 7b6b72b..f1c1390 100644 --- a/qtinterface/tqtimer.h +++ b/qtinterface/tqtimer.h @@ -40,44 +40,37 @@ Boston, MA 02110-1301, USA. // Linker tricks required to override a class without changing its name #define QTimer IQTimer -#include +#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: - QTimer( QObject *parent=0, const char *name=0 ); - ~QTimer(); + explicit QTimer(QObject *parent = 0); + ~QTimer(); - bool isActive() const; + inline bool isActive() const; + int timerId() const; - int start( int msec, bool sshot = FALSE ); - void changeInterval( int msec ); - void stop(); + void setInterval(int msec); + int interval() const; - static void singleShot( int msec, QObject *receiver, const char *member ); + inline void setSingleShot(bool singleShot); + inline bool isSingleShot() const; - int timerId() const { return id; } + static void singleShot(int msec, QObject *receiver, const char *member); - void timeout(); + void start(int msec); -protected: - bool event( QEvent * ); + void start(); + void stop(); -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 + void timeout(); // End Qt header file copy // This is where the new member functions should be placed @@ -85,12 +78,18 @@ private: // Disabled copy constructor and operator= // 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 bool QTimer::isActive() const -{ - return id >= 0; -} +//inline void QTimer::setSingleShot(bool asingleShot) { single = asingleShot; } +// End Qt header file copy #endif // USE_QT4