summaryrefslogtreecommitdiffstats
path: root/qt-models/maplocationmodel.cpp
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2017-07-19 02:27:30 +0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-07-28 07:31:11 -0700
commit4b03216fdb7c8e915b0d4368ff9df74f810c4760 (patch)
tree09dde278c6597528fcdcbfd9b80598ddf018ee97 /qt-models/maplocationmodel.cpp
parenta9c0abd71aa6d70262d9b218187e4b8d3ec15f07 (diff)
downloadsubsurface-4b03216fdb7c8e915b0d4368ff9df74f810c4760.tar.gz
maplocationmodel: add a "selectedUuid" property to MapLocationModel
Inside the QML Map class there is a MapItemView item. This item uses a delegate that receive a "model" property from the MapLocationModel, but infact that's a QObject with the MapLocation defined properties. That's how MapItemView works. The problem here is that "model" QObject cannot be cast back to a MapLocation as the meta data in there does not include a MapLocation sub-class, for some reason. Even if using propery() on that QObject to fetch data like coordinates works, instead of storing this strange object pointer, store the MapLocation UUID (from dive_site) which is a uint32_t. setSelectedUuid() deals with this oddity and finds the correct MapLocation pointer in the table and dispatches a selectedLocationChanged() signal for it. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Diffstat (limited to 'qt-models/maplocationmodel.cpp')
-rw-r--r--qt-models/maplocationmodel.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/qt-models/maplocationmodel.cpp b/qt-models/maplocationmodel.cpp
index 8e07a7489..e01b46621 100644
--- a/qt-models/maplocationmodel.cpp
+++ b/qt-models/maplocationmodel.cpp
@@ -92,3 +92,19 @@ void MapLocationModel::clear()
m_mapLocations.clear();
endRemoveRows();
}
+
+quint32 MapLocationModel::selectedUuid()
+{
+ return m_selectedUuid;
+}
+
+void MapLocationModel::setSelectedUuid(quint32 uuid)
+{
+ m_selectedUuid = uuid;
+ MapLocation *location = NULL;
+ foreach(location, m_mapLocations) {
+ if (location->getRole(MapLocation::Roles::RoleUuid) == uuid)
+ break;
+ }
+ emit selectedLocationChanged(location);
+}