diff options
-rw-r--r-- | qt-ui/divepicturewidget.cpp | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/qt-ui/divepicturewidget.cpp b/qt-ui/divepicturewidget.cpp index eda4ff68c..d0155bd0f 100644 --- a/qt-ui/divepicturewidget.cpp +++ b/qt-ui/divepicturewidget.cpp @@ -15,7 +15,7 @@ DivePictureModel::DivePictureModel(QObject *parent): QAbstractTableModel(parent) typedef QPair<QString, QPixmap> SPixmap; typedef QList<SPixmap> SPixmapList; -SPixmap scaleImages(const QString& s){ +SPixmap scaleImages(const QString& s) { QPixmap p = QPixmap(s).scaled(128,128, Qt::KeepAspectRatio); SPixmap ret; ret.first = s; @@ -25,39 +25,30 @@ SPixmap scaleImages(const QString& s){ void DivePictureModel::updateDivePictures(int divenr) { - qDebug() << "Updating dive pictures."; - beginRemoveRows(QModelIndex(), 0, numberOfPictures-1); - numberOfPictures = 0; - endRemoveRows(); + if (numberOfPictures != 0) { + beginRemoveRows(QModelIndex(), 0, numberOfPictures-1); + numberOfPictures = 0; + endRemoveRows(); + } - QStringList pictures; struct dive *d = get_dive(divenr); - if (!d){ - qDebug() << "Got no dive, exiting."; + int numberOfPictures = dive_get_picture_count(d); + if (!d || numberOfPictures == 0) { return; } - // All pictures are set in *all* divecomputers. ( waste of memory if > 100 pictures? ) - // so just get from the first one. - struct event *ev = d->dc.events; - while(ev){ - if(ev->type == 123){ // 123 means PICTURE. - numberOfPictures++; - pictures.push_back(QString(ev->name)); - } - ev = ev->next; + + 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; - if (numberOfPictures == 0){ - qDebug() << "Got no pictures, exiting."; - return; - } beginInsertRows(QModelIndex(), 0, numberOfPictures-1); endInsertRows(); - qDebug() << "Everything Ok."; } int DivePictureModel::columnCount(const QModelIndex &parent) const |