4#include <QtCore/QFileInfo>
9 : QAbstractListModel(parent)
20 return static_cast<int>(_images.count());
25 if (!index.isValid() || index.row() < 0 || index.row() >= _images.count()) {
29 const ImageInfo &info = _images.at(index.row());
37 return static_cast<int>(info.status);
39 return statusToString(info.status);
41 return info.errorMessage;
43 return QVariant::fromValue(info.coordinate);
63 if (_images.isEmpty()) {
76 const int row = _images.count();
77 beginInsertRows(QModelIndex(), row, row);
80 info.filePath = filePath;
81 info.fileName = QFileInfo(filePath).fileName();
91 if (index < 0 || index >= _images.count()) {
95 ImageInfo &info = _images[index];
96 if (info.status != status || info.errorMessage != errorMessage) {
98 info.errorMessage = errorMessage;
100 const QModelIndex modelIndex = createIndex(index, 0);
107 if (index < 0 || index >= _images.count()) {
111 ImageInfo &info = _images[index];
112 if (info.coordinate != coordinate) {
113 info.coordinate = coordinate;
115 const QModelIndex modelIndex = createIndex(index, 0);
122 for (
int i = 0; i < _images.count(); ++i) {
123 if (_images.at(i).filePath == filePath) {
132 if (_images.isEmpty()) {
136 for (
int i = 0; i < _images.count(); ++i) {
137 _images[i].status = status;
138 _images[i].errorMessage.clear();
141 emit dataChanged(createIndex(0, 0), createIndex(_images.count() - 1, 0),
142 {StatusRole, StatusStringRole, ErrorMessageRole});
145QString GeoTagImageModel::statusToString(Status status)
149 return tr(
"Pending");
151 return tr(
"Processing");
155 return tr(
"Skipped");
#define QGC_LOGGING_CATEGORY(name, categoryStr)
Model for displaying geotagging image status in QML.
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
void setAllStatus(Status status)
void setStatusByPath(const QString &filePath, Status status, const QString &errorMessage=QString())
void setCoordinate(int index, const QGeoCoordinate &coordinate)
void setStatus(int index, Status status, const QString &errorMessage=QString())
int rowCount(const QModelIndex &parent=QModelIndex()) const override
~GeoTagImageModel() override
void addImage(const QString &filePath)
QHash< int, QByteArray > roleNames() const override