diff options
Diffstat (limited to 'mobile-widgets')
-rw-r--r-- | mobile-widgets/qml/MapWidget.qml | 19 | ||||
-rw-r--r-- | mobile-widgets/qmlmapwidgethelper.cpp | 21 | ||||
-rw-r--r-- | mobile-widgets/qmlmapwidgethelper.h | 3 |
3 files changed, 31 insertions, 12 deletions
diff --git a/mobile-widgets/qml/MapWidget.qml b/mobile-widgets/qml/MapWidget.qml index 27df978ba..7109b9dc3 100644 --- a/mobile-widgets/qml/MapWidget.qml +++ b/mobile-widgets/qml/MapWidget.qml @@ -5,17 +5,9 @@ import QtPositioning 5.3 import org.subsurfacedivelog.mobile 1.0 Item { + id: rootItem property int nSelectedDives: 0 - Plugin { - id: mapPlugin - name: "googlemaps" - Component.onCompleted: { - if (availableServiceProviders.indexOf(name) === -1) - console.warn("MapWidget.qml: cannot find a plugin with the name '" + name + "'") - } - } - MapWidgetHelper { id: mapHelper map: map @@ -23,15 +15,19 @@ Item { onSelectedDivesChanged: nSelectedDives = list.length onEditModeChanged: editMessage.isVisible = editMode === true ? 1 : 0 onCoordinatesChanged: {} + Component.onCompleted: { + map.plugin = Qt.createQmlObject(pluginObject, rootItem) + map.mapType = { "STREET": map.supportedMapTypes[0], "SATELLITE": map.supportedMapTypes[1] } + map.activeMapType = map.mapType.SATELLITE + } } Map { id: map anchors.fill: parent - plugin: mapPlugin zoomLevel: 1 - readonly property var mapType: { "STREET": supportedMapTypes[0], "SATELLITE": supportedMapTypes[1] } + property var mapType readonly property var defaultCenter: QtPositioning.coordinate(0, 0) readonly property real defaultZoomIn: 12.0 readonly property real defaultZoomOut: 1.0 @@ -42,7 +38,6 @@ Item { property real newZoomOut: 1.0 property var clickCoord: QtPositioning.coordinate(0, 0) - Component.onCompleted: activeMapType = mapType.SATELLITE onZoomLevelChanged: mapHelper.calculateSmallCircleRadius(map.center) MapItemView { diff --git a/mobile-widgets/qmlmapwidgethelper.cpp b/mobile-widgets/qmlmapwidgethelper.cpp index 9cc452642..569bd9f68 100644 --- a/mobile-widgets/qmlmapwidgethelper.cpp +++ b/mobile-widgets/qmlmapwidgethelper.cpp @@ -8,6 +8,7 @@ #include "qmlmapwidgethelper.h" #include "core/dive.h" #include "core/divesite.h" +#include "core/helpers.h" #include "qt-models/maplocationmodel.h" #define MIN_DISTANCE_BETWEEN_DIVE_SITES_M 50.0 @@ -238,3 +239,23 @@ void MapWidgetHelper::setEditMode(bool editMode) } emit editModeChanged(); } + +QString MapWidgetHelper::pluginObject() +{ + QString str; + str += "import QtQuick 2.0;"; + str += "import QtLocation 5.3;"; + str += "Plugin {"; + str += " id: mapPlugin;"; + str += " name: 'googlemaps';"; + str += " PluginParameter { name: 'googlemaps.maps.language'; value: '%lang%' }"; + str += " Component.onCompleted: {"; + str += " if (availableServiceProviders.indexOf(name) === -1) {"; + str += " console.warn('MapWidget.qml: cannot find a plugin named: ' + name);"; + str += " }"; + str += " }"; + str += "}"; + QString lang = uiLanguage(NULL).replace('_', '-'); + str.replace("%lang%", lang); + return str; +} diff --git a/mobile-widgets/qmlmapwidgethelper.h b/mobile-widgets/qmlmapwidgethelper.h index 830c8478f..36d25d178 100644 --- a/mobile-widgets/qmlmapwidgethelper.h +++ b/mobile-widgets/qmlmapwidgethelper.h @@ -15,6 +15,7 @@ class MapWidgetHelper : public QObject { Q_PROPERTY(QObject *map MEMBER m_map) Q_PROPERTY(MapLocationModel *model MEMBER m_mapLocationModel NOTIFY modelChanged) Q_PROPERTY(bool editMode READ editMode WRITE setEditMode NOTIFY editModeChanged) + Q_PROPERTY(QString pluginObject READ pluginObject NOTIFY pluginObjectChanged) public: explicit MapWidgetHelper(QObject *parent = NULL); @@ -27,6 +28,7 @@ public: Q_INVOKABLE void selectVisibleLocations(); bool editMode(); void setEditMode(bool editMode); + QString pluginObject(); private: QObject *m_map; @@ -43,6 +45,7 @@ signals: void editModeChanged(); void selectedDivesChanged(QList<int> list); void coordinatesChanged(); + void pluginObjectChanged(); }; extern "C" const char *printGPSCoords(int lat, int lon); |