1 files changed, 30 insertions, 0 deletions
diff --git a/src/timeline/widgets/ImageItem.cc b/src/timeline/widgets/ImageItem.cc
index 2784f386..d28a4017 100644
--- a/src/timeline/widgets/ImageItem.cc
+++ b/src/timeline/widgets/ImageItem.cc
@@ -18,6 +18,7 @@
#include <QBrush>
#include <QDebug>
#include <QDesktopServices>
+#include <QFileDialog>
#include <QFileInfo>
#include <QPainter>
#include <QPixmap>
@@ -219,3 +220,32 @@ ImageItem::paintEvent(QPaintEvent *event)
painter.drawText(textRegion_, Qt::AlignVCenter, elidedText);
}
}
+
+void
+ImageItem::saveAs()
+{
+ auto filename = QFileDialog::getSaveFileName(this, tr("Save image"), text_);
+
+ if (filename.isEmpty())
+ return;
+
+ auto proxy = client_->downloadFile(url_);
+ connect(proxy,
+ &DownloadMediaProxy::fileDownloaded,
+ this,
+ [proxy, this, filename](const QByteArray &data) {
+ proxy->deleteLater();
+
+ try {
+ QFile file(filename);
+
+ if (!file.open(QIODevice::WriteOnly))
+ return;
+
+ file.write(data);
+ file.close();
+ } catch (const std::exception &ex) {
+ qDebug() << "Error while saving file to:" << ex.what();
+ }
+ });
+}
|