an attempt to display text in a better way with QTextDocument + QTextBrowser

This commit is contained in:
Blue 2022-04-27 01:17:53 +03:00
parent 51ac1ac709
commit d86e2c28a0
Signed by untrusted user: blue
GPG key ID: 9B203B252A63EE38
7 changed files with 88 additions and 338 deletions

View file

@ -29,12 +29,13 @@
#include <QPushButton>
#include <QProgressBar>
#include <QLabel>
#include <QTextEdit>
#include <QTextBrowser>
#include "shared/icons.h"
#include "shared/global.h"
#include "shared/utils.h"
#include "shared/pathcheck.h"
#include "ui/utils/textmeter.h"
#include "preview.h"
@ -70,13 +71,15 @@ protected:
int paintBar(QProgressBar* bar, QPainter* painter, bool sentByMe, QStyleOptionViewItem& option) const;
int paintPreview(const Models::FeedItem& data, QPainter* painter, QStyleOptionViewItem& option) const;
int paintComment(const Models::FeedItem& data, QPainter* painter, QStyleOptionViewItem& option) const;
int paintBody(const Models::FeedItem& data, QPainter* painter, QStyleOptionViewItem& option) const;
void paintAvatar(const Models::FeedItem& data, const QModelIndex& index, const QStyleOptionViewItem& option, QPainter* painter) const;
void paintBubble(const Models::FeedItem& data, QPainter* painter, const QStyleOptionViewItem& option) const;
QPushButton* getButton(const Models::FeedItem& data) const;
QProgressBar* getBar(const Models::FeedItem& data) const;
QLabel* getStatusIcon(const Models::FeedItem& data) const;
QLabel* getPencilIcon(const Models::FeedItem& data) const;
QLabel* getBody(const Models::FeedItem& data) const;
QTextBrowser* getBody(const Models::FeedItem& data) const;
void clearHelperWidget(const Models::FeedItem& data) const;
bool needToDrawAvatar(const QModelIndex& index, const Models::FeedItem& data, const QStyleOptionViewItem& option) const;
@ -95,7 +98,7 @@ private:
QFont nickFont;
QFont dateFont;
QFontMetrics bodyMetrics;
TextMeter bodyMeter;
QTextDocument* bodyRenderer;
QFontMetrics nickMetrics;
QFontMetrics dateMetrics;
@ -107,7 +110,7 @@ private:
std::map<QString, QProgressBar*>* bars;
std::map<QString, QLabel*>* statusIcons;
std::map<QString, QLabel*>* pencilIcons;
std::map<QString, QLabel*>* bodies;
std::map<QString, QTextBrowser*>* bodies;
std::map<QString, Preview*>* previews;
std::set<QString>* idsToKeep;
bool clearingWidgets;