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>
This commit is contained in:
Tomaz Canabrava 2014-06-02 18:41:19 -03:00 committed by Dirk Hohndel
parent d95d1735b5
commit 42f36d6315

View file

@ -15,7 +15,7 @@ DivePictureModel::DivePictureModel(QObject *parent): QAbstractTableModel(parent)
typedef QPair<QString, QPixmap> SPixmap; typedef QPair<QString, QPixmap> SPixmap;
typedef QList<SPixmap> SPixmapList; typedef QList<SPixmap> SPixmapList;
SPixmap scaleImages(const QString& s){ SPixmap scaleImages(const QString& s) {
QPixmap p = QPixmap(s).scaled(128,128, Qt::KeepAspectRatio); QPixmap p = QPixmap(s).scaled(128,128, Qt::KeepAspectRatio);
SPixmap ret; SPixmap ret;
ret.first = s; ret.first = s;
@ -25,39 +25,30 @@ SPixmap scaleImages(const QString& s){
void DivePictureModel::updateDivePictures(int divenr) void DivePictureModel::updateDivePictures(int divenr)
{ {
qDebug() << "Updating dive pictures."; if (numberOfPictures != 0) {
beginRemoveRows(QModelIndex(), 0, numberOfPictures-1); beginRemoveRows(QModelIndex(), 0, numberOfPictures-1);
numberOfPictures = 0; numberOfPictures = 0;
endRemoveRows(); endRemoveRows();
}
QStringList pictures;
struct dive *d = get_dive(divenr); struct dive *d = get_dive(divenr);
if (!d){ int numberOfPictures = dive_get_picture_count(d);
qDebug() << "Got no dive, exiting."; if (!d || numberOfPictures == 0) {
return; return;
} }
// All pictures are set in *all* divecomputers. ( waste of memory if > 100 pictures? )
// so just get from the first one. QStringList pictures;
struct event *ev = d->dc.events; FOR_EACH_PICTURE( d ) {
while(ev){ pictures.push_back(QString(picture->filename));
if(ev->type == 123){ // 123 means PICTURE.
numberOfPictures++;
pictures.push_back(QString(ev->name));
}
ev = ev->next;
} }
stringPixmapCache.clear();
SPixmapList retList = QtConcurrent::blockingMapped<SPixmapList>( pictures, scaleImages); SPixmapList retList = QtConcurrent::blockingMapped<SPixmapList>( pictures, scaleImages);
Q_FOREACH(const SPixmap & pixmap, retList) Q_FOREACH(const SPixmap & pixmap, retList)
stringPixmapCache[pixmap.first] = pixmap.second; stringPixmapCache[pixmap.first] = pixmap.second;
if (numberOfPictures == 0){
qDebug() << "Got no pictures, exiting.";
return;
}
beginInsertRows(QModelIndex(), 0, numberOfPictures-1); beginInsertRows(QModelIndex(), 0, numberOfPictures-1);
endInsertRows(); endInsertRows();
qDebug() << "Everything Ok.";
} }
int DivePictureModel::columnCount(const QModelIndex &parent) const int DivePictureModel::columnCount(const QModelIndex &parent) const