diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2018-10-25 20:46:12 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2018-10-29 00:09:31 +0000 |
commit | 75b5d61522f3721adb1761141ce1aeb79c3761c1 (patch) | |
tree | b9cb8f62df1d7fa2210b4b2c34ef8afb879bc5c1 | |
parent | 872d56de0122036e1b9d37348d758b40dcd142d9 (diff) | |
download | subsurface-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.cpp | 4 | ||||
-rw-r--r-- | core/subsurface-qt/DiveObjectHelper.h | 4 | ||||
-rw-r--r-- | map-widget/qmlmapwidgethelper.cpp | 10 | ||||
-rw-r--r-- | map-widget/qmlmapwidgethelper.h | 4 | ||||
-rw-r--r-- | mobile-widgets/qml/DiveDetails.qml | 2 | ||||
-rw-r--r-- | mobile-widgets/qml/DiveDetailsView.qml | 4 | ||||
-rw-r--r-- | mobile-widgets/qml/MapPage.qml | 12 |
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) { |