Get rid of pointers to dive structures in the UI

The assumption that the pointer will keep pointing to a valid structure is
fundamentally flawed. And even if that is true today, it might change in
the future - just don't do it. Use the diveId instead.

The exception is when you own the structure and use it within one UI
interaction during which any way to change the dive_table is disabled
(e.g., while adding / editing a dive).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2014-01-07 11:57:20 +08:00
parent 9c617534a0
commit c3fe1a9e9f
5 changed files with 72 additions and 26 deletions

View file

@ -101,7 +101,7 @@ public slots:
void remove(const QModelIndex& index);
private:
struct dive *current;
int currentId;
int rows;
};
@ -130,7 +130,7 @@ public slots:
void remove(const QModelIndex& index);
private:
struct dive *current;
int currentId;
int rows;
};
@ -157,7 +157,7 @@ struct DiveItem : public TreeItem {
SUIT, CYLINDER, NITROX, SAC, OTU, MAXCNS, LOCATION, COLUMNS };
virtual QVariant data(int column, int role) const;
struct dive* dive;
int diveId;
virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
virtual Qt::ItemFlags flags(const QModelIndex& index) const;
QString displayDate() const;
@ -291,7 +291,7 @@ class ProfilePrintModel : public QAbstractTableModel
Q_OBJECT
private:
struct dive *dive;
int diveId;
QString truncateString(char *str, const int maxlen) const;
public: