diff --git a/src/gui/rss/rsswidget.cpp b/src/gui/rss/rsswidget.cpp
index 2c3fe7572..fb764a19c 100644
--- a/src/gui/rss/rsswidget.cpp
+++ b/src/gui/rss/rsswidget.cpp
@@ -333,7 +333,7 @@ void RSSWidget::on_newFeedButton_clicked()
// Ask for feed URL
const QString clipText = qApp->clipboard()->text();
- const QString defaultURL = Net::DownloadManager::hasSupportedScheme(clipText) ? clipText : u"http://"_s;
+ const QString defaultURL = Net::DownloadManager::hasSupportedScheme(clipText) ? clipText : u"https://"_s;
RSS::Feed *newFeed = nullptr;
RSSFeedDialog dialog {this};
@@ -623,58 +623,60 @@ void RSSWidget::renderArticle(const RSS::Article *article) const
{
Q_ASSERT(article);
+ const QString articleLink = article->link();
const QString highlightedBaseColor = m_ui->textBrowser->palette().color(QPalette::Active, QPalette::Highlight).name();
const QString highlightedBaseTextColor = m_ui->textBrowser->palette().color(QPalette::Active, QPalette::HighlightedText).name();
const QString alternateBaseColor = m_ui->textBrowser->palette().color(QPalette::Active, QPalette::AlternateBase).name();
- QString html =
- u"
" +
- u"
%3
"_s.arg(highlightedBaseColor, highlightedBaseTextColor, article->title());
- if (article->date().isValid())
- html += u"
%2%3
"_s.arg(alternateBaseColor, tr("Date: "), QLocale::system().toString(article->date().toLocalTime(), QLocale::ShortFormat));
+ QString html = u"
"
+ + u"
%3
"_s.arg(highlightedBaseColor, highlightedBaseTextColor, article->title());
+ if (const QDateTime articleDate = article->date(); articleDate.isValid())
+ html += u"
%2%3
"_s.arg(alternateBaseColor, tr("Date: "), QLocale::system().toString(articleDate.toLocalTime(), QLocale::ShortFormat));
if (m_ui->feedListWidget->currentItem() == m_ui->feedListWidget->stickyUnreadItem())
html += u"
%2%3
"_s.arg(alternateBaseColor, tr("Feed: "), article->feed()->title());
- if (!article->author().isEmpty())
- html += u"
%2%3
"_s.arg(alternateBaseColor, tr("Author: "), article->author());
+ if (const QString articleAuthor = article->author(); !articleAuthor.isEmpty())
+ html += u"
%2%3
"_s.arg(alternateBaseColor, tr("Author: "), articleAuthor);
+ if (!articleLink.isEmpty())
+ html += u"
"_s.arg(alternateBaseColor, articleLink, tr("Open link"));
html += u"
"
u"
";
- if (Qt::mightBeRichText(article->description()))
+ if (QString description = article->description(); Qt::mightBeRichText(description))
{
- html += article->description();
+ html += description;
}
else
{
- QString description = article->description();
QRegularExpression rx;
// If description is plain text, replace BBCode tags with HTML and wrap everything in
so it looks nice
rx.setPatternOptions(QRegularExpression::InvertedGreedinessOption
| QRegularExpression::CaseInsensitiveOption);
rx.setPattern(u"\\[img\\](.+)\\[/img\\]"_s);
- description = description.replace(rx, u"

"_s);
+ description.replace(rx, u"

"_s);
rx.setPattern(u"\\[url=(\")?(.+)\\1\\]"_s);
- description = description.replace(rx, u"
"_s);
- description = description.replace(u"[/url]"_s, u""_s, Qt::CaseInsensitive);
+ description.replace(rx, u"
"_s)
+ .replace(u"[/url]"_s, u""_s, Qt::CaseInsensitive);
rx.setPattern(u"\\[(/)?([bius])\\]"_s);
- description = description.replace(rx, u"<\\1\\2>"_s);
+ description.replace(rx, u"<\\1\\2>"_s);
rx.setPattern(u"\\[color=(\")?(.+)\\1\\]"_s);
- description = description.replace(rx, u"
"_s);
- description = description.replace(u"[/color]"_s, u""_s, Qt::CaseInsensitive);
+ description.replace(rx, u"
"_s)
+ .replace(u"[/color]"_s, u""_s, Qt::CaseInsensitive);
rx.setPattern(u"\\[size=(\")?(.+)\\d\\1\\]"_s);
- description = description.replace(rx, u"
"_s);
- description = description.replace(u"[/size]"_s, u""_s, Qt::CaseInsensitive);
+ description.replace(rx, u"
"_s)
+ .replace(u"[/size]"_s, u""_s, Qt::CaseInsensitive);
html += u"
" + description + u"
";
}
+ html += u"
";
// Supplement relative URLs to absolute ones
- const QUrl url {article->link()};
+ const QUrl url {articleLink};
const QString baseUrl = url.toString(QUrl::RemovePath | QUrl::RemoveQuery);
convertRelativeUrlToAbsolute(html, baseUrl);
- html += u"
";
+
m_ui->textBrowser->setHtml(html);
}