From d7e5171bfabf48e69112190b7096268222979c1c Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Fri, 20 Jul 2018 12:02:35 +0300 Subject: Create user profile modal --- src/timeline/TimelineItem.cpp | 17 ++++++++++++----- src/timeline/TimelineItem.h | 5 +++-- 2 files changed, 15 insertions(+), 7 deletions(-) (limited to 'src/timeline') 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" @@ -561,6 +562,13 @@ TimelineItem::generateBody(const QString &body) // The username/timestamp is displayed along with the message 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; @@ -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(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(); -- cgit 1.5.1