improved desktop UI
[mardrone] / mardrone / qmlappviewer.cpp
diff --git a/mardrone/qmlappviewer.cpp b/mardrone/qmlappviewer.cpp
new file mode 100644 (file)
index 0000000..2fb5bde
--- /dev/null
@@ -0,0 +1,43 @@
+#include "qmlappviewer.h"
+#include <QDebug>
+#include <QEvent>
+#include <QCloseEvent>
+
+QmlAppViewer::QmlAppViewer(QWidget *parent) :QDeclarativeView(parent),
+            m_closePressed(false)
+{
+}
+
+void QmlAppViewer::closeEvent(QCloseEvent *event)
+{
+    qDebug() << Q_FUNC_INFO << event->spontaneous();
+            if (event->spontaneous() && m_closePressed) {
+                event->setAccepted(false);
+                m_closePressed = false;
+                return;
+    }
+            QDeclarativeView::closeEvent(event);
+}
+
+void QmlAppViewer::keyPressEvent(QKeyEvent *event)
+{
+            qDebug() << Q_FUNC_INFO << event->key();
+            if (event->key() == Qt::Key_Close) {
+                m_closePressed = true;
+                qDebug() << "Qt::Key_Close";
+            }
+            QDeclarativeView::keyPressEvent(event);
+}
+void QmlAppViewer::keyReleaseEvent(QKeyEvent *event)
+{
+            qDebug() << Q_FUNC_INFO << event->key();
+            if (event->key() == Qt::Key_Close) {
+                m_closePressed = true;
+                qDebug() << "Qt::Key_Close";
+            }
+            if (event->key() == Qt::Key_MediaPrevious  ) {
+                emit backKey();
+                qDebug() << "Qt::Key_MediaPrevious";
+            }
+            QDeclarativeView::keyReleaseEvent(event);
+}