diff --git a/include/timeline/TimelineItem.h b/include/timeline/TimelineItem.h
index e04cbeae..17b110fc 100644
--- a/include/timeline/TimelineItem.h
+++ b/include/timeline/TimelineItem.h
@@ -25,16 +25,7 @@
#include <QStyle>
#include <QStyleOption>
-#include "Audio.h"
-#include "Emote.h"
-#include "File.h"
-#include "Image.h"
-#include "Notice.h"
-#include "Text.h"
-#include "Video.h"
-
#include "AvatarProvider.h"
-#include "MessageEvent.h"
#include "RoomInfoListItem.h"
#include "TimelineViewManager.h"
@@ -44,26 +35,23 @@ class VideoItem;
class FileItem;
class Avatar;
-namespace events = matrix::events;
-namespace msgs = matrix::events::messages;
-
class TimelineItem : public QWidget
{
Q_OBJECT
public:
- TimelineItem(const events::MessageEvent<msgs::Notice> &e,
+ TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Notice> &e,
bool with_sender,
QWidget *parent = 0);
- TimelineItem(const events::MessageEvent<msgs::Text> &e,
+ TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Text> &e,
bool with_sender,
QWidget *parent = 0);
- TimelineItem(const events::MessageEvent<msgs::Emote> &e,
+ TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Emote> &e,
bool with_sender,
QWidget *parent = 0);
// For local messages.
// m.text & m.emote
- TimelineItem(events::MessageEventType ty,
+ TimelineItem(mtx::events::MessageType ty,
const QString &userid,
QString body,
bool withSender,
@@ -75,19 +63,19 @@ public:
TimelineItem(VideoItem *item, const QString &userid, bool withSender, QWidget *parent = 0);
TimelineItem(ImageItem *img,
- const events::MessageEvent<msgs::Image> &e,
+ const mtx::events::RoomEvent<mtx::events::msg::Image> &e,
bool with_sender,
QWidget *parent);
TimelineItem(FileItem *file,
- const events::MessageEvent<msgs::File> &e,
+ const mtx::events::RoomEvent<mtx::events::msg::File> &e,
bool with_sender,
QWidget *parent);
TimelineItem(AudioItem *audio,
- const events::MessageEvent<msgs::Audio> &e,
+ const mtx::events::RoomEvent<mtx::events::msg::Audio> &e,
bool with_sender,
QWidget *parent);
TimelineItem(VideoItem *video,
- const events::MessageEvent<msgs::Video> &e,
+ const mtx::events::RoomEvent<mtx::events::msg::Video> &e,
bool with_sender,
QWidget *parent);
@@ -185,16 +173,17 @@ TimelineItem::setupWidgetLayout(Widget *widget,
{
init();
- event_id_ = event.eventId();
+ event_id_ = QString::fromStdString(event.event_id);
+ const auto sender = QString::fromStdString(event.sender);
- auto timestamp = QDateTime::fromMSecsSinceEpoch(event.timestamp());
- auto displayName = TimelineViewManager::displayName(event.sender());
+ auto timestamp = QDateTime::fromMSecsSinceEpoch(event.origin_server_ts);
+ auto displayName = TimelineViewManager::displayName(sender);
QSettings settings;
- descriptionMsg_ = {event.sender() == settings.value("auth/user_id") ? "You" : displayName,
- event.sender(),
+ descriptionMsg_ = {sender == settings.value("auth/user_id") ? "You" : displayName,
+ sender,
msgDescription,
- descriptiveTime(QDateTime::fromMSecsSinceEpoch(event.timestamp()))};
+ descriptiveTime(QDateTime::fromMSecsSinceEpoch(event.origin_server_ts))};
generateTimestamp(timestamp);
@@ -209,7 +198,7 @@ TimelineItem::setupWidgetLayout(Widget *widget,
mainLayout_->addLayout(headerLayout_);
- AvatarProvider::resolve(event.sender(), this);
+ AvatarProvider::resolve(sender, this);
} else {
setupSimpleLayout();
}
diff --git a/include/timeline/TimelineView.h b/include/timeline/TimelineView.h
index 5262d20d..52bf0165 100644
--- a/include/timeline/TimelineView.h
+++ b/include/timeline/TimelineView.h
@@ -27,39 +27,27 @@
#include <QStyle>
#include <QStyleOption>
-#include "Audio.h"
-#include "Emote.h"
-#include "File.h"
-#include "Image.h"
-#include "Notice.h"
-#include "Text.h"
-#include "Video.h"
+#include <mtx.hpp>
#include "MatrixClient.h"
-#include "MessageEvent.h"
#include "TimelineItem.h"
class FloatingButton;
-class RoomMessages;
class ScrollBar;
-class Timeline;
struct DescInfo;
-namespace msgs = matrix::events::messages;
-namespace events = matrix::events;
-
// Contains info about a message shown in the history view
// but not yet confirmed by the homeserver through sync.
struct PendingMessage
{
- matrix::events::MessageEventType ty;
+ mtx::events::MessageType ty;
int txn_id;
QString body;
QString filename;
QString event_id;
TimelineItem *widget;
- PendingMessage(matrix::events::MessageEventType ty,
+ PendingMessage(mtx::events::MessageType ty,
int txn_id,
QString body,
QString filename,
@@ -86,7 +74,7 @@ class TimelineView : public QWidget
Q_OBJECT
public:
- TimelineView(const Timeline &timeline,
+ TimelineView(const mtx::responses::Timeline &timeline,
QSharedPointer<MatrixClient> client,
const QString &room_id,
QWidget *parent = 0);
@@ -95,10 +83,10 @@ public:
QWidget *parent = 0);
// Add new events at the end of the timeline.
- int addEvents(const Timeline &timeline);
- void addUserMessage(matrix::events::MessageEventType ty, const QString &msg);
+ int addEvents(const mtx::responses::Timeline &timeline);
+ void addUserMessage(mtx::events::MessageType ty, const QString &msg);
- template<class Widget, events::MessageEventType MsgType>
+ template<class Widget, mtx::events::MessageType MsgType>
void addUserMessage(const QString &url, const QString &filename);
void updatePendingMessage(int txn_id, QString event_id);
void scrollDown();
@@ -109,7 +97,7 @@ public slots:
void fetchHistory();
// Add old events at the top of the timeline.
- void addBackwardsEvents(const QString &room_id, const RoomMessages &msgs);
+ void addBackwardsEvents(const QString &room_id, const mtx::responses::Messages &msgs);
// Whether or not the initial batch has been loaded.
bool hasLoaded() { return scroll_layout_->count() > 1 || isTimelineFinished; }
@@ -135,13 +123,14 @@ private:
void notifyForLastEvent();
void readLastEvent() const;
QString getLastEventId() const;
+ QString getEventSender(const mtx::events::collections::TimelineEvents &event) const;
template<class Event, class Widget>
- TimelineItem *processMessageEvent(const QJsonObject &event, TimelineDirection direction);
+ TimelineItem *processMessageEvent(const Event &event, TimelineDirection direction);
// TODO: Remove this eventually.
template<class Event>
- TimelineItem *processMessageEvent(const QJsonObject &event, TimelineDirection direction);
+ TimelineItem *processMessageEvent(const Event &event, TimelineDirection direction);
// For events with custom display widgets.
template<class Event, class Widget>
@@ -164,7 +153,8 @@ private:
void handleNewUserMessage(PendingMessage msg);
// Return nullptr if the event couldn't be parsed.
- TimelineItem *parseMessageEvent(const QJsonObject &event, TimelineDirection direction);
+ TimelineItem *parseMessageEvent(const mtx::events::collections::TimelineEvents &event,
+ TimelineDirection direction);
QVBoxLayout *top_layout_;
QVBoxLayout *scroll_layout_;
@@ -207,7 +197,7 @@ private:
QSharedPointer<MatrixClient> client_;
};
-template<class Widget, events::MessageEventType MsgType>
+template<class Widget, mtx::events::MessageType MsgType>
void
TimelineView::addUserMessage(const QString &url, const QString &filename)
{
@@ -252,62 +242,50 @@ TimelineView::createTimelineItem(const Event &event, bool withSender)
template<class Event>
TimelineItem *
-TimelineView::processMessageEvent(const QJsonObject &data, TimelineDirection direction)
+TimelineView::processMessageEvent(const Event &event, TimelineDirection direction)
{
- Event event;
-
- try {
- event.deserialize(data);
- } catch (const DeserializationException &e) {
- qWarning() << e.what() << data;
- return nullptr;
- }
+ const auto event_id = QString::fromStdString(event.event_id);
+ const auto sender = QString::fromStdString(event.sender);
- if (isDuplicate(event.eventId()))
+ if (isDuplicate(event_id))
return nullptr;
- eventIds_[event.eventId()] = true;
+ eventIds_[event_id] = true;
- QString txnid = event.unsignedData().transactionId();
- if (!txnid.isEmpty() && isPendingMessage(txnid, event.sender(), local_user_)) {
+ const QString txnid = QString::fromStdString(event.unsigned_data.transaction_id);
+ if (!txnid.isEmpty() && isPendingMessage(txnid, sender, local_user_)) {
removePendingMessage(txnid);
return nullptr;
}
- auto with_sender = isSenderRendered(event.sender(), direction);
+ auto with_sender = isSenderRendered(sender, direction);
- updateLastSender(event.sender(), direction);
+ updateLastSender(sender, direction);
return createTimelineItem<Event>(event, with_sender);
}
template<class Event, class Widget>
TimelineItem *
-TimelineView::processMessageEvent(const QJsonObject &data, TimelineDirection direction)
+TimelineView::processMessageEvent(const Event &event, TimelineDirection direction)
{
- Event event;
-
- try {
- event.deserialize(data);
- } catch (const DeserializationException &e) {
- qWarning() << e.what() << data;
- return nullptr;
- }
+ const auto event_id = QString::fromStdString(event.event_id);
+ const auto sender = QString::fromStdString(event.sender);
- if (isDuplicate(event.eventId()))
+ if (isDuplicate(event_id))
return nullptr;
- eventIds_[event.eventId()] = true;
+ eventIds_[event_id] = true;
- QString txnid = event.unsignedData().transactionId();
- if (!txnid.isEmpty() && isPendingMessage(txnid, event.sender(), local_user_)) {
+ const QString txnid = QString::fromStdString(event.unsigned_data.transaction_id);
+ if (!txnid.isEmpty() && isPendingMessage(txnid, sender, local_user_)) {
removePendingMessage(txnid);
return nullptr;
}
- auto with_sender = isSenderRendered(event.sender(), direction);
+ auto with_sender = isSenderRendered(sender, direction);
- updateLastSender(event.sender(), direction);
+ updateLastSender(sender, direction);
return createTimelineItem<Event, Widget>(event, with_sender);
}
diff --git a/include/timeline/TimelineViewManager.h b/include/timeline/TimelineViewManager.h
index edb44ecd..2c32da16 100644
--- a/include/timeline/TimelineViewManager.h
+++ b/include/timeline/TimelineViewManager.h
@@ -21,12 +21,10 @@
#include <QSharedPointer>
#include <QStackedWidget>
-#include "MessageEvent.h"
+#include <mtx.hpp>
-class JoinedRoom;
class MatrixClient;
class RoomInfoListItem;
-class Rooms;
class TimelineView;
struct DescInfo;
@@ -39,14 +37,14 @@ public:
~TimelineViewManager();
// Initialize with timeline events.
- void initialize(const Rooms &rooms);
+ void initialize(const mtx::responses::Rooms &rooms);
// Empty initialization.
void initialize(const QList<QString> &rooms);
- void addRoom(const JoinedRoom &room, const QString &room_id);
+ void addRoom(const mtx::responses::JoinedRoom &room, const QString &room_id);
void addRoom(const QString &room_id);
- void sync(const Rooms &rooms);
+ void sync(const mtx::responses::Rooms &rooms);
void clearAll();
// Check if all the timelines have been loaded.
diff --git a/include/timeline/widgets/AudioItem.h b/include/timeline/widgets/AudioItem.h
index 1104996f..f8e7cc07 100644
--- a/include/timeline/widgets/AudioItem.h
+++ b/include/timeline/widgets/AudioItem.h
@@ -24,12 +24,9 @@
#include <QSharedPointer>
#include <QWidget>
-#include "Audio.h"
#include "MatrixClient.h"
-#include "MessageEvent.h"
-namespace events = matrix::events;
-namespace msgs = matrix::events::messages;
+#include <mtx.hpp>
class AudioItem : public QWidget
{
@@ -46,7 +43,7 @@ class AudioItem : public QWidget
public:
AudioItem(QSharedPointer<MatrixClient> client,
- const events::MessageEvent<msgs::Audio> &event,
+ const mtx::events::RoomEvent<mtx::events::msg::Audio> &event,
QWidget *parent = nullptr);
AudioItem(QSharedPointer<MatrixClient> client,
@@ -94,7 +91,7 @@ private:
QString readableFileSize_;
QString filenameToSave_;
- events::MessageEvent<msgs::Audio> event_;
+ mtx::events::RoomEvent<mtx::events::msg::Audio> event_;
QSharedPointer<MatrixClient> client_;
QMediaPlayer *player_;
diff --git a/include/timeline/widgets/FileItem.h b/include/timeline/widgets/FileItem.h
index 47e81867..fd0b0249 100644
--- a/include/timeline/widgets/FileItem.h
+++ b/include/timeline/widgets/FileItem.h
@@ -23,12 +23,9 @@
#include <QSharedPointer>
#include <QWidget>
-#include "File.h"
-#include "MatrixClient.h"
-#include "MessageEvent.h"
+#include <mtx.hpp>
-namespace events = matrix::events;
-namespace msgs = matrix::events::messages;
+#include "MatrixClient.h"
class FileItem : public QWidget
{
@@ -40,7 +37,7 @@ class FileItem : public QWidget
public:
FileItem(QSharedPointer<MatrixClient> client,
- const events::MessageEvent<msgs::File> &event,
+ const mtx::events::RoomEvent<mtx::events::msg::File> &event,
QWidget *parent = nullptr);
FileItem(QSharedPointer<MatrixClient> client,
@@ -75,7 +72,7 @@ private:
QString readableFileSize_;
QString filenameToSave_;
- events::MessageEvent<msgs::File> event_;
+ mtx::events::RoomEvent<mtx::events::msg::File> event_;
QSharedPointer<MatrixClient> client_;
QIcon icon_;
diff --git a/include/timeline/widgets/ImageItem.h b/include/timeline/widgets/ImageItem.h
index c4f6998a..931c17dd 100644
--- a/include/timeline/widgets/ImageItem.h
+++ b/include/timeline/widgets/ImageItem.h
@@ -22,19 +22,16 @@
#include <QSharedPointer>
#include <QWidget>
-#include "Image.h"
-#include "MatrixClient.h"
-#include "MessageEvent.h"
+#include <mtx.hpp>
-namespace events = matrix::events;
-namespace msgs = matrix::events::messages;
+#include "MatrixClient.h"
class ImageItem : public QWidget
{
Q_OBJECT
public:
ImageItem(QSharedPointer<MatrixClient> client,
- const events::MessageEvent<msgs::Image> &event,
+ const mtx::events::RoomEvent<mtx::events::msg::Image> &event,
QWidget *parent = nullptr);
ImageItem(QSharedPointer<MatrixClient> client,
@@ -72,7 +69,7 @@ private:
int bottom_height_ = 30;
- events::MessageEvent<msgs::Image> event_;
+ mtx::events::RoomEvent<mtx::events::msg::Image> event_;
QSharedPointer<MatrixClient> client_;
};
diff --git a/include/timeline/widgets/VideoItem.h b/include/timeline/widgets/VideoItem.h
index aa2a5da3..88ff21ec 100644
--- a/include/timeline/widgets/VideoItem.h
+++ b/include/timeline/widgets/VideoItem.h
@@ -23,11 +23,8 @@
#include <QWidget>
#include "MatrixClient.h"
-#include "MessageEvent.h"
-#include "Video.h"
-namespace events = matrix::events;
-namespace msgs = matrix::events::messages;
+#include <mtx.hpp>
class VideoItem : public QWidget
{
@@ -35,7 +32,7 @@ class VideoItem : public QWidget
public:
VideoItem(QSharedPointer<MatrixClient> client,
- const events::MessageEvent<msgs::Video> &event,
+ const mtx::events::RoomEvent<mtx::events::msg::Video> &event,
QWidget *parent = nullptr);
VideoItem(QSharedPointer<MatrixClient> client,
@@ -53,6 +50,6 @@ private:
QLabel *label_;
- events::MessageEvent<msgs::Video> event_;
+ mtx::events::RoomEvent<mtx::events::msg::Video> event_;
QSharedPointer<MatrixClient> client_;
};
|