diff options
Diffstat (limited to 'Swiften/EventLoop/Qt/QtEventLoop.h')
| -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_; +		}; +}; | 
 Swift
 Swift