From fdb76bb5c1bdce765479442a70ddca80b867caa6 Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Wed, 29 Nov 2017 23:39:35 +0200 Subject: Implement file uploads fixes #24 --- include/TimelineView.h | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'include/TimelineView.h') diff --git a/include/TimelineView.h b/include/TimelineView.h index e3bedff0..715d8a9a 100644 --- a/include/TimelineView.h +++ b/include/TimelineView.h @@ -17,26 +17,28 @@ #pragma once +#include #include #include #include #include +#include #include #include #include "Emote.h" #include "File.h" #include "Image.h" +#include "MatrixClient.h" #include "MessageEvent.h" #include "Notice.h" #include "Text.h" +#include "TimelineItem.h" class FloatingButton; -class MatrixClient; class RoomMessages; class ScrollBar; class Timeline; -class TimelineItem; struct DescInfo; namespace msgs = matrix::events::messages; @@ -102,6 +104,8 @@ public: // Add new events at the end of the timeline. int addEvents(const Timeline &timeline); void addUserMessage(matrix::events::MessageEventType ty, const QString &msg); + + template void addUserMessage(const QString &url, const QString &filename); void updatePendingMessage(int txn_id, QString event_id); void scrollDown(); @@ -193,3 +197,28 @@ private: QList pending_sent_msgs_; QSharedPointer client_; }; + +template +void +TimelineView::addUserMessage(const QString &url, const QString &filename) +{ + QSettings settings; + auto user_id = settings.value("auth/user_id").toString(); + auto with_sender = lastSender_ != user_id; + + auto widget = new Widget(client_, url, filename, this); + + TimelineItem *view_item = new TimelineItem(widget, user_id, with_sender, scroll_widget_); + scroll_layout_->addWidget(view_item); + + lastMessageDirection_ = TimelineDirection::Bottom; + + QApplication::processEvents(); + + lastSender_ = user_id; + + int txn_id = client_->incrementTransactionId(); + + PendingMessage message(MsgType, txn_id, url, filename, "", view_item); + handleNewUserMessage(message); +} -- cgit 1.5.1