summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-08-22 09:33:44 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-08-22 09:33:44 (GMT)
commit04e6c3982dbca31bc6040a734ebfba153404ec41 (patch)
treebd221a301d5993c06172ee7ccbc135d808fd52d9 /Swiften/EventLoop
parent279761bbf59a5129793896dcc8fc2bc04955b1a4 (diff)
downloadswift-04e6c3982dbca31bc6040a734ebfba153404ec41.zip
swift-04e6c3982dbca31bc6040a734ebfba153404ec41.tar.bz2
Moved QtEventLoop to Swiften.
Diffstat (limited to 'Swiften/EventLoop')
-rw-r--r--Swiften/EventLoop/Qt/QtEventLoop.h36
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_;
+ };
+};