summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2018-10-25 20:46:12 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-10-29 00:09:31 +0000
commit75b5d61522f3721adb1761141ce1aeb79c3761c1 (patch)
treeb9cb8f62df1d7fa2210b4b2c34ef8afb879bc5c1
parent872d56de0122036e1b9d37348d758b40dcd142d9 (diff)
downloadsubsurface-75b5d61522f3721adb1761141ce1aeb79c3761c1.tar.gz
Dive site: replace UUID by pointer in mobile code
Replace UUIDs by pointers to dive-site in mobile code. In both cases, the value is transported via a QVariant. The function getCoordinatesForUUID(), which was only used from mobile, can be replaced by a getCoordinatesFor() function taking a variant supposed to contain a dive-site pointer. Likewise, the variant of the centerOnDiveSite function is now supposed to wrap a pointer-to-divesite. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--core/subsurface-qt/DiveObjectHelper.cpp4
-rw-r--r--core/subsurface-qt/DiveObjectHelper.h4
-rw-r--r--map-widget/qmlmapwidgethelper.cpp10
-rw-r--r--map-widget/qmlmapwidgethelper.h4
-rw-r--r--mobile-widgets/qml/DiveDetails.qml2
-rw-r--r--mobile-widgets/qml/DiveDetailsView.qml4
-rw-r--r--mobile-widgets/qml/MapPage.qml12
7 files changed, 19 insertions, 21 deletions
diff --git a/core/subsurface-qt/DiveObjectHelper.cpp b/core/subsurface-qt/DiveObjectHelper.cpp
index d4b8e32cb..c605d01c8 100644
--- a/core/subsurface-qt/DiveObjectHelper.cpp
+++ b/core/subsurface-qt/DiveObjectHelper.cpp
@@ -127,9 +127,9 @@ QString DiveObjectHelper::gps_decimal() const
return val;
}
-QVariant DiveObjectHelper::dive_site_uuid() const
+QVariant DiveObjectHelper::dive_site() const
{
- return QVariant::fromValue(m_dive->dive_site_uuid);
+ return QVariant::fromValue((void *)get_dive_site_by_uuid(m_dive->dive_site_uuid));
}
QString DiveObjectHelper::duration() const
diff --git a/core/subsurface-qt/DiveObjectHelper.h b/core/subsurface-qt/DiveObjectHelper.h
index 1070b855e..c5f116e1a 100644
--- a/core/subsurface-qt/DiveObjectHelper.h
+++ b/core/subsurface-qt/DiveObjectHelper.h
@@ -20,7 +20,7 @@ class DiveObjectHelper : public QObject {
Q_PROPERTY(QString location READ location CONSTANT)
Q_PROPERTY(QString gps READ gps CONSTANT)
Q_PROPERTY(QString gps_decimal READ gps_decimal CONSTANT)
- Q_PROPERTY(QVariant dive_site_uuid READ dive_site_uuid CONSTANT)
+ Q_PROPERTY(QVariant dive_site READ dive_site CONSTANT)
Q_PROPERTY(QString duration READ duration CONSTANT)
Q_PROPERTY(bool noDive READ noDive CONSTANT)
Q_PROPERTY(QString depth READ depth CONSTANT)
@@ -65,7 +65,7 @@ public:
QString location() const;
QString gps() const;
QString gps_decimal() const;
- QVariant dive_site_uuid() const;
+ QVariant dive_site() const;
QString duration() const;
bool noDive() const;
QString depth() const;
diff --git a/map-widget/qmlmapwidgethelper.cpp b/map-widget/qmlmapwidgethelper.cpp
index e4311cf83..a4960608a 100644
--- a/map-widget/qmlmapwidgethelper.cpp
+++ b/map-widget/qmlmapwidgethelper.cpp
@@ -22,19 +22,17 @@ MapWidgetHelper::MapWidgetHelper(QObject *parent) : QObject(parent)
this, SLOT(selectedLocationChanged(MapLocation *)));
}
-QGeoCoordinate MapWidgetHelper::getCoordinatesForUUID(QVariant dive_site_uuid)
+QGeoCoordinate MapWidgetHelper::getCoordinates(QVariant dive_site)
{
- const uint32_t uuid = qvariant_cast<uint32_t>(dive_site_uuid);
- struct dive_site *ds = get_dive_site_by_uuid(uuid);
+ struct dive_site *ds = (struct dive_site *)dive_site.value<uintptr_t>();
if (!ds || !dive_site_has_gps_location(ds))
return QGeoCoordinate(0.0, 0.0);
return QGeoCoordinate(ds->location.lat.udeg * 0.000001, ds->location.lon.udeg * 0.000001);
}
-void MapWidgetHelper::centerOnDiveSiteUUID(QVariant dive_site_uuid)
+void MapWidgetHelper::centerOnDiveSite(QVariant dive_site)
{
- const uint32_t uuid = qvariant_cast<uint32_t>(dive_site_uuid);
- struct dive_site *ds = get_dive_site_by_uuid(uuid);
+ struct dive_site *ds = (struct dive_site *)dive_site.value<uintptr_t>();
if (ds)
centerOnDiveSite(ds);
}
diff --git a/map-widget/qmlmapwidgethelper.h b/map-widget/qmlmapwidgethelper.h
index f0d17a28d..8fad3aed2 100644
--- a/map-widget/qmlmapwidgethelper.h
+++ b/map-widget/qmlmapwidgethelper.h
@@ -29,8 +29,8 @@ public:
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 QGeoCoordinate getCoordinates(QVariant dive_site);
+ Q_INVOKABLE void centerOnDiveSite(QVariant dive_site);
Q_INVOKABLE void reloadMapLocations();
Q_INVOKABLE void copyToClipboardCoordinates(QGeoCoordinate coord, bool formatTraditional);
Q_INVOKABLE void calculateSmallCircleRadius(QGeoCoordinate coord);
diff --git a/mobile-widgets/qml/DiveDetails.qml b/mobile-widgets/qml/DiveDetails.qml
index ea236dfaf..fbffa5303 100644
--- a/mobile-widgets/qml/DiveDetails.qml
+++ b/mobile-widgets/qml/DiveDetails.qml
@@ -180,7 +180,7 @@ Kirigami.Page {
}
onTriggered: {
showMap()
- mapPage.centerOnDiveSiteUUID(currentItem.modelData.dive.dive_site_uuid)
+ mapPage.centerOnDiveSite(currentItem.modelData.dive.dive_site)
}
}
diff --git a/mobile-widgets/qml/DiveDetailsView.qml b/mobile-widgets/qml/DiveDetailsView.qml
index f80e4ce78..1060f5246 100644
--- a/mobile-widgets/qml/DiveDetailsView.qml
+++ b/mobile-widgets/qml/DiveDetailsView.qml
@@ -52,7 +52,7 @@ Item {
enabled: dive.gps_decimal !== ""
onClicked: {
showMap()
- mapPage.centerOnDiveSiteUUID(dive.dive_site_uuid)
+ mapPage.centerOnDiveSite(dive.dive_site)
}
}
}
@@ -63,7 +63,7 @@ Item {
text: qsTr("Map it")
onClicked: {
showMap()
- mapPage.centerOnDiveSiteUUID(dive.dive_site_uuid)
+ mapPage.centerOnDiveSite(dive.dive_site)
}
}
Row {
diff --git a/mobile-widgets/qml/MapPage.qml b/mobile-widgets/qml/MapPage.qml
index 9497ca7fc..f000c2020 100644
--- a/mobile-widgets/qml/MapPage.qml
+++ b/mobile-widgets/qml/MapPage.qml
@@ -40,19 +40,19 @@ Kirigami.Page {
mapWidget.mapHelper.reloadMapLocations()
}
- function centerOnDiveSiteUUID(uuid) {
- if (!uuid) {
- console.warn("main.qml: centerOnDiveSiteUUI(): uuid is undefined!")
+ function centerOnDiveSite(ds) {
+ if (!ds) {
+ console.warn("main.qml: centerOnDiveSite(): dive site is undefined!")
return
}
// on firstRun, hard pan/center the map to the desired location so that
// we don't start at an arbitrary location such as [0,0] or London.
if (firstRun) {
- var coord = mapWidget.mapHelper.getCoordinatesForUUID(uuid)
+ var coord = mapWidget.mapHelper.getCoordinates(ds)
centerOnLocationHard(coord.latitude, coord.longitude)
firstRun = false
- } // continue here as centerOnDiveSiteUUID() also does marker selection.
- mapWidget.mapHelper.centerOnDiveSiteUUID(uuid)
+ } // continue here as centerOnDiveSite() also does marker selection.
+ mapWidget.mapHelper.centerOnDiveSite(ds)
}
function centerOnLocation(lat, lon) {