summaryrefslogtreecommitdiffstats
path: root/core/imagedownloader.cpp
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2018-05-27 15:42:22 +0200
committerGravatar Lubomir I. Ivanov <neolit123@gmail.com>2018-05-27 23:08:12 +0300
commit308e079ad6414152fe72ba0784582734d6801b75 (patch)
tree2add927a9dd6d4e967c754f1ce4533444deddcf8 /core/imagedownloader.cpp
parent23d38a982deafb6ef12f597a355dc4eae24b832f (diff)
downloadsubsurface-308e079ad6414152fe72ba0784582734d6801b75.tar.gz
Dive pictures: automatically recalculate thumbnails
If a thumbnail and the original picture can be accessed and the modification date of the thumbnail is before the modification date of the picture, recalculate the thumbnail. This causes more disk access and might give strange effects for picture files with messed up file timestamps (i.e. lying in the future) or messed up computer clocks (i.e. running in the past). Therefore, add a preference option to disable the new behavior. Default is set to enabled. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core/imagedownloader.cpp')
-rw-r--r--core/imagedownloader.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/core/imagedownloader.cpp b/core/imagedownloader.cpp
index 0c72f3381..da5c86b99 100644
--- a/core/imagedownloader.cpp
+++ b/core/imagedownloader.cpp
@@ -151,8 +151,24 @@ static QImage getThumbnailFromCache(const QString &picture_filename)
QString filename = thumbnailFileName(picture_filename);
if (filename.isEmpty())
return QImage();
-
QFile file(filename);
+
+ if (prefs.auto_recalculate_thumbnails) {
+ // Check if thumbnails is older than the (local) image file
+ QString filenameLocal = localFilePath(qPrintable(picture_filename));
+ QFileInfo pictureInfo(filenameLocal);
+ QFileInfo thumbnailInfo(file);
+ if (pictureInfo.exists() && thumbnailInfo.exists()) {
+ QDateTime pictureTime = pictureInfo.lastModified();
+ QDateTime thumbnailTime = thumbnailInfo.lastModified();
+ if (pictureTime.isValid() && thumbnailTime.isValid() && thumbnailTime < pictureTime) {
+ // Both files exist, have valid timestamps and thumbnail was calculated before picture.
+ // Return an empty thumbnail to signal recalculation of the thumbnail
+ return QImage();
+ }
+ }
+ }
+
if (!file.open(QIODevice::ReadOnly))
return QImage();
QDataStream stream(&file);