diff options
author | Tomaz Canabrava <tomaz.canabrava@gmail.com> | 2015-08-06 10:14:18 -0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-08-15 04:59:01 -0700 |
commit | ed30059183f8a6d5d8e0692690f16f7f665fd369 (patch) | |
tree | 8b6fa24c49473c123e14d59193d117903b9a7de3 /qt-models/divesitepicturesmodel.cpp | |
parent | 342479586d1f34a2b7f3d1d69037cb0d631489fa (diff) | |
download | subsurface-ed30059183f8a6d5d8e0692690f16f7f665fd369.tar.gz |
Add DiveSitePicturesModel
This model should be used inside the Edit Dive Site mode.
It should display all photos from all dives that are part
of this dive site, ignoring trips.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-models/divesitepicturesmodel.cpp')
-rw-r--r-- | qt-models/divesitepicturesmodel.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/qt-models/divesitepicturesmodel.cpp b/qt-models/divesitepicturesmodel.cpp new file mode 100644 index 000000000..3777f1d36 --- /dev/null +++ b/qt-models/divesitepicturesmodel.cpp @@ -0,0 +1,45 @@ +#include "divesitepicturesmodel.h" +#include "dive.h" +#include "stdint.h" + +#include <QtConcurrent> +#include <QPixmap> + +DiveSitePicturesModel* DiveSitePicturesModel::instance() { + static DiveSitePicturesModel *self = new DiveSitePicturesModel(); + return self; +} + +DiveSitePicturesModel::DiveSitePicturesModel() { + +} + +void DiveSitePicturesModel::updateDivePictures() { + beginResetModel(); + numberOfPictures = 0; + 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) { + stringPixmapCache[QString(picture->filename)].offsetSeconds = picture->offset.seconds; + pictures.push_back(picture); + } + } + } + + 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); + endInsertRows(); +} |