|
|
|
/*
|
|
|
|
|
|
|
|
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();
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // USE_QT4
|
|
|
|
|
|
|
|
#endif /* TQAPPLICATION_H */
|