diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2018-10-25 08:02:06 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2018-10-29 00:09:31 +0000 |
commit | b9b1b3146b3a0a05efcb11c50a953f3e8f2e023c (patch) | |
tree | a40397ddd9d370deb5ae66920d0bf2e98bf27868 /qt-models/divelocationmodel.h | |
parent | 6f98dca26e342dff90c5dba81bf81cbeab5f6e63 (diff) | |
download | subsurface-b9b1b3146b3a0a05efcb11c50a953f3e8f2e023c.tar.gz |
Dive site: remove UUIDs from LocationInformationModel
Replace UUIDs from LocationInformationModel and fix the fallout.
Notably, replace the UUID "column" by a DIVESITE "column".
Getting pointers through Qt's QVariant is horrible, we'll have
to think about a better solution.
RECENTLY_ADDED_DIVESITE now defines to a special pointer to
struct dive_site (defined as ~0).
This fixes an interesting logic bug:
The old code checked the uuid of the LocationInformationModel (currUuid)
for the value "1", which corresponded to RECENTLY_ADDED_DIVESITE.
If equal, currType would be set to NEW_DIVE_SITE. Later, _currType_
was compared against _RECENTLY_ADDED_DIVESITE_. This would only work
because NEW_DIVE_SITE and RECENTLY_ADDED_DIVESITE both were defined
as 1.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'qt-models/divelocationmodel.h')
-rw-r--r-- | qt-models/divelocationmodel.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/qt-models/divelocationmodel.h b/qt-models/divelocationmodel.h index 5f95d5975..407031590 100644 --- a/qt-models/divelocationmodel.h +++ b/qt-models/divelocationmodel.h @@ -8,14 +8,14 @@ #include <stdint.h> #include "core/units.h" -#define RECENTLY_ADDED_DIVESITE 1 +#define RECENTLY_ADDED_DIVESITE ((struct dive_site *)~0) class LocationInformationModel : public QAbstractTableModel { Q_OBJECT public: // Common columns, roles and accessor function for all dive-site models. // Thus, different views can connect to different models. - enum Columns { UUID, NAME, LATITUDE, LONGITUDE, COORDS, DESCRIPTION, NOTES, TAXONOMY_1, TAXONOMY_2, TAXONOMY_3, COLUMNS}; + enum Columns { DIVESITE, NAME, LATITUDE, LONGITUDE, COORDS, DESCRIPTION, NOTES, TAXONOMY_1, TAXONOMY_2, TAXONOMY_3, COLUMNS}; enum Roles { DIVESITE_ROLE = Qt::UserRole + 1 }; static QVariant getDiveSiteData(const struct dive_site *ds, int column, int role); @@ -37,12 +37,12 @@ private: class GPSLocationInformationModel : public QSortFilterProxyModel { Q_OBJECT private: - uint32_t ignoreUuid; + const struct dive_site *ignoreDs; location_t location; bool filterAcceptsRow(int sourceRow, const QModelIndex &source_parent) const override; public: GPSLocationInformationModel(QObject *parent = nullptr); - void set(uint32_t ignoreUuid, const location_t &); + void set(const struct dive_site *ignoreDs, const location_t &); void setCoordinates(const location_t &); }; |