diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-06-10 16:49:49 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-06-10 16:49:49 (GMT) |
commit | 7214d768dca85a6d43892169d5008898249dce73 (patch) | |
tree | 0f8b2820c9cb58f058263c78306987d934fec526 /Swift/QtUI/QtMainEventLoop.h | |
parent | fd89da91d12b270d56f60544cad6f1ddc809af28 (diff) | |
download | swift-7214d768dca85a6d43892169d5008898249dce73.zip swift-7214d768dca85a6d43892169d5008898249dce73.tar.bz2 |
Moved UI/Qt -> Swift/QtUI.
Diffstat (limited to 'Swift/QtUI/QtMainEventLoop.h')
-rw-r--r-- | Swift/QtUI/QtMainEventLoop.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/Swift/QtUI/QtMainEventLoop.h b/Swift/QtUI/QtMainEventLoop.h new file mode 100644 index 0000000..678ea04 --- /dev/null +++ b/Swift/QtUI/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 |