mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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 <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
e8b3fdb4a6
commit
920eb7576f
5 changed files with 11 additions and 8 deletions
|
@ -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*>((void *)ds); // Not nice: casting away const
|
||||
case DIVESITE: return QVariant::fromValue<dive_site *>((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 *>((void *)ds); // Not nice: casting away const
|
||||
return QVariant::fromValue<dive_site *>((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<void *>();
|
||||
struct dive_site *ds = sourceModel()->index(sourceRow, LocationInformationModel::DIVESITE, parent).data().value<dive_site *>();
|
||||
if (ds == ignoreDs || ds == RECENTLY_ADDED_DIVESITE)
|
||||
return false;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue