From 5c87d6faa60b14e4f84c67b2839615cbcb927f9f Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
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 6aa2ff43f..b0ed4eabd 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 7ec0da5f9..c2d1a8c02 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;
-- 
GitLab