1 files changed, 38 insertions, 0 deletions
diff --git a/src/ui/TextLabel.h b/src/ui/TextLabel.h
new file mode 100644
index 00000000..da6e9c4b
--- /dev/null
+++ b/src/ui/TextLabel.h
@@ -0,0 +1,38 @@
+#pragma once
+
+#include <QSize>
+#include <QString>
+#include <QTextBrowser>
+#include <QUrl>
+
+class QMouseEvent;
+class QFocusEvent;
+class QWheelEvent;
+
+class TextLabel : public QTextBrowser
+{
+ Q_OBJECT
+
+public:
+ TextLabel(const QString &text, QWidget *parent = nullptr);
+ TextLabel(QWidget *parent = nullptr);
+
+ void wheelEvent(QWheelEvent *event) override;
+ void clearLinks() { link_.clear(); }
+
+protected:
+ void mousePressEvent(QMouseEvent *e) override;
+ void mouseReleaseEvent(QMouseEvent *e) override;
+ void focusOutEvent(QFocusEvent *e) override;
+
+private slots:
+ void adjustHeight(const QSizeF &size) { setFixedHeight(size.height()); }
+ void handleLinkActivation(const QUrl &link);
+
+signals:
+ void userProfileTriggered(const QString &user_id);
+ void linkActivated(const QUrl &link);
+
+private:
+ QString link_;
+};
|