You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tqtinterface/qtinterface/tqapplication.h

273 lines
9.0 KiB

/*
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 TQAPPLICATION_H
#define TQAPPLICATION_H
#include <tqt.h>
#ifdef USE_QT3
// Reimplement the QApplication class
// For Qt3, no changes are needed
#include <qapplication.h>
#endif // USE_QT3
#ifdef USE_QT4
// Reimplement the QApplication class
// For Qt4, some changes are needed
// Linker tricks required to override a class without changing its name
#define QApplication IQApplication
#include <Qt/qapplication.h>
#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();
enum ColorMode {ColorSpec};
};
#endif // USE_QT4
#endif /* TQAPPLICATION_H */