From 9962d47b56eb15aba9339b22845566535c168483 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Fri, 17 Apr 2020 22:43:43 +0200 Subject: media: turn DivePictureModel::pictures into std::vector QVector doesn't have a function to insert a range of pictures, which we will need for undo of image adding/deletion. Moreover, std::vector gives us stronger guarantees. For example, if capacity is large enough, it guarantees that there will be no reallocation and thus iterators stay valid. I have not found such a guarantee in the Qt docs. Signed-off-by: Berthold Stoeger --- qt-models/divepicturemodel.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'qt-models/divepicturemodel.cpp') diff --git a/qt-models/divepicturemodel.cpp b/qt-models/divepicturemodel.cpp index 548f8e7be..351396e5f 100644 --- a/qt-models/divepicturemodel.cpp +++ b/qt-models/divepicturemodel.cpp @@ -52,7 +52,7 @@ void DivePictureModel::updateThumbnails() void DivePictureModel::updateDivePictures() { beginResetModel(); - if (!pictures.isEmpty()) { + if (!pictures.empty()) { pictures.clear(); Thumbnailer::instance()->clearWorkQueue(); } @@ -61,7 +61,7 @@ void DivePictureModel::updateDivePictures() struct dive *dive; for_each_dive (i, dive) { if (dive->selected) { - int first = pictures.count(); + size_t first = pictures.size(); FOR_EACH_PICTURE(dive) pictures.push_back({ dive, picture->filename, {}, picture->offset.seconds, {.seconds = 0}}); @@ -141,11 +141,11 @@ void DivePictureModel::removePictures(const QVector &fileUrlsIn) copy_dive(current_dive, &displayed_dive); mark_divelist_changed(true); - for (int i = 0; i < pictures.size(); ++i) { + for (size_t i = 0; i < pictures.size(); ++i) { // Find range [i j) of pictures to remove if (std::find(fileUrls.begin(), fileUrls.end(), pictures[i].filename) == fileUrls.end()) continue; - int j; + size_t j; for (j = i + 1; j < pictures.size(); ++j) { if (std::find(fileUrls.begin(), fileUrls.end(), pictures[j].filename) == fileUrls.end()) break; @@ -162,12 +162,12 @@ void DivePictureModel::removePictures(const QVector &fileUrlsIn) int DivePictureModel::rowCount(const QModelIndex&) const { - return pictures.count(); + return (int)pictures.size(); } int DivePictureModel::findPictureId(const std::string &filename) { - for (int i = 0; i < pictures.size(); ++i) + for (int i = 0; i < (int)pictures.size(); ++i) if (pictures[i].filename == filename) return i; return -1; -- cgit v1.2.3-70-g09d2