Port C++ to Qt6

QML is still broken
This commit is contained in:
Tobias Fella
2022-07-08 14:32:15 +02:00
parent 19fe439e95
commit 24748d42d8
7 changed files with 51 additions and 15 deletions

View File

@@ -6,12 +6,16 @@
#include <cmark.h>
#include <QFileInfo>
#include <QImageReader>
#include <QMetaObject>
#include <QMimeDatabase>
#include <QTextDocument>
#include <functional>
#if QT_VERSION > QT_VERSION_CHECK(6, 0, 0)
#include <QMediaMetaData>
#include <QMediaPlayer>
#endif
#include <qcoro/qcorosignal.h>
#include <qcoro/task.h>
@@ -35,6 +39,7 @@
#include "stickerevent.h"
#include "user.h"
#include "utils.h"
#include <events/eventcontent.h>
#include <KLocalizedString>
@@ -76,12 +81,38 @@ NeoChatRoom::NeoChatRoom(Connection *connection, QString roomId, JoinState joinS
}
void NeoChatRoom::uploadFile(const QUrl &url, const QString &body)
{
doUploadFile(url, body);
}
QCoro::Task<void> NeoChatRoom::doUploadFile(QUrl url, QString body)
{
if (url.isEmpty()) {
return;
co_return;
}
#if QT_VERSION > QT_VERSION_CHECK(6, 0, 0)
auto mime = QMimeDatabase().mimeTypeForUrl(url);
QFileInfo fileInfo(url.toLocalFile());
EventContent::TypedBase *content;
if (mime.name().startsWith("image/")) {
QImage image;
content = new EventContent::ImageContent(url, fileInfo.size(), mime, image.size(), fileInfo.fileName());
} else if (mime.name().startsWith("audio/")) {
content = new EventContent::AudioContent(url, fileInfo.size(), mime, fileInfo.fileName());
} else if (mime.name().startsWith("video/")) {
QMediaPlayer player;
player.setSource(url);
co_await qCoro(&player, &QMediaPlayer::mediaStatusChanged);
auto resolution = player.metaData().value(QMediaMetaData::Resolution).toSize();
content = new EventContent::VideoContent(url, fileInfo.size(), mime, resolution, fileInfo.fileName());
} else {
content = new EventContent::FileContent(url, fileInfo.size(), mime, fileInfo.fileName());
}
QString txnId = postFile(body.isEmpty() ? url.fileName() : body, content);
#else
QString txnId = postFile(body.isEmpty() ? url.fileName() : body, url, false);
#endif
setHasFileUploading(true);
#ifdef QUOTIENT_07
connect(this, &Room::fileTransferCompleted, [this, txnId](const QString &id, FileSourceInfo) {