subsurface/map-widget/qmlmapwidgethelper.h
Berthold Stoeger 8091497745 Map: split void MapWidget::setEditMode()
The setEditMode(bool) function behaves very differently, when
entering and exiting edit mode. Therefore, split it in two
versions. This will allow to pass arguments that make sense
only when entering the edit mode.

Since setEditMode() doesn't exist anymore, turn the editMode
Q_PROPERTY line to the MEMBER version. Accordingly, remove
the reader function. If QML wants to enter edit mode, it
should invoke the appropriate function and not simply set
the flag.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-10-11 16:25:32 -07:00

62 lines
1.8 KiB
C++

// SPDX-License-Identifier: GPL-2.0
#ifndef QMLMAPWIDGETHELPER_H
#define QMLMAPWIDGETHELPER_H
#include "core/units.h"
#include <QObject>
#include <QGeoCoordinate>
#include <QVariant>
#if defined(Q_OS_IOS)
#include <QtPlugin>
Q_IMPORT_PLUGIN(QGeoServiceProviderFactoryGooglemaps)
#endif
class MapLocationModel;
class MapLocation;
struct dive_site;
class MapWidgetHelper : public QObject {
Q_OBJECT
Q_PROPERTY(QObject *map MEMBER m_map)
Q_PROPERTY(MapLocationModel *model MEMBER m_mapLocationModel NOTIFY modelChanged)
Q_PROPERTY(bool editMode MEMBER m_editMode NOTIFY editModeChanged)
Q_PROPERTY(QString pluginObject READ pluginObject NOTIFY pluginObjectChanged)
public:
explicit MapWidgetHelper(QObject *parent = NULL);
void centerOnDiveSite(struct dive_site *);
void centerOnSelectedDiveSite();
Q_INVOKABLE QGeoCoordinate getCoordinatesForUUID(QVariant dive_site_uuid);
Q_INVOKABLE void centerOnDiveSiteUUID(QVariant dive_site_uuid);
Q_INVOKABLE void reloadMapLocations();
Q_INVOKABLE void copyToClipboardCoordinates(QGeoCoordinate coord, bool formatTraditional);
Q_INVOKABLE void calculateSmallCircleRadius(QGeoCoordinate coord);
Q_INVOKABLE void updateCurrentDiveSiteCoordinatesFromMap(quint32 uuid, QGeoCoordinate coord);
Q_INVOKABLE void selectVisibleLocations();
void updateDiveSiteCoordinates(uint32_t uuid, degrees_t latitude, degrees_t longitude);
void enterEditMode();
void exitEditMode();
QString pluginObject();
private:
QObject *m_map;
MapLocationModel *m_mapLocationModel;
qreal m_smallCircleRadius;
QList<int> m_selectedDiveIds;
bool m_editMode;
private slots:
void selectedLocationChanged(MapLocation *);
signals:
void modelChanged();
void editModeChanged();
void selectedDivesChanged(QList<int> list);
void coordinatesChanged(degrees_t latitude, degrees_t longitude);
void pluginObjectChanged();
};
#endif