summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-06-01 08:48:42 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-06-01 09:24:28 (GMT)
commit2812bddd81f8a1b804c7460f4e14cd0aa393d129 (patch)
treed46294f35150c4f0f43deaf2d31fceaf945ae715 /UI/Qt/QtMainEventLoop.h
downloadswift-contrib-2812bddd81f8a1b804c7460f4e14cd0aa393d129.zip
swift-contrib-2812bddd81f8a1b804c7460f4e14cd0aa393d129.tar.bz2
Import.
Diffstat (limited to 'UI/Qt/QtMainEventLoop.h')
-rw-r--r--UI/Qt/QtMainEventLoop.h40
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