diff options
author | Stefan Wildemann <gta04@metalstrolche.de> | 2017-03-20 00:34:16 +0100 |
---|---|---|
committer | Stefan Wildemann <gta04@metalstrolche.de> | 2017-03-20 00:34:16 +0100 |
commit | a93bccb752772f5e7cdf851b65e68c8d79897b04 (patch) | |
tree | e135c7cdba4d6f464760e8e6ebc2e0327a58ed7a | |
parent | fd54612e88fd966bceaff5c537b05be8b6ee08e1 (diff) | |
download | navit-a93bccb752772f5e7cdf851b65e68c8d79897b04.tar.gz |
Add inital Quick component
Now this has it's own c++ Quick component included. Additionally the
qml file gets embedded into the plugin.
-rw-r--r-- | navit/graphics/qt5/CMakeLists.txt | 12 | ||||
-rw-r--r-- | navit/graphics/qt5/QNavitQuick.cpp | 35 | ||||
-rw-r--r-- | navit/graphics/qt5/QNavitQuick.h | 29 | ||||
-rw-r--r-- | navit/graphics/qt5/graphics_qt5.cpp | 5 | ||||
-rw-r--r-- | navit/graphics/qt5/graphics_qt5.qml | 16 | ||||
-rw-r--r-- | navit/graphics/qt5/graphics_qt5.qrc | 5 |
6 files changed, 84 insertions, 18 deletions
diff --git a/navit/graphics/qt5/CMakeLists.txt b/navit/graphics/qt5/CMakeLists.txt index f62ec34cf..f3d05f0dd 100644 --- a/navit/graphics/qt5/CMakeLists.txt +++ b/navit/graphics/qt5/CMakeLists.txt @@ -2,6 +2,8 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) # Instruct CMake to run moc automatically when needed. set(CMAKE_AUTOMOC ON) +# Instruct CMake to build QRC if needed +set(CMAKE_AUTORCC ON) # collect additional source files in this variable set (GRAPHICS_QT5_ADDITIONAL "") @@ -13,22 +15,16 @@ set(QWIDGET 0) # check if we have QML if(USE_QML) set(QML 1) + set(GRAPHICS_QT5_ADDITIONAL ${GRAPHICS_QT5_ADDITIONAL} "QNavitQuick.cpp" "graphics_qt5.qrc") endif () #check if we have QWIDGET if(USE_QWIDGET) set(QWIDGET 1) - set(GRAPHICS_QT5_ADDITIONAL "QNavitWidget.cpp") + set(GRAPHICS_QT5_ADDITIONAL ${GRAPHICS_QT5_ADDITIONAL} "QNavitWidget.cpp") endif () module_add_library(graphics_qt5 graphics_qt5.cpp event_qt5.cpp ${GRAPHICS_QT5_ADDITIONAL}) # pass QML and QWIDGET preference to source target_compile_definitions(graphics_qt5 PRIVATE USE_QML=${QML} USE_QWIDGET=${QWIDGET}) -# install qml files if QML is used -if(USE_QML) - install(FILES graphics_qt5.qml DESTINATION ${LIB_DIR}/navit/${graphics_qt5_TYPE} - PERMISSIONS OWNER_READ OWNER_WRITE - OWNER_EXECUTE GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE) -endif () diff --git a/navit/graphics/qt5/QNavitQuick.cpp b/navit/graphics/qt5/QNavitQuick.cpp new file mode 100644 index 000000000..39c61c7be --- /dev/null +++ b/navit/graphics/qt5/QNavitQuick.cpp @@ -0,0 +1,35 @@ +#include "QNavitQuick.h" +#include <QPainter> + +QNavitQuick::QNavitQuick(QQuickItem *parent) + : QQuickPaintedItem(parent) +{ +} + +QString QNavitQuick::name() const +{ + return m_name; +} + +void QNavitQuick::setName(const QString &name) +{ + m_name = name; +} + +QColor QNavitQuick::color() const +{ + return m_color; +} + +void QNavitQuick::setColor(const QColor &color) +{ + m_color = color; +} + +void QNavitQuick::paint(QPainter *painter) +{ + QPen pen(m_color, 2); + painter->setPen(pen); + painter->setRenderHints(QPainter::Antialiasing, true); + painter->drawPie(boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16); +} diff --git a/navit/graphics/qt5/QNavitQuick.h b/navit/graphics/qt5/QNavitQuick.h new file mode 100644 index 000000000..85eb65354 --- /dev/null +++ b/navit/graphics/qt5/QNavitQuick.h @@ -0,0 +1,29 @@ +#ifndef QNAVITQUICK_H +#define QNAVITQUICK_H + +#include <QtQuick/QQuickPaintedItem> +#include <QColor> + +class QNavitQuick : public QQuickPaintedItem +{ + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(QColor color READ color WRITE setColor) + +public: + QNavitQuick(QQuickItem *parent = 0); + + QString name() const; + void setName(const QString &name); + + QColor color() const; + void setColor(const QColor &color); + + void paint(QPainter *painter); + +private: + QString m_name; + QColor m_color; +}; + +#endif diff --git a/navit/graphics/qt5/graphics_qt5.cpp b/navit/graphics/qt5/graphics_qt5.cpp index 30aaaf0b9..a2e803aa0 100644 --- a/navit/graphics/qt5/graphics_qt5.cpp +++ b/navit/graphics/qt5/graphics_qt5.cpp @@ -47,6 +47,7 @@ #if USE_QML #include <QQuickWindow> #include <QQmlApplicationEngine> +#include "QNavitQuick.h" #endif #if USE_QWIDGET #include <QDesktopWidget> @@ -836,8 +837,10 @@ graphics_qt5_new(struct navit *nav, struct graphics_methods *meth, struct attr * graphics_priv->disable = 0; #if USE_QML graphics_priv->window = NULL; + qmlRegisterType<QNavitQuick>("com.navit.graphics_qml", 1, 0, "QNavitQuick"); gchar* url = g_strjoin(NULL,getenv("NAVIT_LIBDIR"),"/graphics/graphics_qt5.qml",NULL); - QQmlApplicationEngine * engine = new QQmlApplicationEngine(url); +// QQmlApplicationEngine * engine = new QQmlApplicationEngine(url); + QQmlApplicationEngine * engine = new QQmlApplicationEngine(QUrl("qrc:///graphics_qt5.qml")); g_free (url); if(engine != NULL) { diff --git a/navit/graphics/qt5/graphics_qt5.qml b/navit/graphics/qt5/graphics_qt5.qml index c738d3d5e..305657d0e 100644 --- a/navit/graphics/qt5/graphics_qt5.qml +++ b/navit/graphics/qt5/graphics_qt5.qml @@ -1,15 +1,13 @@ +import com.navit.graphics_qml 1.0 import QtQuick 2.3 import QtQuick.Window 2.2 Window { - Rectangle { - width: 200 - height: 100 - color: "red" - - Text { - anchors.centerIn: parent - text: "Hello, World!" - } + QNavitQuick { + id: aPieChart + anchors.centerIn: parent + width: 100; height: 100 + name: "A simple pie chart" + color: "red" } } diff --git a/navit/graphics/qt5/graphics_qt5.qrc b/navit/graphics/qt5/graphics_qt5.qrc new file mode 100644 index 000000000..4c82492ee --- /dev/null +++ b/navit/graphics/qt5/graphics_qt5.qrc @@ -0,0 +1,5 @@ +<RCC> + <qresource prefix="/"> + <file>graphics_qt5.qml</file> + </qresource> +</RCC> |