From 2b3dc3d8b9d1108c3f6ad226ad65060bd3999033 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sat, 11 Jan 2020 14:07:51 +0100 Subject: Implement fancy reply rendering This currently assumes the event, that is replied to, is already fetched. If it isn't, it will render an empty reply. In the future we should fetch replies before rendering them. --- src/timeline/TimelineModel.cpp | 16 +++++++++++++--- src/timeline/TimelineModel.h | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp index 0e7f5259..41d864bd 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp @@ -212,6 +212,14 @@ TimelineModel::rowCount(const QModelIndex &parent) const return (int)this->eventOrder.size(); } +QVariantMap +TimelineModel::getDump(QString eventId) const +{ + if (events.contains(eventId)) + return data(index(idToIndex(eventId), 0), Dump).toMap(); + return {}; +} + QVariant TimelineModel::data(const QModelIndex &index, int role) const { @@ -263,11 +271,13 @@ TimelineModel::data(const QModelIndex &index, int role) const return QVariant(toRoomEventType(event)); case Body: return QVariant(utils::replaceEmoji(QString::fromStdString(body(event)))); - case FormattedBody: + case FormattedBody: { + const static QRegularExpression replyFallback( + ".*", QRegularExpression::DotMatchesEverythingOption); return QVariant( utils::replaceEmoji(utils::linkifyMessage(formattedBodyWithFallback(event))) - .remove("") - .remove("")); + .remove(replyFallback)); + } case Url: return QVariant(QString::fromStdString(url(event))); case ThumbnailUrl: diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h index 0f18f7ef..61dd6b69 100644 --- a/src/timeline/TimelineModel.h +++ b/src/timeline/TimelineModel.h @@ -181,6 +181,7 @@ public slots: void setCurrentIndex(int index); int currentIndex() const { return idToIndex(currentId); } void markEventsAsRead(const std::vector &event_ids); + QVariantMap getDump(QString eventId) const; private slots: // Add old events at the top of the timeline. -- cgit 1.5.1