// SPDX-License-Identifier: GPL-2.0 #include #include #include #include #include "mapwidget.h" #include "core/dive.h" #include "core/divesite.h" #include "mobile-widgets/qmlmapwidgethelper.h" #include "qt-models/maplocationmodel.h" MapWidget *MapWidget::m_instance = NULL; MapWidget::MapWidget(QWidget *parent) : QQuickWidget(parent) { qmlRegisterType("org.subsurfacedivelog.mobile", 1, 0, "MapWidgetHelper"); qmlRegisterType("org.subsurfacedivelog.mobile", 1, 0, "MapLocationModel"); qmlRegisterType("org.subsurfacedivelog.mobile", 1, 0, "MapLocation"); setSource(QUrl(QStringLiteral("qrc:/mapwidget-qml"))); setResizeMode(QQuickWidget::SizeRootObjectToView); m_rootItem = qobject_cast(rootObject()); m_mapHelper = rootObject()->findChild(); } void MapWidget::centerOnDiveSite(struct dive_site *ds) { m_mapHelper->centerOnDiveSite(ds); } void MapWidget::centerOnIndex(const QModelIndex& idx) { struct dive_site *ds = get_dive_site_by_uuid(idx.model()->index(idx.row(), 0).data().toInt()); if (!ds || !dive_site_has_gps_location(ds)) centerOnDiveSite(&displayed_dive_site); else centerOnDiveSite(ds); } void MapWidget::repopulateLabels() { m_mapHelper->reloadMapLocations(); } void MapWidget::reload() { m_mapHelper->reloadMapLocations(); } void MapWidget::endGetDiveCoordinates() { // TODO; } void MapWidget::prepareForGetDiveCoordinates() { // TODO; } MapWidget::~MapWidget() { m_instance = NULL; } MapWidget *MapWidget::instance() { if (m_instance == NULL) m_instance = new MapWidget(); return m_instance; }