diff options
author | Viktor Verebelyi <vviktor2@gmail.com> | 2020-09-17 01:16:51 +0100 |
---|---|---|
committer | Viktor Verebelyi <vviktor2@gmail.com> | 2020-09-22 02:16:58 +0100 |
commit | f56395fa421b758f41224f359ed3518898bfbd1c (patch) | |
tree | 5ff469c188a52c33130220269e91181eaf665eb1 | |
parent | 61a0c2e04be92490661fc102c721d0c231e21c5c (diff) | |
download | navit-f56395fa421b758f41224f359ed3518898bfbd1c.tar.gz |
Add:qt5_graphics:Add Current WIP
-rw-r--r-- | navit/graphics/qt5/CMakeLists.txt | 1 | ||||
-rw-r--r-- | navit/graphics/qt5/QNavitQuick_2.cpp | 87 | ||||
-rw-r--r-- | navit/graphics/qt5/QNavitQuick_2.h | 18 | ||||
-rw-r--r-- | navit/graphics/qt5/qml/Navit/Graphics/qmldir | 3 | ||||
-rw-r--r-- | navit/graphics/qt5/qml/Navit/qmldir | 0 |
5 files changed, 57 insertions, 52 deletions
diff --git a/navit/graphics/qt5/CMakeLists.txt b/navit/graphics/qt5/CMakeLists.txt index 1c428f423..9ecd7171e 100644 --- a/navit/graphics/qt5/CMakeLists.txt +++ b/navit/graphics/qt5/CMakeLists.txt @@ -34,4 +34,3 @@ endif () module_add_library(graphics_qt5 graphics_qt5.cpp event_qt5.cpp navitinstance.h ${GRAPHICS_QT5_ADDITIONAL}) # pass QML and QWIDGET preference to source target_compile_definitions(graphics_qt5 PRIVATE USE_QML=${QML} USE_QWIDGET=${QWIDGET} HAVE_FREETYPE=${HAVE_FREETYPE}) - diff --git a/navit/graphics/qt5/QNavitQuick_2.cpp b/navit/graphics/qt5/QNavitQuick_2.cpp index 12d83ae60..1098c9a01 100644 --- a/navit/graphics/qt5/QNavitQuick_2.cpp +++ b/navit/graphics/qt5/QNavitQuick_2.cpp @@ -145,11 +145,13 @@ void QNavitQuick_2::mapMove(int originX, int originY, int destinationX, int dest void QNavitQuick_2::zoomIn(int zoomLevel){ if(m_navitInstance){ navit_zoom_in(m_navitInstance->getNavit(), zoomLevel, nullptr); + updateZoomLevel(); } } void QNavitQuick_2::zoomOut(int zoomLevel){ if(m_navitInstance){ navit_zoom_out(m_navitInstance->getNavit(), zoomLevel, nullptr); + updateZoomLevel(); } } @@ -159,6 +161,7 @@ void QNavitQuick_2::zoomInToPoint(int zoomLevel, int x, int y){ p.x = x; p.y = y; navit_zoom_in(m_navitInstance->getNavit(), zoomLevel, &p); + updateZoomLevel(); } } @@ -168,12 +171,14 @@ void QNavitQuick_2::zoomOutFromPoint(int zoomLevel, int x, int y){ p.x = x; p.y = y; navit_zoom_out(m_navitInstance->getNavit(), zoomLevel, &p); + updateZoomLevel(); } } void QNavitQuick_2::zoomToRoute(){ if(m_navitInstance){ navit_zoom_to_route(m_navitInstance->getNavit(), 1); + updateZoomLevel(); } } @@ -237,56 +242,12 @@ void QNavitQuick_2::setOrientation(int orientation){ } } -pcoord QNavitQuick_2::positionToCoordinates (int x, int y) { - - struct point p; - p.x = x; - p.y = y; - struct coord co; - struct pcoord c; - struct transformation * trans; - if(m_navitInstance){ - - trans = navit_get_trans(m_navitInstance->getNavit()); - c.pro = transform_get_projection(trans); - transform_reverse(trans, &p, &co); - - c.x = co.x; - c.y = co.y; - } - return c; -} - -void QNavitQuick_2::setDestination(int x, int y){ - if(m_navitInstance){ - struct pcoord c = positionToCoordinates(x,y); - - navit_set_destination(m_navitInstance->getNavit(), &c, /*QString("%1 %2").arg(lng, lat).toUtf8().data()*/"test", 1); - } -} - -void QNavitQuick_2::setPosition(int x, int y){ - if(m_navitInstance){ - - struct pcoord c = positionToCoordinates(x,y); - - navit_set_position(m_navitInstance->getNavit(), &c); - } -} - -void QNavitQuick_2::centerOnVehicle(){ - if(m_navitInstance){ - - navit_set_center_cursor_draw(m_navitInstance->getNavit()); - } -} - void QNavitQuick_2::addBookmark(QString label, int x, int y){ if(m_navitInstance){ - struct attr attr; - struct pcoord c = positionToCoordinates(x,y); + struct pcoord c = NavitHelper::positionToPcoord(m_navitInstance, x ,y); navit_get_attr(m_navitInstance->getNavit(), attr_bookmarks, &attr, nullptr); + bookmarks_add_bookmark(attr.u.bookmarks, &c, label.toUtf8().data()); } } @@ -307,3 +268,37 @@ void QNavitQuick_2::setNavitInstance(NavitInstance *navit){ m_orientation = getNavitNumProperty(attr_orientation); emit propertiesChanged(); } + +QString QNavitQuick_2::getAddress(int x, int y){ + coord c = NavitHelper::positionToCoord(m_navitInstance, x, y); + return NavitHelper::getAddress(m_navitInstance, c); +} + +QVariantMap QNavitQuick_2::positionToCoordinates(int x, int y){ + QVariantMap ret; + if(m_navitInstance){ + struct coord c = NavitHelper::positionToCoord(m_navitInstance, x ,y); + ret.insert("x", c.x); + ret.insert("y", c.y); + } + return ret; +} + +void QNavitQuick_2::centerOnPosition(){ + if(m_navitInstance){ + navit_set_center_cursor_draw(m_navitInstance->getNavit()); + } +} + +void QNavitQuick_2::updateZoomLevel(){ + struct transformation * trans = navit_get_trans(m_navitInstance->getNavit()); + long scale = transform_get_scale(trans); + + int i = 0; + while(scale >> i){ + i++; + } + + m_zoomLevel = 19 - i; + emit zoomLevelChanged(); +} diff --git a/navit/graphics/qt5/QNavitQuick_2.h b/navit/graphics/qt5/QNavitQuick_2.h index 16b6ce772..fb46cc581 100644 --- a/navit/graphics/qt5/QNavitQuick_2.h +++ b/navit/graphics/qt5/QNavitQuick_2.h @@ -34,6 +34,7 @@ extern "C" { #include "graphics_qt5.h" #include "navitinstance.h" +#include "navithelper.h" class QNavitQuick_2 : public QQuickPaintedItem { Q_OBJECT @@ -41,7 +42,8 @@ class QNavitQuick_2 : public QQuickPaintedItem { Q_PROPERTY(int pitch MEMBER m_pitch WRITE setPitch NOTIFY propertiesChanged) Q_PROPERTY(bool autoZoom MEMBER m_autoZoom WRITE setAutozoom NOTIFY propertiesChanged) Q_PROPERTY(bool followVehicle MEMBER m_followVehicle WRITE setFollowVehicle NOTIFY propertiesChanged) - Q_PROPERTY(int orientation MEMBER m_orientation WRITE setOrientation NOTIFY propertiesChanged) + Q_PROPERTY(int orientation MEMBER m_orientation WRITE setOrientation NOTIFY propertiesChanged) + Q_PROPERTY(long zoomLevel READ getZoomLevel NOTIFY zoomLevelChanged) Q_PROPERTY(NavitInstance *navit READ navitInstance WRITE setNavitInstance) public: @@ -54,10 +56,10 @@ public: Q_INVOKABLE void zoomOutFromPoint(int zoomLevel, int x, int y); Q_INVOKABLE void zoomToRoute(); Q_INVOKABLE void mapMove(int originX, int originY, int destinationX, int destinationY); - Q_INVOKABLE void setDestination(int x, int y); - Q_INVOKABLE void setPosition(int x, int y); - Q_INVOKABLE void centerOnVehicle(); Q_INVOKABLE void addBookmark(QString label, int x, int y); + Q_INVOKABLE QVariantMap positionToCoordinates(int x, int y); + Q_INVOKABLE QString getAddress(int x, int y); + Q_INVOKABLE void centerOnPosition(); void setNorthing(bool northing); void setPitch(int pitch); @@ -66,6 +68,9 @@ public: void setOrientation(int orientation); NavitInstance *navitInstance(); void setNavitInstance(NavitInstance *navit); + int getZoomLevel() { + return m_zoomLevel; + } protected: virtual void geometryChanged(const QRectF& newGeometry, const QRectF& oldGeometry); @@ -79,12 +84,15 @@ private: void setNavitNumProperty(enum attr_type type, int value); int getNavitNumProperty(enum attr_type type); NavitInstance *m_navitInstance; - pcoord positionToCoordinates (int x, int y); + long m_zoomLevel = 0; + + void updateZoomLevel(); signals: void mouseLeftButtonClicked(); void mouseRightButtonClicked(); void pressAndHold(QMouseEvent* mouse); void propertiesChanged(); + void zoomLevelChanged(); }; #endif diff --git a/navit/graphics/qt5/qml/Navit/Graphics/qmldir b/navit/graphics/qt5/qml/Navit/Graphics/qmldir new file mode 100644 index 000000000..491e536ab --- /dev/null +++ b/navit/graphics/qt5/qml/Navit/Graphics/qmldir @@ -0,0 +1,3 @@ +module Navit.Graphics +classname QNavitQuick +classname QNavitQuick_2
\ No newline at end of file diff --git a/navit/graphics/qt5/qml/Navit/qmldir b/navit/graphics/qt5/qml/Navit/qmldir new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/navit/graphics/qt5/qml/Navit/qmldir |