diff --git a/src/timeline/TimelineItem.cc b/src/timeline/TimelineItem.cc
index 1cbe4b0a..39b345b5 100644
--- a/src/timeline/TimelineItem.cc
+++ b/src/timeline/TimelineItem.cc
@@ -21,7 +21,6 @@
#include "Avatar.h"
#include "Config.h"
-#include "Sync.h"
#include "timeline/TimelineItem.h"
#include "timeline/widgets/AudioItem.h"
@@ -32,9 +31,6 @@
static const QRegExp URL_REGEX("((?:https?|ftp)://\\S+)");
static const QString URL_HTML = "<a href=\"\\1\">\\1</a>";
-namespace events = matrix::events;
-namespace msgs = matrix::events::messages;
-
void
TimelineItem::init()
{
@@ -71,7 +67,7 @@ TimelineItem::init()
/*
* For messages created locally.
*/
-TimelineItem::TimelineItem(events::MessageEventType ty,
+TimelineItem::TimelineItem(mtx::events::MessageType ty,
const QString &userid,
QString body,
bool withSender,
@@ -83,7 +79,7 @@ TimelineItem::TimelineItem(events::MessageEventType ty,
auto displayName = TimelineViewManager::displayName(userid);
auto timestamp = QDateTime::currentDateTime();
- if (ty == events::MessageEventType::Emote) {
+ if (ty == mtx::events::MessageType::Emote) {
body = QString("* %1 %2").arg(displayName).arg(body);
descriptionMsg_ = {"", userid, body, descriptiveTime(timestamp)};
} else {
@@ -152,64 +148,65 @@ TimelineItem::TimelineItem(VideoItem *video,
}
TimelineItem::TimelineItem(ImageItem *image,
- const events::MessageEvent<msgs::Image> &event,
+ const mtx::events::RoomEvent<mtx::events::msg::Image> &event,
bool with_sender,
QWidget *parent)
: QWidget(parent)
{
- setupWidgetLayout<events::MessageEvent<msgs::Image>, ImageItem>(
+ setupWidgetLayout<mtx::events::RoomEvent<mtx::events::msg::Image>, ImageItem>(
image, event, " sent an image", with_sender);
}
TimelineItem::TimelineItem(FileItem *file,
- const events::MessageEvent<msgs::File> &event,
+ const mtx::events::RoomEvent<mtx::events::msg::File> &event,
bool with_sender,
QWidget *parent)
: QWidget(parent)
{
- setupWidgetLayout<events::MessageEvent<msgs::File>, FileItem>(
+ setupWidgetLayout<mtx::events::RoomEvent<mtx::events::msg::File>, FileItem>(
file, event, " sent a file", with_sender);
}
TimelineItem::TimelineItem(AudioItem *audio,
- const events::MessageEvent<msgs::Audio> &event,
+ const mtx::events::RoomEvent<mtx::events::msg::Audio> &event,
bool with_sender,
QWidget *parent)
: QWidget(parent)
{
- setupWidgetLayout<events::MessageEvent<msgs::Audio>, AudioItem>(
+ setupWidgetLayout<mtx::events::RoomEvent<mtx::events::msg::Audio>, AudioItem>(
audio, event, " sent an audio clip", with_sender);
}
TimelineItem::TimelineItem(VideoItem *video,
- const events::MessageEvent<msgs::Video> &event,
+ const mtx::events::RoomEvent<mtx::events::msg::Video> &event,
bool with_sender,
QWidget *parent)
: QWidget(parent)
{
- setupWidgetLayout<events::MessageEvent<msgs::Video>, VideoItem>(
+ setupWidgetLayout<mtx::events::RoomEvent<mtx::events::msg::Video>, VideoItem>(
video, event, " sent a video clip", with_sender);
}
/*
* Used to display remote notice messages.
*/
-TimelineItem::TimelineItem(const events::MessageEvent<msgs::Notice> &event,
+TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Notice> &event,
bool with_sender,
QWidget *parent)
: QWidget(parent)
{
init();
- event_id_ = event.eventId();
+ event_id_ = QString::fromStdString(event.event_id);
+ const auto sender = QString::fromStdString(event.sender);
- descriptionMsg_ = {TimelineViewManager::displayName(event.sender()),
- event.sender(),
+ descriptionMsg_ = {TimelineViewManager::displayName(sender),
+ sender,
" sent a notification",
- descriptiveTime(QDateTime::fromMSecsSinceEpoch(event.timestamp()))};
+ descriptiveTime(QDateTime::fromMSecsSinceEpoch(event.origin_server_ts))};
- auto body = event.content().body().trimmed().toHtmlEscaped();
- auto timestamp = QDateTime::fromMSecsSinceEpoch(event.timestamp());
+ auto body = QString::fromStdString(event.content.body).trimmed().toHtmlEscaped();
+ auto timestamp = QDateTime::fromMSecsSinceEpoch(event.origin_server_ts);
generateTimestamp(timestamp);
@@ -218,14 +215,14 @@ TimelineItem::TimelineItem(const events::MessageEvent<msgs::Notice> &event,
body = "<i>" + body + "</i>";
if (with_sender) {
- auto displayName = TimelineViewManager::displayName(event.sender());
+ auto displayName = TimelineViewManager::displayName(sender);
generateBody(displayName, body);
setupAvatarLayout(displayName);
mainLayout_->addLayout(headerLayout_);
- AvatarProvider::resolve(event.sender(), this);
+ AvatarProvider::resolve(sender, this);
} else {
generateBody(body);
setupSimpleLayout();
@@ -237,24 +234,25 @@ TimelineItem::TimelineItem(const events::MessageEvent<msgs::Notice> &event,
/*
* Used to display remote emote messages.
*/
-TimelineItem::TimelineItem(const events::MessageEvent<msgs::Emote> &event,
+TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Emote> &event,
bool with_sender,
QWidget *parent)
: QWidget(parent)
{
init();
- event_id_ = event.eventId();
+ event_id_ = QString::fromStdString(event.event_id);
+ const auto sender = QString::fromStdString(event.sender);
- auto body = event.content().body().trimmed();
- auto timestamp = QDateTime::fromMSecsSinceEpoch(event.timestamp());
- auto displayName = TimelineViewManager::displayName(event.sender());
+ auto body = QString::fromStdString(event.content.body).trimmed();
+ auto timestamp = QDateTime::fromMSecsSinceEpoch(event.origin_server_ts);
+ auto displayName = TimelineViewManager::displayName(sender);
auto emoteMsg = QString("* %1 %2").arg(displayName).arg(body);
descriptionMsg_ = {"",
- event.sender(),
+ sender,
emoteMsg,
- descriptiveTime(QDateTime::fromMSecsSinceEpoch(event.timestamp()))};
+ descriptiveTime(QDateTime::fromMSecsSinceEpoch(event.origin_server_ts))};
generateTimestamp(timestamp);
emoteMsg = emoteMsg.toHtmlEscaped();
@@ -266,7 +264,7 @@ TimelineItem::TimelineItem(const events::MessageEvent<msgs::Emote> &event,
setupAvatarLayout(displayName);
mainLayout_->addLayout(headerLayout_);
- AvatarProvider::resolve(event.sender(), this);
+ AvatarProvider::resolve(sender, this);
} else {
generateBody(emoteMsg);
setupSimpleLayout();
@@ -278,24 +276,25 @@ TimelineItem::TimelineItem(const events::MessageEvent<msgs::Emote> &event,
/*
* Used to display remote text messages.
*/
-TimelineItem::TimelineItem(const events::MessageEvent<msgs::Text> &event,
+TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Text> &event,
bool with_sender,
QWidget *parent)
: QWidget(parent)
{
init();
- event_id_ = event.eventId();
+ event_id_ = QString::fromStdString(event.event_id);
+ const auto sender = QString::fromStdString(event.sender);
- auto body = event.content().body().trimmed();
- auto timestamp = QDateTime::fromMSecsSinceEpoch(event.timestamp());
- auto displayName = TimelineViewManager::displayName(event.sender());
+ auto body = QString::fromStdString(event.content.body).trimmed();
+ 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,
QString(": %1").arg(body),
- descriptiveTime(QDateTime::fromMSecsSinceEpoch(event.timestamp()))};
+ descriptiveTime(QDateTime::fromMSecsSinceEpoch(event.origin_server_ts))};
generateTimestamp(timestamp);
@@ -309,7 +308,7 @@ TimelineItem::TimelineItem(const events::MessageEvent<msgs::Text> &event,
mainLayout_->addLayout(headerLayout_);
- AvatarProvider::resolve(event.sender(), this);
+ AvatarProvider::resolve(sender, this);
} else {
generateBody(body);
setupSimpleLayout();
diff --git a/src/timeline/TimelineView.cc b/src/timeline/TimelineView.cc
index 6b7928db..8e9f5f7c 100644
--- a/src/timeline/TimelineView.cc
+++ b/src/timeline/TimelineView.cc
@@ -22,7 +22,6 @@
#include "FloatingButton.h"
#include "RoomMessages.h"
#include "ScrollBar.h"
-#include "Sync.h"
#include "timeline/TimelineView.h"
#include "timeline/widgets/AudioItem.h"
@@ -30,23 +29,7 @@
#include "timeline/widgets/ImageItem.h"
#include "timeline/widgets/VideoItem.h"
-namespace events = matrix::events;
-namespace msgs = matrix::events::messages;
-
-static bool
-isRedactedEvent(const QJsonObject &event)
-{
- if (event.contains("redacted_because"))
- return true;
-
- if (event.contains("unsigned") &&
- event.value("unsigned").toObject().contains("redacted_because"))
- return true;
-
- return false;
-}
-
-TimelineView::TimelineView(const Timeline &timeline,
+TimelineView::TimelineView(const mtx::responses::Timeline &timeline,
QSharedPointer<MatrixClient> client,
const QString &room_id,
QWidget *parent)
@@ -167,12 +150,12 @@ TimelineView::sliderMoved(int position)
}
void
-TimelineView::addBackwardsEvents(const QString &room_id, const RoomMessages &msgs)
+TimelineView::addBackwardsEvents(const QString &room_id, const mtx::responses::Messages &msgs)
{
if (room_id_ != room_id)
return;
- if (msgs.chunk().count() == 0) {
+ if (msgs.chunk.size() == 0) {
isTimelineFinished = true;
return;
}
@@ -186,12 +169,11 @@ TimelineView::addBackwardsEvents(const QString &room_id, const RoomMessages &msg
// Parse in reverse order to determine where we should not show sender's
// name.
- auto ii = msgs.chunk().size();
+ auto ii = msgs.chunk.size();
while (ii != 0) {
--ii;
- TimelineItem *item =
- parseMessageEvent(msgs.chunk().at(ii).toObject(), TimelineDirection::Top);
+ TimelineItem *item = parseMessageEvent(msgs.chunk[ii], TimelineDirection::Top);
if (item != nullptr)
items.push_back(item);
@@ -210,11 +192,11 @@ TimelineView::addBackwardsEvents(const QString &room_id, const RoomMessages &msg
QApplication::processEvents();
- prev_batch_token_ = msgs.end();
+ prev_batch_token_ = QString::fromStdString(msgs.end);
isPaginationInProgress_ = false;
// Exclude the top stretch.
- if (!msgs.chunk().isEmpty() && scroll_layout_->count() > 1)
+ if (msgs.chunk.size() != 0 && scroll_layout_->count() > 1)
notifyForLastEvent();
// If this batch is the first being rendered (i.e the first and the last
@@ -224,63 +206,59 @@ TimelineView::addBackwardsEvents(const QString &room_id, const RoomMessages &msg
}
TimelineItem *
-TimelineView::parseMessageEvent(const QJsonObject &event, TimelineDirection direction)
+TimelineView::parseMessageEvent(const mtx::events::collections::TimelineEvents &event,
+ TimelineDirection direction)
{
- events::EventType ty = events::extractEventType(event);
-
- if (ty == events::EventType::RoomMessage) {
- events::MessageEventType msg_type = events::extractMessageEventType(event);
-
- using Audio = events::MessageEvent<msgs::Audio>;
- using Emote = events::MessageEvent<msgs::Emote>;
- using File = events::MessageEvent<msgs::File>;
- using Image = events::MessageEvent<msgs::Image>;
- using Notice = events::MessageEvent<msgs::Notice>;
- using Text = events::MessageEvent<msgs::Text>;
- using Video = events::MessageEvent<msgs::Video>;
-
- if (msg_type == events::MessageEventType::Audio) {
- return processMessageEvent<Audio, AudioItem>(event, direction);
- } else if (msg_type == events::MessageEventType::Emote) {
- return processMessageEvent<Emote>(event, direction);
- } else if (msg_type == events::MessageEventType::File) {
- return processMessageEvent<File, FileItem>(event, direction);
- } else if (msg_type == events::MessageEventType::Image) {
- return processMessageEvent<Image, ImageItem>(event, direction);
- } else if (msg_type == events::MessageEventType::Notice) {
- return processMessageEvent<Notice>(event, direction);
- } else if (msg_type == events::MessageEventType::Text) {
- return processMessageEvent<Text>(event, direction);
- } else if (msg_type == events::MessageEventType::Video) {
- return processMessageEvent<Video, VideoItem>(event, direction);
- } else if (msg_type == events::MessageEventType::Unknown) {
- // TODO Handle redacted messages.
- // Silenced for now.
- if (!isRedactedEvent(event))
- qWarning() << "Unknown message type" << event;
+ namespace msg = mtx::events::msg;
+ using AudioEvent = mtx::events::RoomEvent<msg::Audio>;
+ using EmoteEvent = mtx::events::RoomEvent<msg::Emote>;
+ using FileEvent = mtx::events::RoomEvent<msg::File>;
+ using ImageEvent = mtx::events::RoomEvent<msg::Image>;
+ using NoticeEvent = mtx::events::RoomEvent<msg::Notice>;
+ using TextEvent = mtx::events::RoomEvent<msg::Text>;
+ using VideoEvent = mtx::events::RoomEvent<msg::Video>;
- return nullptr;
- }
+ if (mpark::holds_alternative<mtx::events::RoomEvent<msg::Audio>>(event)) {
+ auto audio = mpark::get<mtx::events::RoomEvent<msg::Audio>>(event);
+ return processMessageEvent<AudioEvent, AudioItem>(audio, direction);
+ } else if (mpark::holds_alternative<mtx::events::RoomEvent<msg::Emote>>(event)) {
+ auto emote = mpark::get<mtx::events::RoomEvent<msg::Emote>>(event);
+ return processMessageEvent<EmoteEvent>(emote, direction);
+ } else if (mpark::holds_alternative<mtx::events::RoomEvent<msg::File>>(event)) {
+ auto file = mpark::get<mtx::events::RoomEvent<msg::File>>(event);
+ return processMessageEvent<FileEvent, FileItem>(file, direction);
+ } else if (mpark::holds_alternative<mtx::events::RoomEvent<msg::Image>>(event)) {
+ auto image = mpark::get<mtx::events::RoomEvent<msg::Image>>(event);
+ return processMessageEvent<ImageEvent, ImageItem>(image, direction);
+ } else if (mpark::holds_alternative<mtx::events::RoomEvent<msg::Notice>>(event)) {
+ auto notice = mpark::get<mtx::events::RoomEvent<msg::Notice>>(event);
+ return processMessageEvent<NoticeEvent>(notice, direction);
+ } else if (mpark::holds_alternative<mtx::events::RoomEvent<msg::Text>>(event)) {
+ auto text = mpark::get<mtx::events::RoomEvent<msg::Text>>(event);
+ return processMessageEvent<TextEvent>(text, direction);
+ } else if (mpark::holds_alternative<mtx::events::RoomEvent<msg::Video>>(event)) {
+ auto video = mpark::get<mtx::events::RoomEvent<msg::Video>>(event);
+ return processMessageEvent<VideoEvent, VideoItem>(video, direction);
}
return nullptr;
}
int
-TimelineView::addEvents(const Timeline &timeline)
+TimelineView::addEvents(const mtx::responses::Timeline &timeline)
{
int message_count = 0;
QSettings settings;
QString localUser = settings.value("auth/user_id").toString();
- for (const auto &event : timeline.events()) {
- TimelineItem *item = parseMessageEvent(event.toObject(), TimelineDirection::Bottom);
+ for (const auto &event : timeline.events) {
+ TimelineItem *item = parseMessageEvent(event, TimelineDirection::Bottom);
if (item != nullptr) {
addTimelineItem(item, TimelineDirection::Bottom);
- if (localUser != event.toObject().value("sender").toString())
+ if (localUser != getEventSender(event))
message_count += 1;
}
}
@@ -290,15 +268,15 @@ TimelineView::addEvents(const Timeline &timeline)
QApplication::processEvents();
if (isInitialSync) {
- prev_batch_token_ = timeline.previousBatch();
+ prev_batch_token_ = QString::fromStdString(timeline.prev_batch);
isInitialSync = false;
}
// Exclude the top stretch.
- if (!timeline.events().isEmpty() && scroll_layout_->count() > 1)
+ if (timeline.events.size() != 0 && scroll_layout_->count() > 1)
notifyForLastEvent();
- if (isActiveWindow() && isVisible() && timeline.events().size() > 0)
+ if (isActiveWindow() && isVisible() && timeline.events.size() > 0)
readLastEvent();
return message_count;
@@ -403,7 +381,7 @@ TimelineView::updatePendingMessage(int txn_id, QString event_id)
}
void
-TimelineView::addUserMessage(matrix::events::MessageEventType ty, const QString &body)
+TimelineView::addUserMessage(mtx::events::MessageType ty, const QString &body)
{
QSettings settings;
auto user_id = settings.value("auth/user_id").toString();
@@ -439,9 +417,9 @@ TimelineView::sendNextPendingMessage()
PendingMessage &m = pending_msgs_.head();
switch (m.ty) {
- case matrix::events::MessageEventType::Audio:
- case matrix::events::MessageEventType::Image:
- case matrix::events::MessageEventType::File:
+ case mtx::events::MessageType::Audio:
+ case mtx::events::MessageType::Image:
+ case mtx::events::MessageType::File:
// FIXME: Improve the API
client_->sendRoomMessage(m.ty,
m.txn_id,
@@ -573,3 +551,81 @@ TimelineView::event(QEvent *event)
return QWidget::event(event);
}
+
+QString
+TimelineView::getEventSender(const mtx::events::collections::TimelineEvents &event) const
+{
+ using Aliases = mtx::events::StateEvent<mtx::events::state::Aliases>;
+ using Avatar = mtx::events::StateEvent<mtx::events::state::Avatar>;
+ using CanonicalAlias = mtx::events::StateEvent<mtx::events::state::CanonicalAlias>;
+ using Create = mtx::events::StateEvent<mtx::events::state::Create>;
+ using HistoryVisibility = mtx::events::StateEvent<mtx::events::state::HistoryVisibility>;
+ using JoinRules = mtx::events::StateEvent<mtx::events::state::JoinRules>;
+ using Member = mtx::events::StateEvent<mtx::events::state::Member>;
+ using Name = mtx::events::StateEvent<mtx::events::state::Name>;
+ using PowerLevels = mtx::events::StateEvent<mtx::events::state::PowerLevels>;
+ using Topic = mtx::events::StateEvent<mtx::events::state::Topic>;
+
+ using Audio = mtx::events::RoomEvent<mtx::events::msg::Audio>;
+ using Emote = mtx::events::RoomEvent<mtx::events::msg::Emote>;
+ using File = mtx::events::RoomEvent<mtx::events::msg::File>;
+ using Image = mtx::events::RoomEvent<mtx::events::msg::Image>;
+ using Notice = mtx::events::RoomEvent<mtx::events::msg::Notice>;
+ using Text = mtx::events::RoomEvent<mtx::events::msg::Text>;
+ using Video = mtx::events::RoomEvent<mtx::events::msg::Video>;
+
+ if (mpark::holds_alternative<Aliases>(event)) {
+ auto msg = mpark::get<Aliases>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<Avatar>(event)) {
+ auto msg = mpark::get<Avatar>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<CanonicalAlias>(event)) {
+ auto msg = mpark::get<CanonicalAlias>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<Create>(event)) {
+ auto msg = mpark::get<Create>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<HistoryVisibility>(event)) {
+ auto msg = mpark::get<HistoryVisibility>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<JoinRules>(event)) {
+ auto msg = mpark::get<JoinRules>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<Name>(event)) {
+ auto msg = mpark::get<Name>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<Member>(event)) {
+ auto msg = mpark::get<Member>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<PowerLevels>(event)) {
+ auto msg = mpark::get<PowerLevels>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<Topic>(event)) {
+ auto msg = mpark::get<Topic>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<Audio>(event)) {
+ auto msg = mpark::get<Audio>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<Emote>(event)) {
+ auto msg = mpark::get<Emote>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<File>(event)) {
+ auto msg = mpark::get<File>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<Image>(event)) {
+ auto msg = mpark::get<Image>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<Notice>(event)) {
+ auto msg = mpark::get<Notice>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<Text>(event)) {
+ auto msg = mpark::get<Text>(event);
+ return QString::fromStdString(msg.sender);
+ } else if (mpark::holds_alternative<Video>(event)) {
+ auto msg = mpark::get<Video>(event);
+ return QString::fromStdString(msg.sender);
+ }
+
+ return QString("");
+}
diff --git a/src/timeline/TimelineViewManager.cc b/src/timeline/TimelineViewManager.cc
index 281cafcd..de1e1e32 100644
--- a/src/timeline/TimelineViewManager.cc
+++ b/src/timeline/TimelineViewManager.cc
@@ -23,7 +23,6 @@
#include <QSettings>
#include "MatrixClient.h"
-#include "Sync.h"
#include "timeline/TimelineView.h"
#include "timeline/TimelineViewManager.h"
@@ -72,7 +71,7 @@ TimelineViewManager::queueTextMessage(const QString &msg)
auto room_id = active_room_;
auto view = views_[room_id];
- view->addUserMessage(matrix::events::MessageEventType::Text, msg);
+ view->addUserMessage(mtx::events::MessageType::Text, msg);
}
void
@@ -81,7 +80,7 @@ TimelineViewManager::queueEmoteMessage(const QString &msg)
auto room_id = active_room_;
auto view = views_[room_id];
- view->addUserMessage(matrix::events::MessageEventType::Emote, msg);
+ view->addUserMessage(mtx::events::MessageType::Emote, msg);
}
void
@@ -96,7 +95,7 @@ TimelineViewManager::queueImageMessage(const QString &roomid,
auto view = views_[roomid];
- view->addUserMessage<ImageItem, matrix::events::MessageEventType::Image>(url, filename);
+ view->addUserMessage<ImageItem, mtx::events::MessageType::Image>(url, filename);
}
void
@@ -111,7 +110,7 @@ TimelineViewManager::queueFileMessage(const QString &roomid,
auto view = views_[roomid];
- view->addUserMessage<FileItem, matrix::events::MessageEventType::File>(url, filename);
+ view->addUserMessage<FileItem, mtx::events::MessageType::File>(url, filename);
}
void
@@ -126,7 +125,7 @@ TimelineViewManager::queueAudioMessage(const QString &roomid,
auto view = views_[roomid];
- view->addUserMessage<AudioItem, matrix::events::MessageEventType::Audio>(url, filename);
+ view->addUserMessage<AudioItem, mtx::events::MessageType::Audio>(url, filename);
}
void
@@ -139,10 +138,10 @@ TimelineViewManager::clearAll()
}
void
-TimelineViewManager::initialize(const Rooms &rooms)
+TimelineViewManager::initialize(const mtx::responses::Rooms &rooms)
{
- for (auto it = rooms.join().constBegin(); it != rooms.join().constEnd(); ++it) {
- addRoom(it.value(), it.key());
+ for (auto it = rooms.join.cbegin(); it != rooms.join.cend(); ++it) {
+ addRoom(it->second, QString::fromStdString(it->first));
}
}
@@ -155,10 +154,10 @@ TimelineViewManager::initialize(const QList<QString> &rooms)
}
void
-TimelineViewManager::addRoom(const JoinedRoom &room, const QString &room_id)
+TimelineViewManager::addRoom(const mtx::responses::JoinedRoom &room, const QString &room_id)
{
// Create a history view with the room events.
- TimelineView *view = new TimelineView(room.timeline(), client_, room_id);
+ TimelineView *view = new TimelineView(room.timeline, client_, room_id);
views_.insert(room_id, QSharedPointer<TimelineView>(view));
connect(view,
@@ -195,10 +194,10 @@ TimelineViewManager::addRoom(const QString &room_id)
}
void
-TimelineViewManager::sync(const Rooms &rooms)
+TimelineViewManager::sync(const mtx::responses::Rooms &rooms)
{
- for (auto it = rooms.join().constBegin(); it != rooms.join().constEnd(); ++it) {
- auto roomid = it.key();
+ for (auto it = rooms.join.cbegin(); it != rooms.join.cend(); ++it) {
+ auto roomid = QString::fromStdString(it->first);
if (!views_.contains(roomid)) {
qDebug() << "Ignoring event from unknown room" << roomid;
@@ -207,7 +206,7 @@ TimelineViewManager::sync(const Rooms &rooms)
auto view = views_.value(roomid);
- int msgs_added = view->addEvents(it.value().timeline());
+ int msgs_added = view->addEvents(it->second.timeline);
if (msgs_added > 0) {
// TODO: When the app window gets active the current
diff --git a/src/timeline/widgets/AudioItem.cc b/src/timeline/widgets/AudioItem.cc
index 2a417b3e..5d9dd77b 100644
--- a/src/timeline/widgets/AudioItem.cc
+++ b/src/timeline/widgets/AudioItem.cc
@@ -26,9 +26,6 @@
#include "timeline/widgets/AudioItem.h"
-namespace events = matrix::events;
-namespace msgs = matrix::events::messages;
-
constexpr int MaxWidth = 400;
constexpr int Height = 70;
constexpr int IconRadius = 22;
@@ -77,15 +74,15 @@ AudioItem::init()
}
AudioItem::AudioItem(QSharedPointer<MatrixClient> client,
- const events::MessageEvent<msgs::Audio> &event,
+ const mtx::events::RoomEvent<mtx::events::msg::Audio> &event,
QWidget *parent)
: QWidget(parent)
- , url_{event.msgContent().url()}
- , text_{event.content().body()}
+ , url_{QUrl(QString::fromStdString(event.content.url))}
+ , text_{QString::fromStdString(event.content.body)}
, event_{event}
, client_{client}
{
- readableFileSize_ = calculateFileSize(event.msgContent().info().size);
+ readableFileSize_ = calculateFileSize(event.content.info.size);
init();
}
@@ -151,14 +148,14 @@ AudioItem::mousePressEvent(QMouseEvent *event)
if (filenameToSave_.isEmpty())
return;
- client_->downloadFile(event_.eventId(), url_);
+ client_->downloadFile(QString::fromStdString(event_.event_id), url_);
}
}
void
AudioItem::fileDownloaded(const QString &event_id, const QByteArray &data)
{
- if (event_id != event_.eventId())
+ if (event_id != QString::fromStdString(event_.event_id))
return;
try {
diff --git a/src/timeline/widgets/FileItem.cc b/src/timeline/widgets/FileItem.cc
index e4cc02b2..3c38dc31 100644
--- a/src/timeline/widgets/FileItem.cc
+++ b/src/timeline/widgets/FileItem.cc
@@ -26,9 +26,6 @@
#include "timeline/widgets/FileItem.h"
-namespace events = matrix::events;
-namespace msgs = matrix::events::messages;
-
constexpr int MaxWidth = 400;
constexpr int Height = 70;
constexpr int IconRadius = 22;
@@ -64,15 +61,15 @@ FileItem::init()
}
FileItem::FileItem(QSharedPointer<MatrixClient> client,
- const events::MessageEvent<msgs::File> &event,
+ const mtx::events::RoomEvent<mtx::events::msg::File> &event,
QWidget *parent)
: QWidget(parent)
- , url_{event.msgContent().url()}
- , text_{event.content().body()}
+ , url_{QString::fromStdString(event.content.url)}
+ , text_{QString::fromStdString(event.content.body)}
, event_{event}
, client_{client}
{
- readableFileSize_ = calculateFileSize(event.msgContent().info().size);
+ readableFileSize_ = calculateFileSize(event.content.info.size);
init();
}
@@ -138,7 +135,7 @@ FileItem::mousePressEvent(QMouseEvent *event)
if (filenameToSave_.isEmpty())
return;
- client_->downloadFile(event_.eventId(), url_);
+ client_->downloadFile(QString::fromStdString(event_.event_id), url_);
} else {
openUrl();
}
@@ -147,7 +144,7 @@ FileItem::mousePressEvent(QMouseEvent *event)
void
FileItem::fileDownloaded(const QString &event_id, const QByteArray &data)
{
- if (event_id != event_.eventId())
+ if (event_id != QString::fromStdString(event_.event_id))
return;
try {
diff --git a/src/timeline/widgets/ImageItem.cc b/src/timeline/widgets/ImageItem.cc
index c8cf8e23..46a4518c 100644
--- a/src/timeline/widgets/ImageItem.cc
+++ b/src/timeline/widgets/ImageItem.cc
@@ -25,11 +25,8 @@
#include "dialogs/ImageOverlay.h"
#include "timeline/widgets/ImageItem.h"
-namespace events = matrix::events;
-namespace msgs = matrix::events::messages;
-
ImageItem::ImageItem(QSharedPointer<MatrixClient> client,
- const events::MessageEvent<msgs::Image> &event,
+ const mtx::events::RoomEvent<mtx::events::msg::Image> &event,
QWidget *parent)
: QWidget(parent)
, event_{event}
@@ -39,8 +36,8 @@ ImageItem::ImageItem(QSharedPointer<MatrixClient> client,
setCursor(Qt::PointingHandCursor);
setAttribute(Qt::WA_Hover, true);
- url_ = event.msgContent().url();
- text_ = event.content().body();
+ url_ = QString::fromStdString(event.content.url);
+ text_ = QString::fromStdString(event.content.body);
QList<QString> url_parts = url_.toString().split("mxc://");
@@ -53,7 +50,7 @@ ImageItem::ImageItem(QSharedPointer<MatrixClient> client,
url_ = QString("%1/_matrix/media/r0/download/%2")
.arg(client_.data()->getHomeServer().toString(), media_params);
- client_.data()->downloadImage(event.eventId(), url_);
+ client_.data()->downloadImage(QString::fromStdString(event.event_id), url_);
connect(client_.data(),
SIGNAL(imageDownloaded(const QString &, const QPixmap &)),
@@ -91,7 +88,7 @@ ImageItem::ImageItem(QSharedPointer<MatrixClient> client,
void
ImageItem::imageDownloaded(const QString &event_id, const QPixmap &img)
{
- if (event_id != event_.eventId())
+ if (event_id != QString::fromStdString(event_.event_id))
return;
setImage(img);
diff --git a/src/timeline/widgets/VideoItem.cc b/src/timeline/widgets/VideoItem.cc
index 63cbc20c..1d67118a 100644
--- a/src/timeline/widgets/VideoItem.cc
+++ b/src/timeline/widgets/VideoItem.cc
@@ -21,9 +21,6 @@
#include "timeline/widgets/VideoItem.h"
-namespace events = matrix::events;
-namespace msgs = matrix::events::messages;
-
void
VideoItem::init()
{
@@ -39,15 +36,15 @@ VideoItem::init()
}
VideoItem::VideoItem(QSharedPointer<MatrixClient> client,
- const events::MessageEvent<msgs::Video> &event,
+ const mtx::events::RoomEvent<mtx::events::msg::Video> &event,
QWidget *parent)
: QWidget(parent)
- , url_{event.msgContent().url()}
- , text_{event.content().body()}
+ , url_{QString::fromStdString(event.content.url)}
+ , text_{QString::fromStdString(event.content.body)}
, event_{event}
, client_{client}
{
- readableFileSize_ = calculateFileSize(event.msgContent().info().size);
+ readableFileSize_ = calculateFileSize(event.content.info.size);
init();
|