#ifndef WIDGETHANDLER_H #define WIDGETHANDLER_H #include #include class WidgetEventHandler : public QObject { Q_OBJECT public: WidgetEventHandler(QObject *parent = 0); void setRootWidget(QWidget *root); bool shouldProcessChildWidgets(QWidget *widget); void recursivelyInstallEventHandler(QWidget *widget); void setSession(Session *session); Session *session(); void handleRequest(HttpRequest *request, HttpResponse *response); void recursivelyAddShow(QWidget *root); void recursivelyAddUpdate(QWidget *root); protected slots: void updatePendingWidgets(); void textChange(); protected: bool handleJsonMessage(const QByteArray &message); void handleMousePress(const QByteArray &message); void handleKeyPress(const QByteArray &message); void handleTextUpdate(json_object* object); void handlePositionUpdate(json_object *object); void addPendingUpdate(QWidget* widget, const QRect &rect); bool eventFilter(QObject *object, QEvent *event); void widgetPaint(QWidget *widget, const QRect &updateRect); QRect globalGeometry(QWidget *widget); void recursivelyAddHide(QWidget *root); void addShowEvent(QWidget *widget); public: //private: EventQueue events; QHash pendingUpdates; bool graphicsWidget; bool grabbing; QWidget *rootWidget; QWidget *focusWidget; // hack hack QSet disableUpdates; }; #endif