mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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>
This commit is contained in:
parent
6f98dca26e
commit
b9b1b3146b
8 changed files with 64 additions and 69 deletions
|
@ -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 &);
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue