summary refs log tree commit diff
path: root/include/TimelineView.h
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-11-29 23:39:35 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-11-29 23:39:35 +0200
commitfdb76bb5c1bdce765479442a70ddca80b867caa6 (patch)
treeb418ea31dbe0f140fc2635584666db4ce36bf732 /include/TimelineView.h
parentAdd read support for m.file messages (#24) (diff)
downloadnheko-fdb76bb5c1bdce765479442a70ddca80b867caa6.tar.xz
Implement file uploads
fixes #24
Diffstat (limited to 'include/TimelineView.h')
-rw-r--r--include/TimelineView.h33
1 files changed, 31 insertions, 2 deletions
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 <QApplication> #include <QLayout> #include <QList> #include <QQueue> #include <QScrollArea> +#include <QSettings> #include <QStyle> #include <QStyleOption> #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<class Widget, events::MessageEventType MsgType> void addUserMessage(const QString &url, const QString &filename); void updatePendingMessage(int txn_id, QString event_id); void scrollDown(); @@ -193,3 +197,28 @@ private: QList<PendingMessage> pending_sent_msgs_; QSharedPointer<MatrixClient> client_; }; + +template<class Widget, events::MessageEventType MsgType> +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); +}