better way to solve yesterday font problem, small visual avatar rendering fix

This commit is contained in:
Blue 2023-01-12 20:56:01 +03:00
parent 15fb4bbd62
commit d4bf7e599a
Signed by untrusted user: blue
GPG key ID: 9B203B252A63EE38
9 changed files with 62 additions and 56 deletions

View file

@ -24,7 +24,6 @@
#include <QApplication>
#include <QClipboard>
#include <QDebug>
#include <QFontDatabase>
#include "messagedelegate.h"
#include "messagefeed.h"
@ -41,8 +40,6 @@ const std::set<int> FeedView::geometryChangingRoles = {
Models::MessageFeed::Error,
Models::MessageFeed::Date
};
QFont FeedView::dividerFont = QFontDatabase::systemFont(QFontDatabase::TitleFont);
QFontMetrics FeedView::dividerMetrics = QFontMetrics(dividerFont);
FeedView::FeedView(QWidget* parent):
QAbstractItemView(parent),
@ -54,6 +51,8 @@ FeedView::FeedView(QWidget* parent):
clearWidgetsMode(false),
modelState(Models::MessageFeed::complete),
progress(),
dividerFont(Shared::Global::getInstance()->titleFont),
dividerMetrics(Shared::Global::getInstance()->titleFontMetrics),
mousePressed(false),
dragging(false),
hovered(Shared::Hover::nothing),

View file

@ -99,8 +99,8 @@ private:
bool clearWidgetsMode;
Models::MessageFeed::SyncState modelState;
Progress progress;
static QFont dividerFont;
static QFontMetrics dividerMetrics;
const QFont& dividerFont;
const QFontMetrics& dividerMetrics;
bool mousePressed;
bool dragging;
Shared::Hover hovered;

View file

@ -24,21 +24,11 @@
#include <QAbstractItemView>
#include <QAbstractTextDocumentLayout>
#include <QTextBlock>
#include <QFontDatabase>
#include <cmath>
#include "messagedelegate.h"
#include "messagefeed.h"
QFont getFont (QFontDatabase::SystemFont type, bool bold, bool italic) {
QFont font = QFontDatabase::systemFont(type);
if (bold)
font.setBold(true);
if (italic)
font.setItalic(true);
return font;
}
constexpr int textMargin = 2;
constexpr int statusIconSize = 16;
@ -48,15 +38,13 @@ constexpr int bubbleBorderRadius = 3;
int MessageDelegate::avatarHeight(50);
int MessageDelegate::margin(6);
bool MessageDelegate::fontsInitialized(false);
QFont MessageDelegate::bodyFont;
QFont MessageDelegate::nickFont;
QFont MessageDelegate::dateFont;
QFontMetrics MessageDelegate::nickMetrics(nickFont);
QFontMetrics MessageDelegate::dateMetrics(dateFont);
MessageDelegate::MessageDelegate(QObject* parent):
QStyledItemDelegate(parent),
bodyFont(Shared::Global::getInstance()->defaultFont),
nickFont(Shared::Global::getInstance()->headerFont),
dateFont(Shared::Global::getInstance()->smallFont),
nickMetrics(Shared::Global::getInstance()->headerFontMetrics),
dateMetrics(Shared::Global::getInstance()->smallFontMetrics),
bodyRenderer(new QTextDocument()),
buttonHeight(0),
buttonWidth(0),
@ -71,11 +59,6 @@ MessageDelegate::MessageDelegate(QObject* parent):
currentId(""),
selection(0, 0)
{
if (!fontsInitialized) {
fontsInitialized = true;
initializeFonts();
}
bodyRenderer->setDocumentMargin(0);
bodyRenderer->setDefaultFont(bodyFont);
@ -812,11 +795,3 @@ void MessageDelegate::clearHelperWidget(const Models::FeedItem& data) const
}
}
}
void MessageDelegate::initializeFonts () {
bodyFont = getFont(QFontDatabase::GeneralFont, false, false);
nickFont = getFont(QFontDatabase::TitleFont, true, false);
dateFont = getFont(QFontDatabase::SmallestReadableFont, false, true);
nickMetrics = QFontMetrics(nickFont);
dateMetrics = QFontMetrics(dateFont);
}

View file

@ -93,9 +93,6 @@ protected:
protected slots:
void onButtonPushed() const;
private:
static void initializeFonts();
private:
class FeedButton : public QPushButton {
@ -103,13 +100,12 @@ private:
QString messageId;
};
static bool fontsInitialized;
static QFont bodyFont;
static QFont nickFont;
static QFont dateFont;
const QFont& bodyFont;
const QFont& nickFont;
const QFont& dateFont;
const QFontMetrics& nickMetrics;
const QFontMetrics& dateMetrics;
QTextDocument* bodyRenderer;
static QFontMetrics nickMetrics;
static QFontMetrics dateMetrics;
int buttonHeight;
int buttonWidth;