From c51ea686211295bd9ab3d830b738fe74af1a86c6 Mon Sep 17 00:00:00 2001 From: Dmytro Poplavskiy Date: Sun, 20 Oct 2013 15:43:38 +1000 Subject: [PATCH] Reload PFD qml widget on the middle mouse click Makes qml files modifications and result check much faster --- .../src/plugins/pfdqml/pfdqmlgadgetwidget.cpp | 13 +++++++++++++ .../src/plugins/pfdqml/pfdqmlgadgetwidget.h | 3 +++ 2 files changed, 16 insertions(+) diff --git a/ground/openpilotgcs/src/plugins/pfdqml/pfdqmlgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/pfdqml/pfdqmlgadgetwidget.cpp index aa6879b7e..b6f74962c 100644 --- a/ground/openpilotgcs/src/plugins/pfdqml/pfdqmlgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/pfdqml/pfdqmlgadgetwidget.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -94,6 +95,8 @@ void PfdQmlGadgetWidget::setQmlFile(QString fn) SvgImageProvider *svgProvider = new SvgImageProvider(fn); engine()->addImageProvider("svg", svgProvider); + engine()->clearComponentCache(); + // it's necessary to allow qml side to query svg element position engine()->rootContext()->setContextProperty("svgRenderer", svgProvider); engine()->setBaseUrl(QUrl::fromLocalFile(fn)); @@ -184,6 +187,16 @@ void PfdQmlGadgetWidget::setActualPositionUsed(bool arg) } } +void PfdQmlGadgetWidget::mouseReleaseEvent(QMouseEvent *event) +{ + // Reload the schene on the middle mouse button click. + if (event->button() == Qt::MiddleButton) { + setQmlFile(m_qmlFileName); + } + + QDeclarativeView::mouseReleaseEvent(event); +} + void PfdQmlGadgetWidget::setLatitude(double arg) { // not sure qFuzzyCompare is accurate enough for geo coordinates diff --git a/ground/openpilotgcs/src/plugins/pfdqml/pfdqmlgadgetwidget.h b/ground/openpilotgcs/src/plugins/pfdqml/pfdqmlgadgetwidget.h index 46d540345..42b21edee 100644 --- a/ground/openpilotgcs/src/plugins/pfdqml/pfdqmlgadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/pfdqml/pfdqmlgadgetwidget.h @@ -115,6 +115,9 @@ signals: void altitudeUnitChanged(QString arg); void altitudeFactorChanged(double arg); +protected: + void mouseReleaseEvent(QMouseEvent *event); + private: QString m_qmlFileName; QString m_earthFile;