diff --git a/include/timeline/widgets/ImageItem.h b/include/timeline/widgets/ImageItem.h index a95104fb..210394bc 100644 --- a/include/timeline/widgets/ImageItem.h +++ b/include/timeline/widgets/ImageItem.h @@ -53,9 +53,6 @@ protected: void mousePressEvent(QMouseEvent *event) override; void resizeEvent(QResizeEvent *event) override; -private slots: - void imageDownloaded(const QString &event_id, const QPixmap &img); - private: void openUrl(); diff --git a/src/timeline/widgets/ImageItem.cc b/src/timeline/widgets/ImageItem.cc index 83ab96b1..a4f1ca57 100644 --- a/src/timeline/widgets/ImageItem.cc +++ b/src/timeline/widgets/ImageItem.cc @@ -21,6 +21,7 @@ #include #include #include +#include #include "Config.h" #include "Utils.h" @@ -55,9 +56,12 @@ ImageItem::ImageItem(QSharedPointer client, client_.data()->downloadImage(QString::fromStdString(event.event_id), url_); connect(client_.data(), - SIGNAL(imageDownloaded(const QString &, const QPixmap &)), + &MatrixClient::imageDownloaded, this, - SLOT(imageDownloaded(const QString &, const QPixmap &))); + [this](const QString &id, const QPixmap &img) { + if (id == QString::fromStdString(event_.event_id)) + setImage(img); + }); } ImageItem::ImageItem(QSharedPointer client, @@ -87,21 +91,16 @@ ImageItem::ImageItem(QSharedPointer client, url_ = QString("%1/_matrix/media/r0/download/%2") .arg(client_.data()->getHomeServer().toString(), media_params); - client_.data()->downloadImage(QString::fromStdString(event_.event_id), url_); + const auto request_id = QUuid::createUuid().toString(); + client_.data()->downloadImage(request_id, url_); connect(client_.data(), - SIGNAL(imageDownloaded(const QString &, const QPixmap &)), + &MatrixClient::imageDownloaded, this, - SLOT(imageDownloaded(const QString &, const QPixmap &))); -} - -void -ImageItem::imageDownloaded(const QString &event_id, const QPixmap &img) -{ - if (event_id != QString::fromStdString(event_.event_id)) - return; - - setImage(img); + [request_id, this](const QString &id, const QPixmap &img) { + if (id == request_id) + setImage(img); + }); } void