diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-04-14 22:14:23 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-05-06 13:58:09 -0700 |
commit | bd960ea088aebb19de9cdee455103e1878e2506f (patch) | |
tree | abb109abf6e5656c48f38a7ee7da98829856906c /qt-models | |
parent | 0d06eb83d87302c235f682e95a767d4e37904ea6 (diff) | |
download | subsurface-bd960ea088aebb19de9cdee455103e1878e2506f.tar.gz |
media: store dive instead of dive-id in DivePictureModel
dive-pointers are stable and the dive picture model is reset
if a selected dive is removed, so there is no risk in keeping
pointers.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'qt-models')
-rw-r--r-- | qt-models/divepicturemodel.cpp | 8 | ||||
-rw-r--r-- | qt-models/divepicturemodel.h | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/qt-models/divepicturemodel.cpp b/qt-models/divepicturemodel.cpp index 6272935de..548f8e7be 100644 --- a/qt-models/divepicturemodel.cpp +++ b/qt-models/divepicturemodel.cpp @@ -63,10 +63,10 @@ void DivePictureModel::updateDivePictures() if (dive->selected) { int first = pictures.count(); FOR_EACH_PICTURE(dive) - pictures.push_back({ dive->id, picture->filename, {}, picture->offset.seconds, {.seconds = 0}}); + pictures.push_back({ dive, picture->filename, {}, picture->offset.seconds, {.seconds = 0}}); // Sort pictures of this dive by offset. - // Thus, the list will be sorted by (diveId, offset). + // Thus, the list will be sorted by (dive, offset). std::sort(pictures.begin() + first, pictures.end(), [](const PictureEntry &a, const PictureEntry &b) { return a.offsetSeconds < b.offsetSeconds; }); } @@ -218,8 +218,8 @@ void DivePictureModel::pictureOffsetChanged(dive *d, const QString filenameIn, o std::string filename = filenameIn.toStdString(); // Find the pictures of the given dive. - auto from = std::find_if(pictures.begin(), pictures.end(), [d](const PictureEntry &e) { return e.diveId == d->id; }); - auto to = std::find_if(from, pictures.end(), [d](const PictureEntry &e) { return e.diveId != d->id; }); + auto from = std::find_if(pictures.begin(), pictures.end(), [d](const PictureEntry &e) { return e.d == d; }); + auto to = std::find_if(from, pictures.end(), [d](const PictureEntry &e) { return e.d != d; }); // Find picture with the given filename auto oldPos = std::find_if(from, to, [filename](const PictureEntry &e) { return e.filename == filename; }); diff --git a/qt-models/divepicturemodel.h b/qt-models/divepicturemodel.h index 2d628f429..523d552e3 100644 --- a/qt-models/divepicturemodel.h +++ b/qt-models/divepicturemodel.h @@ -10,15 +10,15 @@ // We use std::string instead of QString to use the same character-encoding // as in the C core (UTF-8). This is crucial to guarantee the same sort-order. +struct dive; struct PictureEntry { - int diveId; + dive *d; std::string filename; QImage image; int offsetSeconds; duration_t length; }; -struct dive; class DivePictureModel : public QAbstractTableModel { Q_OBJECT public: |