Improve image width rendering by limiting the image width to the label's width
This commit is contained in:
parent
5d8865a8f1
commit
2c4effe372
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "entry.h"
|
#include "entry.h"
|
||||||
|
|
||||||
|
#include <QRegularExpression>
|
||||||
#include <QSqlQuery>
|
#include <QSqlQuery>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
|
|
||||||
@ -116,3 +117,37 @@ void Entry::setRead(bool read)
|
|||||||
query.bindValue(QStringLiteral(":read"), m_read);
|
query.bindValue(QStringLiteral(":read"), m_read);
|
||||||
Database::instance().execute(query);
|
Database::instance().execute(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString Entry::adjustedContent(int width, int fontSize)
|
||||||
|
{
|
||||||
|
QString ret(m_content);
|
||||||
|
QRegularExpression imgRegex(QStringLiteral("<img ((?!width=\"[0-9]+(px)?\").)*(width=\"([0-9]+)(px)?\")?[^>]*>"));
|
||||||
|
|
||||||
|
QRegularExpressionMatchIterator i = imgRegex.globalMatch(ret);
|
||||||
|
while (i.hasNext()) {
|
||||||
|
QRegularExpressionMatch match = i.next();
|
||||||
|
|
||||||
|
QString imgTag(match.captured());
|
||||||
|
if (imgTag.contains(QStringLiteral("wp-smiley")))
|
||||||
|
imgTag.insert(4, QStringLiteral(" width=\"%1\"").arg(fontSize));
|
||||||
|
|
||||||
|
QString widthParameter = match.captured(4);
|
||||||
|
|
||||||
|
if (widthParameter.length() != 0) {
|
||||||
|
if (widthParameter.toInt() > width)
|
||||||
|
imgTag.replace(match.captured(3), QStringLiteral("width=\"%1\"").arg(width));
|
||||||
|
} else {
|
||||||
|
imgTag.insert(4, QStringLiteral(" width=\"%1\"").arg(width));
|
||||||
|
}
|
||||||
|
ret.replace(match.captured(), imgTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret.replace(QRegularExpression(QStringLiteral("<ul[^>]*>")), QLatin1String(""));
|
||||||
|
ret.replace(QRegularExpression(QStringLiteral("</ul>")), QLatin1String(""));
|
||||||
|
|
||||||
|
ret.replace(QRegularExpression(QStringLiteral("<li[^>]*>")), QLatin1String(""));
|
||||||
|
ret.replace(QRegularExpression(QStringLiteral("</li>")), QLatin1String(""));
|
||||||
|
|
||||||
|
ret.replace(QStringLiteral("<img"), QStringLiteral("<br /> <img"));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@ -61,6 +61,8 @@ public:
|
|||||||
|
|
||||||
void setRead(bool read);
|
void setRead(bool read);
|
||||||
|
|
||||||
|
Q_INVOKABLE QString adjustedContent(int width, int fontSize);
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void readChanged(bool read);
|
void readChanged(bool read);
|
||||||
|
|
||||||
|
@ -34,13 +34,13 @@ Kirigami.ScrollablePage {
|
|||||||
title: entry.title
|
title: entry.title
|
||||||
|
|
||||||
Controls.Label {
|
Controls.Label {
|
||||||
//anchors.fill: parent
|
|
||||||
text: page.entry.content
|
text: page.entry.content
|
||||||
baseUrl: page.entry.baseUrl
|
baseUrl: page.entry.baseUrl
|
||||||
textFormat: Text.RichText
|
textFormat: Text.RichText
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
onLinkActivated: Qt.openUrlExternally(link)
|
onLinkActivated: Qt.openUrlExternally(link)
|
||||||
|
onWidthChanged: text = entry.adjustedContent(width, font.pixelSize)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user