diff options
author | Kevin Krammer <kevin.krammer.qnx@kdab.com> | 2012-03-27 16:07:24 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-01 07:10:45 +0200 |
commit | 050ff2730c96831aedb5897a60eafaf13ae8d93e (patch) | |
tree | ffc0334cf2f404cc3038e079f34b9160e9c3b997 /src/plugins/platforms/qnx/qqnxbpseventfilter.cpp | |
parent | e212d25972dbc19e3cc687b8c7bd4503eec8a602 (diff) |
Handle navigator events in BPS event filter
Change-Id: I37b5de4bf1e9f9bbe53910eb5e3f490172b28371
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Diffstat (limited to 'src/plugins/platforms/qnx/qqnxbpseventfilter.cpp')
-rw-r--r-- | src/plugins/platforms/qnx/qqnxbpseventfilter.cpp | 72 |
1 files changed, 71 insertions, 1 deletions
diff --git a/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp b/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp index c4e6f2b781..15391ff765 100644 --- a/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp +++ b/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp @@ -40,6 +40,7 @@ ****************************************************************************/ #include "qqnxbpseventfilter.h" +#include "qqnxnavigatoreventhandler.h" #include "qqnxscreen.h" #include "qqnxscreeneventhandler.h" @@ -47,14 +48,17 @@ #include <QDebug> #include <bps/event.h> +#include <bps/navigator.h> #include <bps/screen.h> QT_BEGIN_NAMESPACE static QQnxBpsEventFilter *s_instance = 0; -QQnxBpsEventFilter::QQnxBpsEventFilter(QQnxScreenEventHandler *screenEventHandler, QObject *parent) +QQnxBpsEventFilter::QQnxBpsEventFilter(QQnxNavigatorEventHandler *navigatorEventHandler, + QQnxScreenEventHandler *screenEventHandler, QObject *parent) : QObject(parent) + , m_navigatorEventHandler(navigatorEventHandler) , m_screenEventHandler(screenEventHandler) { Q_ASSERT(s_instance == 0); @@ -75,6 +79,9 @@ void QQnxBpsEventFilter::installOnEventDispatcher(QAbstractEventDispatcher *disp qDebug() << Q_FUNC_INFO << "dispatcher=" << dispatcher; #endif + if (navigator_request_events(0) != BPS_SUCCESS) + qWarning("QQNX: failed to register for navigator events"); + QAbstractEventDispatcher::EventFilter previousEventFilter = dispatcher->setEventFilter(dispatcherEventFilter); // the QPA plugin creates the event dispatcher so we are the first event @@ -122,7 +129,70 @@ bool QQnxBpsEventFilter::bpsEventFilter(bps_event_t *event) return m_screenEventHandler->handleEvent(screenEvent); } + if (eventDomain == navigator_get_domain()) + return handleNavigatorEvent(event); + return false; } +bool QQnxBpsEventFilter::handleNavigatorEvent(bps_event_t *event) +{ + switch (bps_event_get_code(event)) { + case NAVIGATOR_ORIENTATION_CHECK: { + const int angle = navigator_event_get_orientation_angle(event); + + #if defined(QQNXBPSEVENTFILTER_DEBUG) + qDebug() << "QQNX: Navigator ORIENTATION CHECK event. angle=" << angle; + #endif + + const bool result = m_navigatorEventHandler->handleOrientationCheck(angle); + + #if defined(QQNXBPSEVENTFILTER_DEBUG) + qDebug() << "QQNX: Navigator ORIENTATION CHECK event. result=" << result; + #endif + + // reply to navigator whether orientation is acceptable + navigator_orientation_check_response(event, result); + break; + } + + case NAVIGATOR_ORIENTATION: { + const int angle = navigator_event_get_orientation_angle(event); + + #if defined(QQNXBPSEVENTFILTER_DEBUG) + qDebug() << "QQNX: Navigator ORIENTATION event. angle=" << angle; + #endif + + m_navigatorEventHandler->handleOrientationChange(angle); + + navigator_done_orientation(event); + break; + } + + case NAVIGATOR_SWIPE_DOWN: + #if defined(QQNXBPSEVENTFILTER_DEBUG) + qDebug() << "QQNX: Navigator SWIPE DOWN event"; + #endif + + m_navigatorEventHandler->handleSwipeDown(); + break; + + case NAVIGATOR_EXIT: + #if defined(QQNXBPSEVENTFILTER_DEBUG) + qDebug() << "QQNX: Navigator EXIT event"; + #endif + + m_navigatorEventHandler->handleExit(); + break; + + default: + #if defined(QQNXBPSEVENTFILTER_DEBUG) + qDebug() << "QQNX: Unhandled navigator event. code=" << bps_event_get_code(event); + #endif + return false; + } + + return true; +} + QT_END_NAMESPACE |