summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViktor Verebelyi <vviktor2@gmail.com>2020-09-17 01:16:51 +0100
committerViktor Verebelyi <vviktor2@gmail.com>2020-09-22 02:16:58 +0100
commitf56395fa421b758f41224f359ed3518898bfbd1c (patch)
tree5ff469c188a52c33130220269e91181eaf665eb1
parent61a0c2e04be92490661fc102c721d0c231e21c5c (diff)
downloadnavit-f56395fa421b758f41224f359ed3518898bfbd1c.tar.gz
Add:qt5_graphics:Add Current WIP
-rw-r--r--navit/graphics/qt5/CMakeLists.txt1
-rw-r--r--navit/graphics/qt5/QNavitQuick_2.cpp87
-rw-r--r--navit/graphics/qt5/QNavitQuick_2.h18
-rw-r--r--navit/graphics/qt5/qml/Navit/Graphics/qmldir3
-rw-r--r--navit/graphics/qt5/qml/Navit/qmldir0
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