summaryrefslogtreecommitdiffstats
path: root/qt-models/divesitepicturesmodel.cpp
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2017-12-10 00:07:46 +0100
committerGravatar Robert C. Helling <helling@atdotde.de>2017-12-10 15:00:53 +0100
commitc73828d6055db664354ae5d1b2637d379294ef8a (patch)
treed750fbabc588d9fd672b4b58cef152ad138573b1 /qt-models/divesitepicturesmodel.cpp
parenta07d3b7bfe30f92df8d7e12d364db5aec0a18e46 (diff)
downloadsubsurface-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.cpp24
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();
}