mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	This patch allows updating the location of map markers while editing a dive site and updating the text in the LocationInformationWidget in real-time. Currently it is only possible to see the marker changes by clicking 'Apply'. The modification required the following changes: - add the MapWidget::updateCurrentDiveSiteCoordinatesToMap() slot and call it each time the GPS text updates - separate the updateCurrentDiveSiteCoordinates(FromMap/ToMap) logic by having the FromMap/ToMap suffix to method names - make MapWidgetHelper::updateCurrentDiveSiteCoordinatesToMap() call a new MapLocationModel::updateMapLocationCoordinates() method, which updates selected location coordinates and the model - add MapLocation::setCoordinateNoEmit() that does not emit a signal when updating a coordinate Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// SPDX-License-Identifier: GPL-2.0
 | 
						|
#ifndef QMLMAPWIDGETHELPER_H
 | 
						|
#define QMLMAPWIDGETHELPER_H
 | 
						|
 | 
						|
#include <QObject>
 | 
						|
 | 
						|
class QGeoCoordinate;
 | 
						|
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 READ editMode WRITE setEditMode NOTIFY editModeChanged)
 | 
						|
	Q_PROPERTY(QString pluginObject READ pluginObject NOTIFY pluginObjectChanged)
 | 
						|
 | 
						|
public:
 | 
						|
	explicit MapWidgetHelper(QObject *parent = NULL);
 | 
						|
 | 
						|
	void centerOnDiveSite(struct dive_site *);
 | 
						|
	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 updateCurrentDiveSiteCoordinatesToMap();
 | 
						|
	bool editMode();
 | 
						|
	void setEditMode(bool editMode);
 | 
						|
	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();
 | 
						|
	void pluginObjectChanged();
 | 
						|
};
 | 
						|
 | 
						|
extern "C" const char *printGPSCoords(int lat, int lon);
 | 
						|
 | 
						|
#endif
 |