diff --git a/src/TextInputWidget.cpp b/src/TextInputWidget.cpp index 1ae26c2d6bd6575f992306c9ab0dff4c6fc3d85b..f723c01ac92774977deb9aef7896a9d89a051a13 100644 --- a/src/TextInputWidget.cpp +++ b/src/TextInputWidget.cpp @@ -306,8 +306,9 @@ FilteredTextEdit::insertFromMimeData(const QMimeData *source) const auto audio = formats.filter("audio/", Qt::CaseInsensitive); const auto video = formats.filter("video/", Qt::CaseInsensitive); - if (!image.empty()) { - showPreview(source, image); + if (source->hasImage()) { + QImage img = qvariant_cast<QImage>(source->imageData()); + previewDialog_.setPreview(img, image.front()); } else if (!audio.empty()) { showPreview(source, audio); } else if (!video.empty()) { diff --git a/src/TextInputWidget.h b/src/TextInputWidget.h index 4a72636462fa779a475ac0999ef0b46cfd506c04..71f794d13e5be56343ffbcc88b1b709c7b89bbe5 100644 --- a/src/TextInputWidget.h +++ b/src/TextInputWidget.h @@ -34,10 +34,6 @@ #include "popups/ReplyPopup.h" #include "popups/SuggestionsPopup.h" -namespace dialogs { -class PreviewUploadOverlay; -} - struct SearchResult; class FlatButton; diff --git a/src/dialogs/PreviewUploadOverlay.cpp b/src/dialogs/PreviewUploadOverlay.cpp index c404799ec290a4d5ab0141a5c1198da4d901ba2c..31d0121406645a992c9a96f24333927f751d31c6 100644 --- a/src/dialogs/PreviewUploadOverlay.cpp +++ b/src/dialogs/PreviewUploadOverlay.cpp @@ -134,6 +134,28 @@ PreviewUploadOverlay::setLabels(const QString &type, const QString &mime, uint64 } } +void +PreviewUploadOverlay::setPreview(const QImage &src, const QString &mime) +{ + auto const &split = mime.split('/'); + auto const &type = split[1]; + + QBuffer buffer(&data_); + buffer.open(QIODevice::WriteOnly); + if (src.save(&buffer, type.toStdString().c_str())) + titleLabel_.setText(QString{tr(DEFAULT)}.arg("image")); + else + titleLabel_.setText(QString{tr(ERR_MSG)}.arg(type)); + + mediaType_ = split[0]; + filePath_ = "clipboard." + type; + image_.convertFromImage(src); + isImage_ = true; + + titleLabel_.setText(QString{tr(DEFAULT)}.arg("image")); + init(); +} + void PreviewUploadOverlay::setPreview(const QByteArray data, const QString &mime) { diff --git a/src/dialogs/PreviewUploadOverlay.h b/src/dialogs/PreviewUploadOverlay.h index 8099d9c2176174e29f0e136193ad6de1f4f25bcb..11cd49bcfe1f952d2f1393c9cf7967a042eaf5a4 100644 --- a/src/dialogs/PreviewUploadOverlay.h +++ b/src/dialogs/PreviewUploadOverlay.h @@ -17,6 +17,7 @@ #pragma once +#include <QImage> #include <QLabel> #include <QLineEdit> #include <QPixmap> @@ -33,6 +34,7 @@ class PreviewUploadOverlay : public QWidget public: PreviewUploadOverlay(QWidget *parent = nullptr); + void setPreview(const QImage &src, const QString &mime); void setPreview(const QByteArray data, const QString &mime); void setPreview(const QString &path);