From 9b18440b4f989da4fcd764f33291d17dbbcb82e3 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sat, 28 Sep 2019 11:07:58 +0200 Subject: Reenable ImageOverlay --- src/timeline2/TimelineViewManager.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'src/timeline2/TimelineViewManager.cpp') diff --git a/src/timeline2/TimelineViewManager.cpp b/src/timeline2/TimelineViewManager.cpp index 18297370..bf09ef5a 100644 --- a/src/timeline2/TimelineViewManager.cpp +++ b/src/timeline2/TimelineViewManager.cpp @@ -5,8 +5,10 @@ #include "Logging.h" #include "MxcImageProvider.h" +#include "dialogs/ImageOverlay.h" TimelineViewManager::TimelineViewManager(QWidget *parent) + : imgProvider(new MxcImageProvider()) { qmlRegisterUncreatableMetaObject(qml_mtx_events::staticMetaObject, "com.github.nheko", @@ -18,7 +20,7 @@ TimelineViewManager::TimelineViewManager(QWidget *parent) container = QWidget::createWindowContainer(view, parent); container->setMinimumSize(200, 200); view->rootContext()->setContextProperty("timelineManager", this); - view->engine()->addImageProvider("MxcImage", new MxcImageProvider()); + view->engine()->addImageProvider("MxcImage", imgProvider); view->setSource(QUrl("qrc:///qml/TimelineView.qml")); } @@ -52,6 +54,27 @@ TimelineViewManager::setHistoryView(const QString &room_id) } } +void +TimelineViewManager::openImageOverlay(QString url) const +{ + QQuickImageResponse *imgResponse = + imgProvider->requestImageResponse(url.remove("image://mxcimage/"), QSize()); + connect(imgResponse, &QQuickImageResponse::finished, this, [imgResponse]() { + if (!imgResponse->errorString().isEmpty()) { + nhlog::ui()->error("Error when retrieving image for overlay: {}", + imgResponse->errorString().toStdString()); + return; + } + auto pixmap = QPixmap::fromImage(imgResponse->textureFactory()->image()); + + auto imgDialog = new dialogs::ImageOverlay(pixmap); + imgDialog->show(); + // connect(imgDialog, &dialogs::ImageOverlay::saving, this, + // &ImageItem::saveAs); + Q_UNUSED(imgDialog); + }); +} + void TimelineViewManager::updateReadReceipts(const QString &room_id, const std::vector &event_ids) -- cgit 1.5.1