mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-03 15:43:09 +00:00
3d7865cf26
As long as ProfileWidget2 and DivePictureModel showed the same set of pictures and any change would lead to a full recalculation of the set, it made sense to let ProfileWidget2 use DivePictureModel's data. Recently, keeping the two lists in sync become more and more of a burden. Therefore, disconnect ProfileWidget2 and DivePictureModel. This will lead to some code-duplication and perhaps a temporary drop in UI-performance, but in the end the code is distinctly simpler and also more flexible. Thus, for example the DivePhotoTab could be changed to support headings without having to touch ProfileWidget2 at all. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
41 lines
1.2 KiB
C++
41 lines
1.2 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 removePictures(const QVector<QString> &fileUrls);
|
|
void updateDivePictureOffset(const QString &filename, int offsetSeconds);
|
|
signals:
|
|
void picturesRemoved(const QVector<QString> &fileUrls);
|
|
public slots:
|
|
void setZoomLevel(int level);
|
|
void updateThumbnail(QString filename, QImage thumbnail);
|
|
private:
|
|
DivePictureModel();
|
|
QVector<PictureEntry> pictures;
|
|
int findPictureId(const QString &filename); // Return -1 if not found
|
|
double zoomLevel; // -1.0: minimum, 0.0: standard, 1.0: maximum
|
|
int size;
|
|
void updateThumbnails();
|
|
void updateZoom();
|
|
};
|
|
|
|
#endif
|