diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2017-12-10 00:07:46 +0100 |
---|---|---|
committer | Robert C. Helling <helling@atdotde.de> | 2017-12-10 15:00:53 +0100 |
commit | c73828d6055db664354ae5d1b2637d379294ef8a (patch) | |
tree | d750fbabc588d9fd672b4b58cef152ad138573b1 /qt-models/divesitepicturesmodel.cpp | |
parent | a07d3b7bfe30f92df8d7e12d364db5aec0a18e46 (diff) | |
download | subsurface-c73828d6055db664354ae5d1b2637d379294ef8a.tar.gz |
Simplify DivePictureModel
The code of DivePictureModel used a QHash to keep track of thumbnails.
Not only was the code rather complex - it also had the consequence that
pictures are sorted according to the hash function, i.e. seemingly
random.
This commit replaces the QHash by a simple QList which keeps track
of thumbnails and some meta-data.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'qt-models/divesitepicturesmodel.cpp')
-rw-r--r-- | qt-models/divesitepicturesmodel.cpp | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/qt-models/divesitepicturesmodel.cpp b/qt-models/divesitepicturesmodel.cpp index 0cd444ca8..b83d616c0 100644 --- a/qt-models/divesitepicturesmodel.cpp +++ b/qt-models/divesitepicturesmodel.cpp @@ -17,30 +17,20 @@ DiveSitePicturesModel::DiveSitePicturesModel() { void DiveSitePicturesModel::updateDivePictures() { beginResetModel(); - numberOfPictures = 0; + pictures.clear(); endResetModel(); const uint32_t ds_uuid = displayed_dive_site.uuid; struct dive *d; int i; - stringPixmapCache.clear(); - SPictureList pictures; + for_each_dive (i, d) + if (d->dive_site_uuid == ds_uuid && dive_get_picture_count(d)) + FOR_EACH_PICTURE(d) + pictures.push_back({picture, picture->filename, QImage(), picture->offset.seconds}); - for_each_dive (i, d) { - if (d->dive_site_uuid == ds_uuid && dive_get_picture_count(d)) { - FOR_EACH_PICTURE(d) { - stringPixmapCache[QString(picture->filename)].offsetSeconds = picture->offset.seconds; - pictures.push_back(picture); - } - } - } + QtConcurrent::blockingMap(pictures, scaleImages); - QList<SPixmap> list = QtConcurrent::blockingMapped(pictures, scaleImages); - Q_FOREACH (const SPixmap &pixmap, list) - stringPixmapCache[pixmap.first->filename].image = pixmap.second; - - numberOfPictures = list.count(); - beginInsertRows(QModelIndex(), 0, numberOfPictures - 1); + beginInsertRows(QModelIndex(), 0, pictures.count() - 1); endInsertRows(); } |