diff --git a/src/timeline/TimelineItem.cpp b/src/timeline/TimelineItem.cpp
index 696db8de..71b3156c 100644
--- a/src/timeline/TimelineItem.cpp
+++ b/src/timeline/TimelineItem.cpp
@@ -23,6 +23,7 @@
#include "ChatPage.h"
#include "Config.h"
#include "Logging.h"
+#include "MainWindow.h"
#include "Olm.h"
#include "ui/Avatar.h"
#include "ui/Painter.h"
@@ -562,6 +563,13 @@ TimelineItem::generateBody(const QString &body)
void
TimelineItem::generateBody(const QString &user_id, const QString &displayname, const QString &body)
{
+ generateUserName(user_id, displayname);
+ generateBody(body);
+}
+
+void
+TimelineItem::generateUserName(const QString &user_id, const QString &displayname)
+{
auto sender = displayname;
if (displayname.startsWith("@")) {
@@ -598,7 +606,9 @@ TimelineItem::generateBody(const QString &user_id, const QString &displayname, c
userName_->setFont(f);
});
- generateBody(body);
+ connect(filter, &UserProfileFilter::clicked, this, [this, user_id]() {
+ MainWindow::instance()->openUserProfile(user_id, room_id_);
+ });
}
void
@@ -742,10 +752,7 @@ TimelineItem::addAvatar()
auto userid = descriptionMsg_.userid;
auto displayName = Cache::displayName(room_id_, userid);
- QFontMetrics fm(usernameFont_);
- userName_ = new QLabel(this);
- userName_->setFont(usernameFont_);
- userName_->setText(fm.elidedText(displayName, Qt::ElideRight, 500));
+ generateUserName(userid, displayName);
setupAvatarLayout(displayName);
diff --git a/src/timeline/TimelineItem.h b/src/timeline/TimelineItem.h
index 874c00df..db000078 100644
--- a/src/timeline/TimelineItem.h
+++ b/src/timeline/TimelineItem.h
@@ -137,13 +137,13 @@ public:
signals:
void hoverOff();
void hoverOn();
+ void clicked();
protected:
bool eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::MouseButtonRelease) {
- // QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
- // TODO: Open user profile
+ emit clicked();
return true;
} else if (event->type() == QEvent::HoverLeave) {
emit hoverOff();
@@ -274,6 +274,7 @@ private:
void generateBody(const QString &body);
void generateBody(const QString &user_id, const QString &displayname, const QString &body);
void generateTimestamp(const QDateTime &time);
+ void generateUserName(const QString &userid, const QString &displayname);
void setupAvatarLayout(const QString &userName);
void setupSimpleLayout();
|