mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
The size of the to-be-created thumbnails was passed from DivePictureModel to Thumbnailer. This became more and more bothersome, because the size had to be stored with the request. Calling from Thumbnailer into DivePictureModel was not an option, since this is not linked to all tests. Therefore, move these functions to the Thumbnailer class. Since the maximum thumbnail size is now known to the thumbnailer, the dummy and failure images can be precalculated, which makes switching between dives faster. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
40 lines
1.1 KiB
C++
40 lines
1.1 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef DIVEPICTUREMODEL_H
|
|
#define DIVEPICTUREMODEL_H
|
|
|
|
#include <QAbstractTableModel>
|
|
#include <QImage>
|
|
#include <QFuture>
|
|
|
|
struct PictureEntry {
|
|
struct picture *picture;
|
|
QString filename;
|
|
QImage image;
|
|
int offsetSeconds;
|
|
};
|
|
|
|
class DivePictureModel : public QAbstractTableModel {
|
|
Q_OBJECT
|
|
public:
|
|
static DivePictureModel *instance();
|
|
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
|
|
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
|
|
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
|
|
virtual void updateDivePictures();
|
|
void updateDivePicturesWhenDone(QList<QFuture<void>>);
|
|
void removePicture(const QString& fileUrl, bool last);
|
|
int rowDDStart, rowDDEnd;
|
|
public slots:
|
|
void setZoomLevel(int level);
|
|
void updateThumbnail(QString filename, QImage thumbnail);
|
|
private:
|
|
DivePictureModel();
|
|
QList<PictureEntry> pictures;
|
|
double zoomLevel; // -1.0: minimum, 0.0: standard, 1.0: maximum
|
|
int size;
|
|
int defaultSize;
|
|
void updateThumbnails();
|
|
void updateZoom();
|
|
};
|
|
|
|
#endif
|