summary refs log tree commit diff
path: root/src/ImageItem.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/ImageItem.cc')
-rw-r--r--src/ImageItem.cc28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/ImageItem.cc b/src/ImageItem.cc

index d4244317..e84a2a9f 100644 --- a/src/ImageItem.cc +++ b/src/ImageItem.cc
@@ -18,6 +18,7 @@ #include <QBrush> #include <QDebug> #include <QDesktopServices> +#include <QFileInfo> #include <QImage> #include <QPainter> #include <QPixmap> @@ -61,6 +62,33 @@ ImageItem::ImageItem(QSharedPointer<MatrixClient> client, SLOT(imageDownloaded(const QString &, const QPixmap &))); } +ImageItem::ImageItem(QSharedPointer<MatrixClient> client, + const QString &url, + const QString &filename, + QWidget *parent) + : QWidget(parent) + , url_{ url } + , text_{ QFileInfo(filename).fileName() } + , client_{ client } +{ + setMouseTracking(true); + setCursor(Qt::PointingHandCursor); + setAttribute(Qt::WA_Hover, true); + + QList<QString> url_parts = url_.toString().split("mxc://"); + + if (url_parts.size() != 2) { + qDebug() << "Invalid format for image" << url_.toString(); + return; + } + + QString media_params = url_parts[1]; + url_ = QString("%1/_matrix/media/r0/download/%2") + .arg(client_.data()->getHomeServer().toString(), media_params); + + setImage(QPixmap(filename)); +} + void ImageItem::imageDownloaded(const QString &event_id, const QPixmap &img) {