diff --git a/src/librssguard/gui/litehtml/litehtmlviewer.cpp b/src/librssguard/gui/litehtml/litehtmlviewer.cpp index 1f7fee138..080c71fdf 100755 --- a/src/librssguard/gui/litehtml/litehtmlviewer.cpp +++ b/src/librssguard/gui/litehtml/litehtmlviewer.cpp @@ -2,7 +2,10 @@ #include "gui/litehtml/litehtmlviewer.h" +#include "core/message.h" #include "gui/webbrowser.h" +#include "miscellaneous/application.h" +#include "miscellaneous/skinfactory.h" #include "network-web/networkfactory.h" #include @@ -72,7 +75,77 @@ QUrl LiteHtmlViewer::url() const { void LiteHtmlViewer::clear() {} void LiteHtmlViewer::loadMessages(const QList& messages, RootItem* root) { - setHtml(messages.at(0).m_contents); + Skin skin = qApp->skins()->currentSkin(); + QString messages_layout; + QString single_message_layout = skin.m_layoutMarkup; + + for (const Message& message : messages) { + QString enclosures; + QString enclosure_images; + + for (const Enclosure& enclosure : message.m_enclosures) { + QString enc_url; + + if (!enclosure.m_url.contains(QRegularExpression(QSL("^(http|ftp|\\/)")))) { + enc_url = QSL(INTERNAL_URL_PASSATTACHMENT) + QL1S("/?") + enclosure.m_url; + } + else { + enc_url = enclosure.m_url; + } + + enc_url = QUrl::fromPercentEncoding(enc_url.toUtf8()); + + enclosures += skin.m_enclosureMarkup.arg(enc_url, + QSL("🧷"), + enclosure.m_mimeType); + + if (enclosure.m_mimeType.startsWith(QSL("image/")) && + qApp->settings()->value(GROUP(Messages), SETTING(Messages::DisplayEnclosuresInMessage)).toBool()) { + // Add thumbnail image. + enclosure_images += skin.m_enclosureImageMarkup.arg( + enclosure.m_url, + enclosure.m_mimeType, + qApp->settings()->value(GROUP(Messages), SETTING(Messages::MessageHeadImageHeight)).toString()); + } + } + + QString msg_date = qApp->settings()->value(GROUP(Messages), SETTING(Messages::UseCustomDate)).toBool() + ? message.m_created.toLocalTime().toString(qApp->settings()->value(GROUP(Messages), + SETTING(Messages::CustomDateFormat)).toString()) + : qApp->localization()->loadedLocale().toString(message.m_created.toLocalTime(), + QLocale::FormatType::ShortFormat); + + messages_layout.append(single_message_layout + .arg(message.m_title, + tr("Written by ") + (message.m_author.isEmpty() ? + tr("unknown author") : + message.m_author), + message.m_url, + message.m_contents, + msg_date, + enclosures, + enclosure_images, + QString::number(message.m_id))); + } + + QString msg_contents = skin.m_layoutMarkupWrapper.arg(messages.size() == 1 + ? messages.at(0).m_title + : tr("Newspaper view"), + messages_layout); + auto* feed = root->getParentServiceRoot()->getItemFromSubTree([messages](const RootItem* it) { + return it->kind() == RootItem::Kind::Feed && it->customId() == messages.at(0).m_feedId; + })->toFeed(); + QString base_url; + + if (feed != nullptr) { + QUrl url(NetworkFactory::sanitizeUrl(feed->source())); + + if (url.isValid()) { + base_url = url.scheme() + QSL("://") + url.host(); + } + } + + setHtml(msg_contents, QUrl::fromUserInput(base_url)); } double LiteHtmlViewer::verticalScrollBarPosition() const { diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.cpp b/src/librssguard/gui/settings/settingsfeedsmessages.cpp index 72b3958ad..ddc3f2d69 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.cpp +++ b/src/librssguard/gui/settings/settingsfeedsmessages.cpp @@ -32,25 +32,9 @@ SettingsFeedsMessages::SettingsFeedsMessages(Settings* settings, QWidget* parent "performance of article list with big number of articles."), true); -#if defined(USE_WEBENGINE) - m_ui->m_tabMessages->layout()->removeWidget(m_ui->m_checkDisplayPlaceholders); - m_ui->m_checkDisplayPlaceholders->hide(); - connect(m_ui->m_cbShowEnclosuresDirectly, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); connect(m_ui->m_spinHeightImageAttachments, static_cast(&QSpinBox::valueChanged), this, &SettingsFeedsMessages::dirtifySettings); -#else - m_ui->m_tabMessages->layout()->removeWidget(m_ui->m_cbShowEnclosuresDirectly); - m_ui->m_cbShowEnclosuresDirectly->hide(); - - m_ui->m_tabMessages->layout()->removeWidget(m_ui->m_lblHeightImageAttachments); - m_ui->m_lblHeightImageAttachments->hide(); - - m_ui->m_tabMessages->layout()->removeWidget(m_ui->m_spinHeightImageAttachments); - m_ui->m_spinHeightImageAttachments->hide(); - - connect(m_ui->m_checkDisplayPlaceholders, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); -#endif connect(m_ui->m_spinRelativeArticleTime, QOverload::of(&QSpinBox::valueChanged), this, [=](int value) { if (value <= 0) { @@ -210,14 +194,10 @@ void SettingsFeedsMessages::loadSettings() { m_ui->m_checkMultilineArticleList->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::MultilineArticleList)).toBool()); -#if !defined (USE_WEBENGINE) - m_ui->m_checkDisplayPlaceholders->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::DisplayImagePlaceholders)).toBool()); -#else m_ui->m_spinHeightImageAttachments->setValue(settings()->value(GROUP(Messages), SETTING(Messages::MessageHeadImageHeight)).toInt()); m_ui->m_cbShowEnclosuresDirectly->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::DisplayEnclosuresInMessage)).toBool()); -#endif m_ui->m_cbFixupArticleDatetime->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::FixupFutureArticleDateTimes)).toBool()); @@ -282,15 +262,10 @@ void SettingsFeedsMessages::saveSettings() { settings()->setValue(GROUP(Feeds), Feeds::EnableTooltipsFeedsMessages, m_ui->m_checkShowTooltips->isChecked()); settings()->setValue(GROUP(Messages), Messages::IgnoreContentsChanges, m_ui->m_cmbIgnoreContentsChanges->isChecked()); settings()->setValue(GROUP(Messages), Messages::MultilineArticleList, m_ui->m_checkMultilineArticleList->isChecked()); - -#if !defined (USE_WEBENGINE) - settings()->setValue(GROUP(Messages), Messages::DisplayImagePlaceholders, m_ui->m_checkDisplayPlaceholders->isChecked()); -#else settings()->setValue(GROUP(Messages), Messages::MessageHeadImageHeight, m_ui->m_spinHeightImageAttachments->value()); settings()->setValue(GROUP(Messages), Messages::DisplayEnclosuresInMessage, m_ui->m_cbShowEnclosuresDirectly->isChecked()); -#endif settings()->setValue(GROUP(Messages), Messages::FixupFutureArticleDateTimes, m_ui->m_cbFixupArticleDatetime->isChecked()); diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.ui b/src/librssguard/gui/settings/settingsfeedsmessages.ui index d779e793c..9e39a4876 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.ui +++ b/src/librssguard/gui/settings/settingsfeedsmessages.ui @@ -297,28 +297,28 @@ - - + + - Display placeholders to indicate locations of pictures + Fixup date/time of articles which are in the future - + Display attached pictures directly in article - + Bring application window to front once article is opened in external web browser - + Image attachments height @@ -328,7 +328,7 @@ - + px @@ -341,7 +341,7 @@ - + @@ -384,7 +384,7 @@ - + Qt::Vertical @@ -397,13 +397,6 @@ - - - - Fixup date/time of articles which are in the future - - - @@ -637,7 +630,6 @@ m_checkRemoveReadMessagesOnExit m_cmbIgnoreContentsChanges m_cbFixupArticleDatetime - m_checkDisplayPlaceholders m_cbShowEnclosuresDirectly m_checkBringToForegroundAfterMsgOpened m_spinHeightImageAttachments diff --git a/src/librssguard/gui/webengine/webengineviewer.cpp b/src/librssguard/gui/webengine/webengineviewer.cpp index ab2861732..250f369cc 100644 --- a/src/librssguard/gui/webengine/webengineviewer.cpp +++ b/src/librssguard/gui/webengine/webengineviewer.cpp @@ -110,6 +110,11 @@ void WebEngineViewer::loadMessages(const QList& messages, RootItem* roo QString::number(message.m_id))); } + m_messageContents = skin.m_layoutMarkupWrapper.arg(messages.size() == 1 + ? messages.at(0).m_title + : tr("Newspaper view"), + messages_layout); + m_root = root; auto* feed = root->getParentServiceRoot()->getItemFromSubTree([messages](const RootItem* it) { @@ -126,9 +131,6 @@ void WebEngineViewer::loadMessages(const QList& messages, RootItem* roo } } - m_messageContents = skin.m_layoutMarkupWrapper.arg(messages.size() == 1 ? messages.at(0).m_title : tr("Newspaper view"), - messages_layout); - bool previously_enabled = isEnabled(); setEnabled(false); diff --git a/src/librssguard/miscellaneous/settings.cpp b/src/librssguard/miscellaneous/settings.cpp index 72818a226..1dae5cc33 100644 --- a/src/librssguard/miscellaneous/settings.cpp +++ b/src/librssguard/miscellaneous/settings.cpp @@ -111,19 +111,12 @@ DKEY Messages::ID = "messages"; DKEY Messages::MessageHeadImageHeight = "message_head_image_height"; DVALUE(int) Messages::MessageHeadImageHeightDef = 36; -#if defined (USE_WEBENGINE) DKEY Messages::DisplayEnclosuresInMessage = "show_enclosures_in_message"; DVALUE(bool) Messages::DisplayEnclosuresInMessageDef = false; -#endif DKEY Messages::EnableMessagePreview = "enable_message_preview"; DVALUE(bool) Messages::EnableMessagePreviewDef = true; -#if !defined (USE_WEBENGINE) -DKEY Messages::DisplayImagePlaceholders = "display_image_placeholders"; -DVALUE(bool) Messages::DisplayImagePlaceholdersDef = false; -#endif - DKEY Messages::Zoom = "zoom"; DVALUE(qreal) Messages::ZoomDef = double(1.0f); diff --git a/src/librssguard/miscellaneous/settings.h b/src/librssguard/miscellaneous/settings.h index 816143aac..7d666e844 100644 --- a/src/librssguard/miscellaneous/settings.h +++ b/src/librssguard/miscellaneous/settings.h @@ -124,11 +124,6 @@ namespace Messages { KEY EnableMessagePreview; VALUE(bool) EnableMessagePreviewDef; -#if !defined (USE_WEBENGINE) - KEY DisplayImagePlaceholders; - VALUE(bool) DisplayImagePlaceholdersDef; -#endif - KEY Zoom; VALUE(qreal) ZoomDef;