summaryrefslogtreecommitdiffstats
path: root/qt-models/divesitepicturesmodel.cpp
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@gmail.com>2015-08-06 10:14:18 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-08-15 04:59:01 -0700
commited30059183f8a6d5d8e0692690f16f7f665fd369 (patch)
tree8b6fa24c49473c123e14d59193d117903b9a7de3 /qt-models/divesitepicturesmodel.cpp
parent342479586d1f34a2b7f3d1d69037cb0d631489fa (diff)
downloadsubsurface-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.cpp45
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();
+}