From 3fa14d3c4b73845db7d0f96be2e0fec13749333e Mon Sep 17 00:00:00 2001 From: Black Hat Date: Mon, 27 Aug 2018 19:29:50 +0800 Subject: [PATCH] Add image caching && update libqmatrixclient. --- include/libqmatrixclient | 2 +- src/imageprovider.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/libqmatrixclient b/include/libqmatrixclient index 4e4521892..d9ff200ff 160000 --- a/include/libqmatrixclient +++ b/include/libqmatrixclient @@ -1 +1 @@ -Subproject commit 4e45218924babe6708fe2128574a3cf6341fe3c6 +Subproject commit d9ff200ff62fb7f5b6b51082dc3979d5454a1bec diff --git a/src/imageprovider.cpp b/src/imageprovider.cpp index 33c181652..0b3b7a5d0 100644 --- a/src/imageprovider.cpp +++ b/src/imageprovider.cpp @@ -1,6 +1,8 @@ #include "imageprovider.h" +#include #include +#include #include #include @@ -30,6 +32,14 @@ QImage ImageProvider::requestImage(const QString& id, QSize* pSize, QUrl mxcUri{id}; + QUrl tempfilePath = QUrl::fromLocalFile( + QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/" + + mxcUri.fileName() + "-" + QString::number(requestedSize.width()) + + "x" + QString::number(requestedSize.height()) + ".png"); + + QImage cachedImage; + if (cachedImage.load(tempfilePath.toLocalFile())) return cachedImage; + MediaThumbnailJob* job = nullptr; QReadLocker locker(&m_lock); @@ -63,5 +73,7 @@ QImage ImageProvider::requestImage(const QString& id, QSize* pSize, if (pSize != nullptr) *pSize = result.size(); + result.save(tempfilePath.toLocalFile()); + return result; }