subsurface/qt-ui/divepicturewidget.cpp
Tomaz Canabrava 42f36d6315 Update the picture model to use the new picture function calls.
Update the picture model to use the new picture function calls, wich made
the code smaller and easyer to understand. AND as a plus, it doesn't use
the magic 123 identifier for pictures.  AND it correctly adds images
without timestamp to the list.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-03 00:01:13 -07:00

72 lines
1.6 KiB
C++

#include "divepicturewidget.h"
#include <dive.h>
#include <qtconcurrentmap.h>
void DivePictureDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyledItemDelegate::paint(painter, option, index);
}
DivePictureModel::DivePictureModel(QObject *parent): QAbstractTableModel(parent)
{
}
typedef QPair<QString, QPixmap> SPixmap;
typedef QList<SPixmap> SPixmapList;
SPixmap scaleImages(const QString& s) {
QPixmap p = QPixmap(s).scaled(128,128, Qt::KeepAspectRatio);
SPixmap ret;
ret.first = s;
ret.second = p;
return ret;
}
void DivePictureModel::updateDivePictures(int divenr)
{
if (numberOfPictures != 0) {
beginRemoveRows(QModelIndex(), 0, numberOfPictures-1);
numberOfPictures = 0;
endRemoveRows();
}
struct dive *d = get_dive(divenr);
int numberOfPictures = dive_get_picture_count(d);
if (!d || numberOfPictures == 0) {
return;
}
QStringList pictures;
FOR_EACH_PICTURE( d ) {
pictures.push_back(QString(picture->filename));
}
stringPixmapCache.clear();
SPixmapList retList = QtConcurrent::blockingMapped<SPixmapList>( pictures, scaleImages);
Q_FOREACH(const SPixmap & pixmap, retList)
stringPixmapCache[pixmap.first] = pixmap.second;
beginInsertRows(QModelIndex(), 0, numberOfPictures-1);
endInsertRows();
}
int DivePictureModel::columnCount(const QModelIndex &parent) const
{
}
QVariant DivePictureModel::data(const QModelIndex &index, int role) const
{
}
int DivePictureModel::rowCount(const QModelIndex &parent) const
{
return numberOfPictures;
}
DivePictureWidget::DivePictureWidget(QWidget *parent): QListView(parent)
{
}