diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-06-01 08:48:42 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-06-01 09:24:28 (GMT) |
commit | 2812bddd81f8a1b804c7460f4e14cd0aa393d129 (patch) | |
tree | d46294f35150c4f0f43deaf2d31fceaf945ae715 /UI/Qt/QtMainEventLoop.h | |
download | swift-contrib-2812bddd81f8a1b804c7460f4e14cd0aa393d129.zip swift-contrib-2812bddd81f8a1b804c7460f4e14cd0aa393d129.tar.bz2 |
Import.
Diffstat (limited to 'UI/Qt/QtMainEventLoop.h')
-rw-r--r-- | UI/Qt/QtMainEventLoop.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/UI/Qt/QtMainEventLoop.h b/UI/Qt/QtMainEventLoop.h new file mode 100644 index 0000000..678ea04 --- /dev/null +++ b/UI/Qt/QtMainEventLoop.h @@ -0,0 +1,40 @@ +#ifndef SWIFT_QtMainEventLoop_H +#define SWIFT_QtMainEventLoop_H + +#include <QObject> +#include <QEvent> +#include <QCoreApplication> + +#include "Swiften/EventLoop/EventLoop.h" + +class QtMainEventLoop : public QObject, public Swift::EventLoop +{ + public: + QtMainEventLoop() {} + + virtual void post(const Event& event) { + QCoreApplication::postEvent(this, new Event(event)); + } + + virtual bool event(QEvent* qevent) { + Event* event = dynamic_cast<Event*>(qevent); + if (event) { + handleEvent(event->event_); + //event->deleteLater(); FIXME: Leak? + return true; + } + + return false; + } + + private: + struct Event : public QEvent { + Event(const EventLoop::Event& event) : + QEvent(QEvent::User), event_(event) { + } + + EventLoop::Event event_; + }; +}; + +#endif |