mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-29 14:18:49 +03:00
parent
03c5f79543
commit
3cf7ab9f04
2 changed files with 47 additions and 8 deletions
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <QAbstractTextDocumentLayout>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
|
@ -24,6 +25,8 @@
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QStyle>
|
#include <QStyle>
|
||||||
#include <QStyleOption>
|
#include <QStyleOption>
|
||||||
|
#include <QTextBrowser>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
#include "AvatarProvider.h"
|
#include "AvatarProvider.h"
|
||||||
#include "RoomInfoListItem.h"
|
#include "RoomInfoListItem.h"
|
||||||
|
@ -39,6 +42,48 @@ class VideoItem;
|
||||||
class FileItem;
|
class FileItem;
|
||||||
class Avatar;
|
class Avatar;
|
||||||
|
|
||||||
|
class TextLabel : public QTextBrowser
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
TextLabel(const QString &text, QWidget *parent = 0)
|
||||||
|
: QTextBrowser(parent)
|
||||||
|
{
|
||||||
|
setText(text);
|
||||||
|
setOpenExternalLinks(true);
|
||||||
|
|
||||||
|
// Make it look and feel like an ordinary label.
|
||||||
|
setReadOnly(true);
|
||||||
|
setFrameStyle(QFrame::NoFrame);
|
||||||
|
QPalette pal = palette();
|
||||||
|
pal.setColor(QPalette::Base, Qt::transparent);
|
||||||
|
setPalette(pal);
|
||||||
|
|
||||||
|
// Wrap anywhere but prefer words, adjust minimum height on the fly.
|
||||||
|
setLineWrapMode(QTextEdit::WidgetWidth);
|
||||||
|
setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
|
||||||
|
connect(document()->documentLayout(),
|
||||||
|
&QAbstractTextDocumentLayout::documentSizeChanged,
|
||||||
|
this,
|
||||||
|
&TextLabel::adjustHeight);
|
||||||
|
document()->setDocumentMargin(0);
|
||||||
|
|
||||||
|
setFixedHeight(document()->size().height());
|
||||||
|
}
|
||||||
|
|
||||||
|
QSize sizeHint() const override
|
||||||
|
{
|
||||||
|
ensurePolished();
|
||||||
|
return document()->size().toSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wheelEvent(QWheelEvent *event) override { event->ignore(); }
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void adjustHeight(const QSizeF &size) { setFixedHeight(size.height()); }
|
||||||
|
};
|
||||||
|
|
||||||
class TimelineItem : public QWidget
|
class TimelineItem : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -174,7 +219,7 @@ private:
|
||||||
QLabel *timestamp_;
|
QLabel *timestamp_;
|
||||||
QLabel *checkmark_;
|
QLabel *checkmark_;
|
||||||
QLabel *userName_;
|
QLabel *userName_;
|
||||||
QLabel *body_;
|
TextLabel *body_;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class Widget>
|
template<class Widget>
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
#include <QContextMenuEvent>
|
#include <QContextMenuEvent>
|
||||||
#include <QFontDatabase>
|
#include <QFontDatabase>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QTextEdit>
|
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
#include "Avatar.h"
|
#include "Avatar.h"
|
||||||
|
@ -426,14 +425,9 @@ TimelineItem::generateBody(const QString &body)
|
||||||
{
|
{
|
||||||
QString content("<span>%1</span>");
|
QString content("<span>%1</span>");
|
||||||
|
|
||||||
body_ = new QLabel(this);
|
body_ = new TextLabel(content.arg(replaceEmoji(body)), this);
|
||||||
body_->setFont(font_);
|
body_->setFont(font_);
|
||||||
body_->setWordWrap(true);
|
|
||||||
body_->setText(content.arg(replaceEmoji(body)));
|
|
||||||
body_->setMargin(0);
|
|
||||||
|
|
||||||
body_->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextBrowserInteraction);
|
body_->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextBrowserInteraction);
|
||||||
body_->setOpenExternalLinks(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// The username/timestamp is displayed along with the message body.
|
// The username/timestamp is displayed along with the message body.
|
||||||
|
|
Loading…
Reference in a new issue