From 5c87d6faa60b14e4f84c67b2839615cbcb927f9f Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Wed, 11 Sep 2019 00:17:45 +0200 Subject: [PATCH] Implement sending other message types in qml timeline not using placeholders in timeline for now --- src/timeline2/TimelineViewManager.cpp | 78 +++++++++++++++++++++++++++ src/timeline2/TimelineViewManager.h | 14 ++--- 2 files changed, 83 insertions(+), 9 deletions(-) diff --git a/src/timeline2/TimelineViewManager.cpp b/src/timeline2/TimelineViewManager.cpp index 6aa2ff43..b0ed4eab 100644 --- a/src/timeline2/TimelineViewManager.cpp +++ b/src/timeline2/TimelineViewManager.cpp @@ -100,3 +100,81 @@ TimelineViewManager::queueReplyMessage(const QString &reply, const RelatedInfo & if (timeline_) timeline_->sendMessage(text); } + +void +TimelineViewManager::queueEmoteMessage(const QString &msg) +{ + auto html = utils::markdownToHtml(msg); + + mtx::events::msg::Emote emote; + emote.body = msg.trimmed().toStdString(); + + if (html != msg.trimmed().toHtmlEscaped()) + emote.formatted_body = html.toStdString(); + + if (timeline_) + timeline_->sendMessage(emote); +} + +void +TimelineViewManager::queueImageMessage(const QString &roomid, + const QString &filename, + const QString &url, + const QString &mime, + uint64_t dsize, + const QSize &dimensions) +{ + mtx::events::msg::Image image; + image.info.mimetype = mime.toStdString(); + image.info.size = dsize; + image.body = filename.toStdString(); + image.url = url.toStdString(); + image.info.h = dimensions.height(); + image.info.w = dimensions.width(); + models.value(roomid)->sendMessage(image); +} + +void +TimelineViewManager::queueFileMessage(const QString &roomid, + const QString &filename, + const QString &url, + const QString &mime, + uint64_t dsize) +{ + mtx::events::msg::File file; + file.info.mimetype = mime.toStdString(); + file.info.size = dsize; + file.body = filename.toStdString(); + file.url = url.toStdString(); + models.value(roomid)->sendMessage(file); +} + +void +TimelineViewManager::queueAudioMessage(const QString &roomid, + const QString &filename, + const QString &url, + const QString &mime, + uint64_t dsize) +{ + mtx::events::msg::Audio audio; + audio.info.mimetype = mime.toStdString(); + audio.info.size = dsize; + audio.body = filename.toStdString(); + audio.url = url.toStdString(); + models.value(roomid)->sendMessage(audio); +} + +void +TimelineViewManager::queueVideoMessage(const QString &roomid, + const QString &filename, + const QString &url, + const QString &mime, + uint64_t dsize) +{ + mtx::events::msg::Video video; + video.info.mimetype = mime.toStdString(); + video.info.size = dsize; + video.body = filename.toStdString(); + video.url = url.toStdString(); + models.value(roomid)->sendMessage(video); +} diff --git a/src/timeline2/TimelineViewManager.h b/src/timeline2/TimelineViewManager.h index 7ec0da5f..c2d1a8c0 100644 --- a/src/timeline2/TimelineViewManager.h +++ b/src/timeline2/TimelineViewManager.h @@ -48,32 +48,28 @@ public slots: void queueTextMessage(const QString &msg); void queueReplyMessage(const QString &reply, const RelatedInfo &related); - void queueEmoteMessage(const QString &msg) {} + void queueEmoteMessage(const QString &msg); void queueImageMessage(const QString &roomid, const QString &filename, const QString &url, const QString &mime, uint64_t dsize, - const QSize &dimensions) - {} + const QSize &dimensions); void queueFileMessage(const QString &roomid, const QString &filename, const QString &url, const QString &mime, - uint64_t dsize) - {} + uint64_t dsize); void queueAudioMessage(const QString &roomid, const QString &filename, const QString &url, const QString &mime, - uint64_t dsize) - {} + uint64_t dsize); void queueVideoMessage(const QString &roomid, const QString &filename, const QString &url, const QString &mime, - uint64_t dsize) - {} + uint64_t dsize); private: QQuickView *view;