diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-08-22 09:33:44 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-08-22 09:33:44 (GMT) |
commit | 04e6c3982dbca31bc6040a734ebfba153404ec41 (patch) | |
tree | bd221a301d5993c06172ee7ccbc135d808fd52d9 /Swiften/EventLoop/Qt | |
parent | 279761bbf59a5129793896dcc8fc2bc04955b1a4 (diff) | |
download | swift-04e6c3982dbca31bc6040a734ebfba153404ec41.zip swift-04e6c3982dbca31bc6040a734ebfba153404ec41.tar.bz2 |
Moved QtEventLoop to Swiften.
Diffstat (limited to 'Swiften/EventLoop/Qt')
-rw-r--r-- | Swiften/EventLoop/Qt/QtEventLoop.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Swiften/EventLoop/Qt/QtEventLoop.h b/Swiften/EventLoop/Qt/QtEventLoop.h new file mode 100644 index 0000000..9c7d2f1 --- /dev/null +++ b/Swiften/EventLoop/Qt/QtEventLoop.h @@ -0,0 +1,36 @@ +#pragma once + +#include <QObject> +#include <QEvent> +#include <QCoreApplication> + +#include "Swiften/EventLoop/EventLoop.h" + +class QtEventLoop : public QObject, public Swift::EventLoop { + public: + QtEventLoop() {} + + virtual void post(const Swift::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 Swift::Event& event) : + QEvent(QEvent::User), event_(event) { + } + + Swift::Event event_; + }; +}; |