diff --git a/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp b/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp index 0d78a76ee..441bbae16 100644 --- a/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp +++ b/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp @@ -34,6 +34,15 @@ TextBrowserViewer::TextBrowserViewer(QWidget* parent) setResourcesEnabled(qApp->settings()->value(GROUP(Messages), SETTING(Messages::ShowResourcesInArticles)).toBool()); setDocument(m_document.data()); + // Apply master CSS. + QColor a_color = qApp->skins()->currentSkin().colorForModel(SkinEnums::PaletteColors::FgInteresting).value(); + + if (!a_color.isValid()) { + a_color = qApp->palette().color(QPalette::ColorRole::Highlight); + } + + m_document.data()->setDefaultStyleSheet(QSL("a { color: %1; }").arg(a_color.name())); + connect(this, &TextBrowserViewer::reloadDocument, this, [this]() { const auto scr = verticalScrollBarPosition(); setHtmlPrivate(html(), m_currentUrl); @@ -116,12 +125,6 @@ PreparedHtml TextBrowserViewer::prepareHtmlForMessage(const QList& mess html.m_html += QSL(""); - QColor a_color = qApp->skins()->currentSkin().colorForModel(SkinEnums::PaletteColors::FgInteresting).value(); - - if (!a_color.isValid()) { - a_color = qApp->palette().color(QPalette::ColorRole::Highlight); - } - QString base_url; auto* feed = selected_item->getParentServiceRoot() ->getItemFromSubTree([messages](const RootItem* it) { @@ -137,14 +140,6 @@ PreparedHtml TextBrowserViewer::prepareHtmlForMessage(const QList& mess } } - // Final html, with replaced link colors. - html.m_html = QSL("" - "" - "%1" - "") - .arg(html.m_html, a_color.name()); html.m_baseUrl = base_url; return html; diff --git a/src/librssguard/services/gmail/gmailnetworkfactory.h b/src/librssguard/services/gmail/gmailnetworkfactory.h index c55aa3697..0b1e0398a 100644 --- a/src/librssguard/services/gmail/gmailnetworkfactory.h +++ b/src/librssguard/services/gmail/gmailnetworkfactory.h @@ -20,7 +20,7 @@ class OAuth2Service; class Downloader; class GmailNetworkFactory : public QObject { - Q_OBJECT + Q_OBJECT public: explicit GmailNetworkFactory(QObject* parent = nullptr); @@ -40,10 +40,15 @@ class GmailNetworkFactory : public QObject { void setDownloadOnlyUnreadMessages(bool download_only_unread_messages); // API methods. + QMap getMessageMetadata(const QString& msg_id, + const QStringList& metadata, + const QNetworkProxy& custom_proxy); QNetworkRequest requestForAttachment(const QString& email_id, const QString& attachment_id); QString sendEmail(Mimesis::Message msg, const QNetworkProxy& custom_proxy, Message* reply_to_message = nullptr); - QList messages(const QString& stream_id, const QHash& stated_messages, - Feed::Status& error, const QNetworkProxy& custom_proxy); + QList messages(const QString& stream_id, + const QHash& stated_messages, + Feed::Status& error, + const QNetworkProxy& custom_proxy); QNetworkReply::NetworkError markMessagesRead(RootItem::ReadStatus status, const QStringList& custom_ids, const QNetworkProxy& custom_proxy); @@ -64,9 +69,6 @@ class GmailNetworkFactory : public QObject { private: bool fillFullMessage(Message& msg, const QJsonObject& json, const QString& feed_id); - QMap getMessageMetadata(const QString& msg_id, - const QStringList& metadata, - const QNetworkProxy& custom_proxy); QList obtainAndDecodeFullMessages(const QStringList& message_ids, const QString& feed_id, const QNetworkProxy& custom_proxy); diff --git a/src/librssguard/services/gmail/gui/emailpreviewer.cpp b/src/librssguard/services/gmail/gui/emailpreviewer.cpp index e9828c14e..9191e6605 100644 --- a/src/librssguard/services/gmail/gui/emailpreviewer.cpp +++ b/src/librssguard/services/gmail/gui/emailpreviewer.cpp @@ -18,6 +18,9 @@ EmailPreviewer::EmailPreviewer(GmailServiceRoot* account, QWidget* parent) : CustomMessagePreviewer(parent), m_account(account), m_webView(new WebBrowser(nullptr, this)) { m_ui.setupUi(this); + m_tmrLoadExtraMessageData.setInterval(200); + m_tmrLoadExtraMessageData.setSingleShot(true); + m_ui.m_mainLayout->addWidget(dynamic_cast(m_webView.data()), 3, 0, 1, -1); m_ui.m_btnAttachments->setIcon(qApp->icons()->fromTheme(QSL("mail-attachment"))); m_ui.m_btnForward->setIcon(qApp->icons()->fromTheme(QSL("mail-forward"))); @@ -32,6 +35,8 @@ EmailPreviewer::EmailPreviewer(GmailServiceRoot* account, QWidget* parent) connect(menu_attachments, &QMenu::triggered, this, &EmailPreviewer::downloadAttachment); connect(m_ui.m_btnReply, &QToolButton::clicked, this, &EmailPreviewer::replyToEmail); connect(m_ui.m_btnForward, &QToolButton::clicked, this, &EmailPreviewer::forwardEmail); + + connect(&m_tmrLoadExtraMessageData, &QTimer::timeout, this, &EmailPreviewer::loadExtraMessageData); } EmailPreviewer::~EmailPreviewer() { @@ -39,6 +44,7 @@ EmailPreviewer::~EmailPreviewer() { } void EmailPreviewer::clear() { + m_tmrLoadExtraMessageData.stop(); m_webView->clear(false); } @@ -61,6 +67,14 @@ void EmailPreviewer::loadMessage(const Message& msg, RootItem* selected_item) { } m_ui.m_btnAttachments->setDisabled(m_ui.m_btnAttachments->menu()->isEmpty()); + + m_tmrLoadExtraMessageData.start(); +} + +void EmailPreviewer::loadExtraMessageData() { + m_ui.m_tbTo->setText(m_account->network()->getMessageMetadata(m_message.m_customId, + {QSL("TO")}, + m_account->networkProxy())["To"]); } void EmailPreviewer::replyToEmail() { @@ -86,8 +100,7 @@ void EmailPreviewer::downloadAttachment(QAction* act) { if (!data.isEmpty()) { IOFactory::writeFile(it->output().fileName(), - QByteArray::fromBase64(data.toLocal8Bit(), - QByteArray::Base64Option::Base64UrlEncoding)); + QByteArray::fromBase64(data.toLocal8Bit(), QByteArray::Base64Option::Base64UrlEncoding)); } } }); diff --git a/src/librssguard/services/gmail/gui/emailpreviewer.h b/src/librssguard/services/gmail/gui/emailpreviewer.h index 5ccfa1d36..ba6332522 100644 --- a/src/librssguard/services/gmail/gui/emailpreviewer.h +++ b/src/librssguard/services/gmail/gui/emailpreviewer.h @@ -9,10 +9,12 @@ #include "ui_emailpreviewer.h" +#include + class GmailServiceRoot; class EmailPreviewer : public CustomMessagePreviewer { - Q_OBJECT + Q_OBJECT public: explicit EmailPreviewer(GmailServiceRoot* account, QWidget* parent = nullptr); @@ -22,6 +24,7 @@ class EmailPreviewer : public CustomMessagePreviewer { virtual void loadMessage(const Message& msg, RootItem* selected_item); private slots: + void loadExtraMessageData(); void replyToEmail(); void forwardEmail(); void downloadAttachment(QAction* act); @@ -31,6 +34,7 @@ class EmailPreviewer : public CustomMessagePreviewer { GmailServiceRoot* m_account; QScopedPointer m_webView; Message m_message; + QTimer m_tmrLoadExtraMessageData; }; #endif // EMAILPREVIEWER_H diff --git a/src/librssguard/services/gmail/gui/emailpreviewer.ui b/src/librssguard/services/gmail/gui/emailpreviewer.ui index d6c2ac962..b7aa24d30 100644 --- a/src/librssguard/services/gmail/gui/emailpreviewer.ui +++ b/src/librssguard/services/gmail/gui/emailpreviewer.ui @@ -14,13 +14,6 @@ Form - - - - true - - - @@ -115,6 +108,13 @@ + + + + true + + +