Simplify DivePictureModel

The code of DivePictureModel used a QHash to keep track of thumbnails.
Not only was the code rather complex - it also had the consequence that
pictures are sorted according to the hash function, i.e. seemingly
random.

This commit replaces the QHash by a simple QList which keeps track
of thumbnails and some meta-data.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2017-12-10 00:07:46 +01:00 committed by Robert C. Helling
parent a07d3b7bfe
commit c73828d605
3 changed files with 35 additions and 59 deletions

View file

@ -6,17 +6,15 @@
#include <QImage>
#include <QFuture>
struct PhotoHelper {
struct PictureEntry {
struct picture *picture;
QString filename;
QImage image;
int offsetSeconds;
};
typedef QList<struct picture *> SPictureList;
typedef struct picture *picturepointer;
typedef QPair<picturepointer, QImage> SPixmap;
// function that will scale the pixmap, used inside the QtConcurrent thread.
SPixmap scaleImages(picturepointer picture);
void scaleImages(PictureEntry &entry);
class DivePictureModel : public QAbstractTableModel {
Q_OBJECT
@ -31,11 +29,10 @@ public:
protected:
DivePictureModel();
int numberOfPictures;
// Currently, load the images on the fly
// Later, use a thread to load the images
// Later, save the thumbnails so we don't need to reopen every time.
QHash<QString, PhotoHelper> stringPixmapCache;
QList<PictureEntry> pictures;
};
#endif