summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-05-26 22:44:49 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-05-26 22:44:49 +0300
commit0fe81ecd4a878c49a936719403485d11d63e2edc (patch)
treed6bacda9604e6f4fca67e8a66ec26edf3138c50b /include
parentProperly resize Audio & File widgets (diff)
downloadnheko-0fe81ecd4a878c49a936719403485d11d63e2edc.tar.xz
Show Matrix ID tooltip when hovering over display name
fixes #212
Diffstat (limited to 'include')
-rw-r--r--include/timeline/TimelineItem.h43
1 files changed, 40 insertions, 3 deletions
diff --git a/include/timeline/TimelineItem.h b/include/timeline/TimelineItem.h

index b72c3591..9997ec1d 100644 --- a/include/timeline/TimelineItem.h +++ b/include/timeline/TimelineItem.h
@@ -18,6 +18,7 @@ #pragma once #include <QAbstractTextDocumentLayout> +#include <QApplication> #include <QDateTime> #include <QHBoxLayout> #include <QLabel> @@ -78,6 +79,42 @@ private slots: void adjustHeight(const QSizeF &size) { setFixedHeight(size.height()); } }; +class UserProfileFilter : public QObject +{ + Q_OBJECT + +public: + explicit UserProfileFilter(const QString &user_id, QLabel *parent) + : QObject(parent) + , user_id_{user_id} + {} + +signals: + void hoverOff(); + void hoverOn(); + +protected: + bool eventFilter(QObject *obj, QEvent *event) + { + if (event->type() == QEvent::MouseButtonRelease) { + // QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event); + // TODO: Open user profile + return true; + } else if (event->type() == QEvent::HoverLeave) { + emit hoverOff(); + return true; + } else if (event->type() == QEvent::HoverEnter) { + emit hoverOn(); + return true; + } + + return QObject::eventFilter(obj, event); + } + +private: + QString user_id_; +}; + class TimelineItem : public QWidget { Q_OBJECT @@ -182,7 +219,7 @@ private: void setupWidgetLayout(Widget *widget, const Event &event, bool withSender); void generateBody(const QString &body); - void generateBody(const QString &userid, const QString &body); + void generateBody(const QString &user_id, const QString &displayname, const QString &body); void generateTimestamp(const QDateTime &time); void setupAvatarLayout(const QString &userName); @@ -237,7 +274,7 @@ TimelineItem::setupLocalWidgetLayout(Widget *widget, const QString &userid, bool widgetLayout_->addStretch(1); if (withSender) { - generateBody(displayName, ""); + generateBody(userid, displayName, ""); setupAvatarLayout(displayName); headerLayout_->addLayout(widgetLayout_); @@ -283,7 +320,7 @@ TimelineItem::setupWidgetLayout(Widget *widget, const Event &event, bool withSen widgetLayout_->addStretch(1); if (withSender) { - generateBody(displayName, ""); + generateBody(sender, displayName, ""); setupAvatarLayout(displayName); headerLayout_->addLayout(widgetLayout_);