From 920eb7576ff3c5fab19c12b7b291042817422ac5 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sun, 28 Oct 2018 21:16:42 +0100 Subject: Dive site: pass pointer-to-dive_site via QVariant There was this ugly pattern of passing pointers-to-dive_site via a QVariant of void * type. This is of course inherently unsafe. Pass these pointers using their proper types instead. This makes it necessary to register them in Qt's meta-type system. Doing so, fixes a bug: QML couldn't call into updateDiveSiteCoordinates() because it didn't know the type and thus the coordinates of the moved flag were not reflected in the divesite-dialog. Signed-off-by: Berthold Stoeger --- qt-models/divelocationmodel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'qt-models') diff --git a/qt-models/divelocationmodel.cpp b/qt-models/divelocationmodel.cpp index 18be89806..b84604bb5 100644 --- a/qt-models/divelocationmodel.cpp +++ b/qt-models/divelocationmodel.cpp @@ -41,7 +41,7 @@ QVariant LocationInformationModel::getDiveSiteData(const struct dive_site *ds, i case Qt::EditRole: case Qt::DisplayRole : switch(column) { - case DIVESITE: return QVariant::fromValue((void *)ds); // Not nice: casting away const + case DIVESITE: return QVariant::fromValue((dive_site *)ds); // Not nice: casting away const case NAME: return ds->name; case LATITUDE: return ds->location.lat.udeg; case LONGITUDE: return ds->location.lon.udeg; @@ -60,7 +60,7 @@ QVariant LocationInformationModel::getDiveSiteData(const struct dive_site *ds, i return QVariant(); } case DIVESITE_ROLE: - return QVariant::fromValue((void *)ds); // Not nice: casting away const + return QVariant::fromValue((dive_site *)ds); // Not nice: casting away const } return QVariant(); } @@ -119,7 +119,7 @@ GeoReferencingOptionsModel::GeoReferencingOptionsModel(QObject *parent) : QStrin bool GPSLocationInformationModel::filterAcceptsRow(int sourceRow, const QModelIndex &parent) const { - struct dive_site *ds = (struct dive_site *)sourceModel()->index(sourceRow, LocationInformationModel::DIVESITE, parent).data().value(); + struct dive_site *ds = sourceModel()->index(sourceRow, LocationInformationModel::DIVESITE, parent).data().value(); if (ds == ignoreDs || ds == RECENTLY_ADDED_DIVESITE) return false; -- cgit v1.2.3-70-g09d2