mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 14:40:28 +00:00
f47f2773fd
On deletion of a single or multiple pictures, the whole DivePictureModel was repopulated, which was clearly visible in the UI, owing to the reconstructing of all images in the profile plot. To avoid this vexing behavior, implement proper deletion routines in DivePictureModel and ProfileWidget2. Since this needs sensible erase() semantics the QList<PictureEntry> member of DivePictureModel was replaced by a QVector. A QVector should be the default anyway, unless there are very specific reasons to use a QList (which actually is a deque, not a classical linked list). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
42 lines
1.2 KiB
C++
42 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 updateDivePicturesWhenDone(QList<QFuture<void>>);
|
|
void removePictures(const QVector<QString> &fileUrls);
|
|
int rowDDStart, rowDDEnd;
|
|
void updateDivePictureOffset(const QString &filename, int offsetSeconds);
|
|
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;
|
|
int defaultSize;
|
|
void updateThumbnails();
|
|
void updateZoom();
|
|
};
|
|
|
|
#endif
|