diff --git a/resources/skins/dark/html_single_message.html b/resources/skins/dark/html_single_message.html index 2a35cfbde..771ed87fe 100755 --- a/resources/skins/dark/html_single_message.html +++ b/resources/skins/dark/html_single_message.html @@ -1,16 +1,11 @@

%1 URL %6

- -
- - -
- %10 + %7
%4
diff --git a/resources/skins/dark/html_wrapper.html b/resources/skins/dark/html_wrapper.html index 0b603a292..6b863afb7 100755 --- a/resources/skins/dark/html_wrapper.html +++ b/resources/skins/dark/html_wrapper.html @@ -7195,30 +7195,8 @@ a.list-group-item-danger.active:focus { - + diff --git a/resources/skins/dark/metadata.xml b/resources/skins/dark/metadata.xml index 5261a1691..f2ab79705 100755 --- a/resources/skins/dark/metadata.xml +++ b/resources/skins/dark/metadata.xml @@ -1,5 +1,5 @@ - + Martin Rotter rotter.martinos@gmail.com diff --git a/resources/skins/vergilius/html_single_message.html b/resources/skins/vergilius/html_single_message.html index 5bd750e20..c8c62aa41 100755 --- a/resources/skins/vergilius/html_single_message.html +++ b/resources/skins/vergilius/html_single_message.html @@ -1,13 +1,9 @@

%1 URL %6

-
- - -
- %10 + %7
%4
diff --git a/resources/skins/vergilius/html_wrapper.html b/resources/skins/vergilius/html_wrapper.html index 97be4a35f..8052cb172 100755 --- a/resources/skins/vergilius/html_wrapper.html +++ b/resources/skins/vergilius/html_wrapper.html @@ -5891,30 +5891,8 @@ - + %1 - - - diff --git a/resources/skins/vergilius/metadata.xml b/resources/skins/vergilius/metadata.xml index d6d5acffe..d520af087 100755 --- a/resources/skins/vergilius/metadata.xml +++ b/resources/skins/vergilius/metadata.xml @@ -1,5 +1,5 @@ - + Martin Rotter rotter.martinos@gmail.com diff --git a/src/librssguard/gui/feedmessageviewer.cpp b/src/librssguard/gui/feedmessageviewer.cpp index 1f24665d3..d7709f477 100644 --- a/src/librssguard/gui/feedmessageviewer.cpp +++ b/src/librssguard/gui/feedmessageviewer.cpp @@ -5,9 +5,13 @@ #include "core/feeddownloader.h" #include "core/feedsproxymodel.h" #include "core/messagesproxymodel.h" +#include "exceptions/applicationexception.h" +#include "gui/dialogs/formdatabasecleanup.h" +#include "gui/dialogs/formmain.h" #include "gui/feedstoolbar.h" #include "gui/feedsview.h" #include "gui/messagebox.h" +#include "gui/messagepreviewer.h" #include "gui/messagestoolbar.h" #include "gui/messagesview.h" #include "gui/statusbar.h" @@ -23,14 +27,8 @@ #include "services/standard/standardfeedsimportexportmodel.h" #include "services/standard/standardserviceroot.h" -#include "exceptions/applicationexception.h" -#include "gui/dialogs/formdatabasecleanup.h" -#include "gui/dialogs/formmain.h" - #if defined(USE_WEBENGINE) #include "gui/webbrowser.h" -#else -#include "gui/messagepreviewer.h" #endif #include @@ -49,13 +47,7 @@ FeedMessageViewer::FeedMessageViewer(QWidget* parent) : TabContent(parent), m_toolBarsEnabled(true), m_listHeadersEnabled(true), m_toolBarFeeds(new FeedsToolBar(tr("Toolbar for feeds"), this)), m_toolBarMessages(new MessagesToolBar(tr("Toolbar for messages"), this)), m_messagesView(new MessagesView(this)), m_feedsView(new FeedsView(this)), - -#if defined(USE_WEBENGINE) - m_messagesBrowser(new WebBrowser(this)) { -#else m_messagesBrowser(new MessagePreviewer(this)) { -#endif - initialize(); initializeViews(); @@ -70,7 +62,7 @@ FeedMessageViewer::~FeedMessageViewer() { #if defined(USE_WEBENGINE) WebBrowser* FeedMessageViewer::webBrowser() const { - return m_messagesBrowser; + return m_messagesBrowser->webBrowser(); } #endif @@ -210,16 +202,10 @@ void FeedMessageViewer::createConnections() { connect(m_toolBarMessages, &MessagesToolBar::messageSearchPatternChanged, m_messagesView, &MessagesView::searchMessages); connect(m_toolBarMessages, &MessagesToolBar::messageFilterChanged, m_messagesView, &MessagesView::filterMessages); -#if defined(USE_WEBENGINE) - connect(m_messagesView, &MessagesView::currentMessageRemoved, m_messagesBrowser, &WebBrowser::clear); - connect(m_messagesBrowser, &WebBrowser::markMessageRead, m_messagesView->sourceModel(), &MessagesModel::setMessageReadById); - connect(m_messagesBrowser, &WebBrowser::markMessageImportant, m_messagesView->sourceModel(), &MessagesModel::setMessageImportantById); -#else connect(m_messagesView, &MessagesView::currentMessageRemoved, m_messagesBrowser, &MessagePreviewer::clear); connect(m_messagesBrowser, &MessagePreviewer::markMessageRead, m_messagesView->sourceModel(), &MessagesModel::setMessageReadById); connect(m_messagesBrowser, &MessagePreviewer::markMessageImportant, m_messagesView->sourceModel(), &MessagesModel::setMessageImportantById); -#endif connect(m_messagesView, &MessagesView::currentMessageChanged, this, &FeedMessageViewer::displayMessage); diff --git a/src/librssguard/gui/feedmessageviewer.h b/src/librssguard/gui/feedmessageviewer.h index 6305bdae8..4a23154b2 100644 --- a/src/librssguard/gui/feedmessageviewer.h +++ b/src/librssguard/gui/feedmessageviewer.h @@ -11,10 +11,9 @@ #if defined(USE_WEBENGINE) class WebBrowser; -#else -class MessagePreviewer; #endif +class MessagePreviewer; class MessagesView; class MessagesToolBar; class FeedsToolBar; @@ -91,12 +90,7 @@ class RSSGUARD_DLLSPEC FeedMessageViewer : public TabContent { FeedsView* m_feedsView; QWidget* m_feedsWidget; QWidget* m_messagesWidget; - -#if defined(USE_WEBENGINE) - WebBrowser* m_messagesBrowser; -#else MessagePreviewer* m_messagesBrowser; -#endif }; #endif // FEEDMESSAGEVIEWER_H diff --git a/src/librssguard/gui/messagepreviewer.cpp b/src/librssguard/gui/messagepreviewer.cpp index 122ade174..fad888b15 100755 --- a/src/librssguard/gui/messagepreviewer.cpp +++ b/src/librssguard/gui/messagepreviewer.cpp @@ -10,7 +10,11 @@ #include "network-web/webfactory.h" #include "services/abstract/serviceroot.h" +#if defined (USE_WEBENGINE) +#include "gui/webbrowser.h" +#else #include "gui/messagetextbrowser.h" +#endif #include #include @@ -22,6 +26,8 @@ void MessagePreviewer::createConnections() { installEventFilter(this); +#if defined (USE_WEBENGINE) +#else connect(m_searchWidget, &SearchTextWidget::cancelSearch, this, [this]() { m_txtMessage->textCursor().clearSelection(); m_txtMessage->moveCursor(QTextCursor::MoveOperation::Left); @@ -87,6 +93,14 @@ void MessagePreviewer::createConnections() { tr("Selected hyperlink is invalid.")); } }); + connect(m_txtMessage, + QOverload::of(&QTextBrowser::highlighted), + [=](const QUrl& url) { + Q_UNUSED(url) + QToolTip::showText(QCursor::pos(), tr("Click this link to download it or open it with external browser."), this); + }); +#endif + connect(m_actionMarkRead = m_toolBar->addAction(qApp->icons()->fromTheme("mail-mark-read"), tr("Mark message as read")), &QAction::triggered, this, @@ -99,52 +113,52 @@ void MessagePreviewer::createConnections() { &QAction::triggered, this, &MessagePreviewer::switchMessageImportance); - connect(m_txtMessage, - QOverload::of(&QTextBrowser::highlighted), - [=](const QUrl& url) { - Q_UNUSED(url) - QToolTip::showText(QCursor::pos(), tr("Click this link to download it or open it with external browser."), this); - }); } MessagePreviewer::MessagePreviewer(QWidget* parent) - : QWidget(parent), m_layout(new QGridLayout(this)), m_toolBar(new QToolBar(this)), - m_txtMessage(new MessageTextBrowser(this)), m_searchWidget(new SearchTextWidget(this)) { - - m_txtMessage->setAutoFillBackground(true); - m_txtMessage->setFrameShape(QFrame::StyledPanel); - m_txtMessage->setFrameShadow(QFrame::Plain); - m_txtMessage->setTabChangesFocus(true); - m_txtMessage->setOpenLinks(false); - m_txtMessage->viewport()->setAutoFillBackground(true); + : QWidget(parent), m_layout(new QGridLayout(this)), m_toolBar(new QToolBar(this)) { +#if defined (USE_WEBENGINE) + m_txtMessage = new WebBrowser(this); +#else + m_txtMessage = new MessageTextBrowser(this); + m_searchWidget = new SearchTextWidget(this); +#endif m_toolBar->setOrientation(Qt::Vertical); - m_layout->setContentsMargins(3, 3, 3, 3); m_layout->addWidget(m_txtMessage, 0, 1, 1, 1); + +#if !defined (USE_WEBENGINE) m_layout->addWidget(m_searchWidget, 1, 1, 1, 1); +#endif + m_layout->addWidget(m_toolBar, 0, 0, -1, 1); createConnections(); - m_actionSwitchImportance->setCheckable(true); - m_searchWidget->hide(); +#if defined (USE_WEBENGINE) +#else + m_searchWidget->hide(); +#endif reloadFontSettings(); clear(); } void MessagePreviewer::reloadFontSettings() { - const Settings* settings = qApp->settings(); - QFont fon; - - fon.fromString(settings->value(GROUP(Messages), SETTING(Messages::PreviewerFontStandard)).toString()); - m_txtMessage->setFont(fon); + m_txtMessage->reloadFontSettings(); } +#if defined (USE_WEBENGINE) + +WebBrowser* MessagePreviewer::webBrowser() const { + return m_txtMessage; +} + +#endif + void MessagePreviewer::clear() { m_txtMessage->clear(); - m_pictures.clear(); hide(); } @@ -157,12 +171,15 @@ void MessagePreviewer::loadMessage(const Message& message, RootItem* root) { m_root = root; if (!m_root.isNull()) { - m_searchWidget->hide(); - m_actionSwitchImportance->setChecked(m_message.m_isImportant); - m_txtMessage->setHtml(prepareHtmlForMessage(m_message)); updateButtons(); show(); + m_actionSwitchImportance->setChecked(m_message.m_isImportant); + m_txtMessage->loadMessage(message, root); + +#if !defined (USE_WEBENGINE) + m_searchWidget->hide(); m_txtMessage->verticalScrollBar()->triggerAction(QScrollBar::SliderToMinimum); +#endif } } @@ -222,16 +239,19 @@ void MessagePreviewer::switchMessageImportance(bool checked) { bool MessagePreviewer::eventFilter(QObject* watched, QEvent* event) { Q_UNUSED(watched) +#if !defined (USE_WEBENGINE) if (event->type() == QEvent::Type::KeyPress) { auto* key_event = static_cast(event); if (key_event->matches(QKeySequence::StandardKey::Find)) { + m_searchWidget->clear(); m_searchWidget->show(); m_searchWidget->setFocus(); return true; } } +#endif return false; } @@ -240,54 +260,3 @@ void MessagePreviewer::updateButtons() { m_actionMarkRead->setEnabled(!m_message.m_isRead); m_actionMarkUnread->setEnabled(m_message.m_isRead); } - -QString MessagePreviewer::prepareHtmlForMessage(const Message& message) { - QString html = QString("

%1

").arg(message.m_title); - - if (!message.m_url.isEmpty()) { - html += QString("[url] %1
").arg(message.m_url); - } - - for (const Enclosure& enc : message.m_enclosures) { - QString enc_url; - - if (!enc.m_url.contains(QRegularExpression(QSL("^(http|ftp|\\/)")))) { - enc_url = QString(INTERNAL_URL_PASSATTACHMENT) + QL1S("/?") + enc.m_url; - } - else { - enc_url = enc.m_url; - } - - html += QString("[%2] %1
").arg(enc_url, enc.m_mimeType); - } - - QRegularExpression imgTagRegex("\\]*src\\s*=\\s*[\"\']([^\"\']*)[\"\'][^\\>]*\\>", - QRegularExpression::PatternOption::CaseInsensitiveOption | - QRegularExpression::PatternOption::InvertedGreedinessOption); - QRegularExpressionMatchIterator i = imgTagRegex.globalMatch(message.m_contents); - QString pictures_html; - - while (i.hasNext()) { - QRegularExpressionMatch match = i.next(); - - m_pictures.append(match.captured(1)); - pictures_html += QString("
[%1] %2").arg(tr("image"), match.captured(1)); - } - - if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::DisplayImagePlaceholders)).toBool()) { - html += message.m_contents; - } - else { - QString cnts = message.m_contents; - - html += cnts.replace(imgTagRegex, QString()); - } - - html += pictures_html; - html = html - .replace(QSL("\r\n"), QSL("\n")) - .replace(QL1C('\r'), QL1C('\n')) - .replace(QL1C('\n'), QSL("
")); - - return html; -} diff --git a/src/librssguard/gui/messagepreviewer.h b/src/librssguard/gui/messagepreviewer.h index cd3a3a989..b6e887c0b 100644 --- a/src/librssguard/gui/messagepreviewer.h +++ b/src/librssguard/gui/messagepreviewer.h @@ -13,8 +13,12 @@ class QGridLayout; class QToolBar; +#if defined (USE_WEBENGINE) +class WebBrowser; +#else class MessageTextBrowser; class SearchTextWidget; +#endif class MessagePreviewer : public QWidget { Q_OBJECT @@ -24,6 +28,10 @@ class MessagePreviewer : public QWidget { void reloadFontSettings(); +#if defined (USE_WEBENGINE) + WebBrowser* webBrowser() const; +#endif + public slots: void clear(); void hideToolbar(); @@ -45,14 +53,18 @@ class MessagePreviewer : public QWidget { private: void createConnections(); void updateButtons(); - QString prepareHtmlForMessage(const Message& message); QGridLayout* m_layout; QToolBar* m_toolBar; + +#if defined (USE_WEBENGINE) + WebBrowser* m_txtMessage; +#else MessageTextBrowser* m_txtMessage; SearchTextWidget* m_searchWidget; +#endif + Message m_message; - QStringList m_pictures; QPointer m_root; QAction* m_actionMarkRead; QAction* m_actionMarkUnread; diff --git a/src/librssguard/gui/messagetextbrowser.cpp b/src/librssguard/gui/messagetextbrowser.cpp index 238ceec13..6c3ef4602 100644 --- a/src/librssguard/gui/messagetextbrowser.cpp +++ b/src/librssguard/gui/messagetextbrowser.cpp @@ -5,8 +5,67 @@ #include "miscellaneous/application.h" #include "miscellaneous/iconfactory.h" #include "network-web/networkfactory.h" +#include "services/abstract/rootitem.h" -MessageTextBrowser::MessageTextBrowser(QWidget* parent) : QTextBrowser(parent) {} +MessageTextBrowser::MessageTextBrowser(QWidget* parent) : QTextBrowser(parent) { + setAutoFillBackground(true); + setFrameShape(QFrame::StyledPanel); + setFrameShadow(QFrame::Plain); + setTabChangesFocus(true); + setOpenLinks(false); + viewport()->setAutoFillBackground(true); +} + +QString MessageTextBrowser::prepareHtmlForMessage(const Message& message) { + QString html = QString("

%1

").arg(message.m_title); + + if (!message.m_url.isEmpty()) { + html += QString("[url] %1
").arg(message.m_url); + } + + for (const Enclosure& enc : message.m_enclosures) { + QString enc_url; + + if (!enc.m_url.contains(QRegularExpression(QSL("^(http|ftp|\\/)")))) { + enc_url = QString(INTERNAL_URL_PASSATTACHMENT) + QL1S("/?") + enc.m_url; + } + else { + enc_url = enc.m_url; + } + + html += QString("[%2] %1
").arg(enc_url, enc.m_mimeType); + } + + QRegularExpression imgTagRegex("\\]*src\\s*=\\s*[\"\']([^\"\']*)[\"\'][^\\>]*\\>", + QRegularExpression::PatternOption::CaseInsensitiveOption | + QRegularExpression::PatternOption::InvertedGreedinessOption); + QRegularExpressionMatchIterator i = imgTagRegex.globalMatch(message.m_contents); + QString pictures_html; + + while (i.hasNext()) { + QRegularExpressionMatch match = i.next(); + + m_pictures.append(match.captured(1)); + pictures_html += QString("
[%1] %2").arg(tr("image"), match.captured(1)); + } + + if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::DisplayImagePlaceholders)).toBool()) { + html += message.m_contents; + } + else { + QString cnts = message.m_contents; + + html += cnts.replace(imgTagRegex, QString()); + } + + html += pictures_html; + html = html + .replace(QSL("\r\n"), QSL("\n")) + .replace(QL1C('\r'), QL1C('\n')) + .replace(QL1C('\n'), QSL("
")); + + return html; +} QVariant MessageTextBrowser::loadResource(int type, const QUrl& name) { Q_UNUSED(name) @@ -30,6 +89,25 @@ QVariant MessageTextBrowser::loadResource(int type, const QUrl& name) { } } +void MessageTextBrowser::clear() { + QTextBrowser::clear(); + m_pictures.clear(); +} + +void MessageTextBrowser::reloadFontSettings() { + const Settings* settings = qApp->settings(); + QFont fon; + + fon.fromString(settings->value(GROUP(Messages), SETTING(Messages::PreviewerFontStandard)).toString()); + setFont(fon); +} + +void MessageTextBrowser::loadMessage(const Message& message, RootItem* root) { + Q_UNUSED(root) + + setHtml(prepareHtmlForMessage(message)); +} + void MessageTextBrowser::wheelEvent(QWheelEvent* e) { QTextBrowser::wheelEvent(e); qApp->settings()->setValue(GROUP(Messages), Messages::PreviewerFontStandard, font().toString()); diff --git a/src/librssguard/gui/messagetextbrowser.h b/src/librssguard/gui/messagetextbrowser.h index 234208705..a0487d09c 100644 --- a/src/librssguard/gui/messagetextbrowser.h +++ b/src/librssguard/gui/messagetextbrowser.h @@ -5,6 +5,10 @@ #include +#include "core/message.h" + +class RootItem; + class MessageTextBrowser : public QTextBrowser { Q_OBJECT @@ -14,11 +18,20 @@ class MessageTextBrowser : public QTextBrowser { QVariant loadResource(int type, const QUrl& name); + public slots: + void clear(); + void reloadFontSettings(); + void loadMessage(const Message& message, RootItem* root); + protected: void wheelEvent(QWheelEvent* e); + private: + QString prepareHtmlForMessage(const Message& message); + private: QPixmap m_imagePlaceholder; + QStringList m_pictures; }; #endif // MESSAGETEXTBROWSER_H diff --git a/src/librssguard/gui/newspaperpreviewer.cpp b/src/librssguard/gui/newspaperpreviewer.cpp index a7966e36e..2258fd1fd 100644 --- a/src/librssguard/gui/newspaperpreviewer.cpp +++ b/src/librssguard/gui/newspaperpreviewer.cpp @@ -15,11 +15,19 @@ NewspaperPreviewer::NewspaperPreviewer(RootItem* root, QList messages, showMoreMessages(); } +#if defined(USE_WEBENGINE) + +WebBrowser* NewspaperPreviewer::webBrowser() const { + return nullptr; +} + +#endif + void NewspaperPreviewer::showMoreMessages() { if (!m_root.isNull()) { int current_scroll = m_ui->scrollArea->verticalScrollBar()->value(); - for (int i = 0; i < 10 && !m_messages.isEmpty(); i++) { + for (int i = 0; i < 5 && !m_messages.isEmpty(); i++) { Message msg = m_messages.takeFirst(); auto* prev = new MessagePreviewer(this); QMargins margins = prev->layout()->contentsMargins(); @@ -28,7 +36,8 @@ void NewspaperPreviewer::showMoreMessages() { connect(prev, &MessagePreviewer::markMessageImportant, this, &NewspaperPreviewer::markMessageImportant); prev->layout()->setContentsMargins(margins); - prev->setFixedHeight(300); + + prev->setFixedHeight(200); prev->loadMessage(msg, m_root); m_ui->m_layout->insertWidget(m_ui->m_layout->count() - 2, prev); } diff --git a/src/librssguard/gui/newspaperpreviewer.h b/src/librssguard/gui/newspaperpreviewer.h index 6e438dafd..8a1d7117e 100644 --- a/src/librssguard/gui/newspaperpreviewer.h +++ b/src/librssguard/gui/newspaperpreviewer.h @@ -20,12 +20,20 @@ namespace Ui { class RootItem; +#if defined(USE_WEBENGINE) +class WebBrowser; +#endif + class NewspaperPreviewer : public TabContent { Q_OBJECT public: explicit NewspaperPreviewer(RootItem* root, QList messages, QWidget* parent = nullptr); +#if defined(USE_WEBENGINE) + WebBrowser* webBrowser() const; +#endif + private slots: void showMoreMessages(); diff --git a/src/librssguard/gui/searchtextwidget.cpp b/src/librssguard/gui/searchtextwidget.cpp index cc8acf259..db8143609 100644 --- a/src/librssguard/gui/searchtextwidget.cpp +++ b/src/librssguard/gui/searchtextwidget.cpp @@ -10,6 +10,7 @@ SearchTextWidget::SearchTextWidget(QWidget* parent) : QWidget(parent) { m_ui.setupUi(this); setFocusProxy(m_ui.m_txtSearch); + setFixedHeight(28); m_ui.m_btnClear->setIcon(qApp->icons()->fromTheme(QSL("edit-clear"))); m_ui.m_btnSearchBackward->setIcon(qApp->icons()->fromTheme(QSL("back"))); diff --git a/src/librssguard/gui/tabwidget.cpp b/src/librssguard/gui/tabwidget.cpp index 1ba44858b..0debb1c22 100644 --- a/src/librssguard/gui/tabwidget.cpp +++ b/src/librssguard/gui/tabwidget.cpp @@ -3,23 +3,21 @@ #include "gui/tabwidget.h" #include "definitions/definitions.h" +#include "gui/dialogs/formmain.h" #include "gui/feedmessageviewer.h" #include "gui/feedsview.h" #include "gui/messagesview.h" +#include "gui/newspaperpreviewer.h" +#include "gui/plaintoolbutton.h" #include "gui/tabbar.h" #include "miscellaneous/application.h" #include "miscellaneous/iconfactory.h" #include "miscellaneous/settings.h" #include "miscellaneous/textfactory.h" - -#include "gui/dialogs/formmain.h" -#include "gui/plaintoolbutton.h" +#include "network-web/webfactory.h" #if defined(USE_WEBENGINE) #include "gui/webbrowser.h" -#else -#include "gui/newspaperpreviewer.h" -#include "network-web/webfactory.h" #endif #include @@ -185,21 +183,12 @@ void TabWidget::closeAllTabs() { } int TabWidget::addNewspaperView(RootItem* root, const QList& messages) { -#if defined(USE_WEBENGINE) - WebBrowser* prev = new WebBrowser(this); - - connect(prev, &WebBrowser::markMessageRead, - m_feedMessageViewer->messagesView()->sourceModel(), &MessagesModel::setMessageReadById); - connect(prev, &WebBrowser::markMessageImportant, - m_feedMessageViewer->messagesView()->sourceModel(), &MessagesModel::setMessageImportantById); -#else NewspaperPreviewer* prev = new NewspaperPreviewer(root, messages, this); connect(prev, &NewspaperPreviewer::markMessageRead, m_feedMessageViewer->messagesView()->sourceModel(), &MessagesModel::setMessageReadById); connect(prev, &NewspaperPreviewer::markMessageImportant, m_feedMessageViewer->messagesView()->sourceModel(), &MessagesModel::setMessageImportantById); -#endif int index = addTab(prev, qApp->icons()->fromTheme(QSL("format-justify-fill")), @@ -209,10 +198,6 @@ int TabWidget::addNewspaperView(RootItem* root, const QList& messages) // NOTE: Do not bring "newspaper" tabs to front anymore. //setCurrentIndex(index); -#if defined(USE_WEBENGINE) - prev->loadMessages(messages, root); -#endif - return index; } diff --git a/src/librssguard/gui/webbrowser.cpp b/src/librssguard/gui/webbrowser.cpp index 3e0f34c7b..baa668370 100644 --- a/src/librssguard/gui/webbrowser.cpp +++ b/src/librssguard/gui/webbrowser.cpp @@ -57,7 +57,6 @@ void WebBrowser::createConnections() { m_searchWidget->setFocus(); }); - connect(m_webView, &WebViewer::messageStatusChangeRequested, this, &WebBrowser::receiveMessageStatusChangeRequest); connect(m_txtLocation, &LocationLineEdit::submitted, this, static_cast(&WebBrowser::loadUrl)); connect(m_webView, &WebViewer::urlChanged, this, &WebBrowser::updateUrl); @@ -76,8 +75,6 @@ void WebBrowser::createConnections() { void WebBrowser::updateUrl(const QUrl& url) { m_txtLocation->setText(url.toString()); - - //setNavigationBarVisible(url_string != INTERNAL_URL_EMPTY && url_string != INTERNAL_URL_NEWSPAPER); } void WebBrowser::loadUrl(const QUrl& url) { @@ -154,29 +151,6 @@ bool WebBrowser::eventFilter(QObject* watched, QEvent* event) { return false; } -void WebBrowser::receiveMessageStatusChangeRequest(int message_id, WebPage::MessageStatusChange change) { - switch (change) { - case WebPage::MessageStatusChange::MarkRead: - markMessageAsRead(message_id, true); - break; - - case WebPage::MessageStatusChange::MarkUnread: - markMessageAsRead(message_id, false); - break; - - case WebPage::MessageStatusChange::MarkStarred: - switchMessageImportance(message_id, true); - break; - - case WebPage::MessageStatusChange::MarkUnstarred: - switchMessageImportance(message_id, false); - break; - - default: - break; - } -} - void WebBrowser::onTitleChanged(const QString& new_title) { if (new_title.isEmpty()) { //: Webbrowser tab title when no title is available. @@ -259,56 +233,6 @@ void WebBrowser::onLoadingFinished(bool success) { m_loadingProgress->setValue(0); } -void WebBrowser::markMessageAsRead(int id, bool read) { - if (!m_root.isNull()) { - Message* msg = findMessage(id); - - if (msg != nullptr && m_root->getParentServiceRoot()->onBeforeSetMessagesRead(m_root.data(), - QList() << *msg, - read - ? RootItem::ReadStatus::Read - : RootItem::ReadStatus::Unread)) { - DatabaseQueries::markMessagesReadUnread(qApp->database()->connection(objectName()), - QStringList() << QString::number(msg->m_id), - read ? RootItem::ReadStatus::Read : RootItem::ReadStatus::Unread); - m_root->getParentServiceRoot()->onAfterSetMessagesRead(m_root.data(), - QList() << *msg, - read ? RootItem::ReadStatus::Read : RootItem::ReadStatus::Unread); - emit markMessageRead(msg->m_id, read ? RootItem::ReadStatus::Read : RootItem::ReadStatus::Unread); - - msg->m_isRead = read; - } - } -} - -void WebBrowser::switchMessageImportance(int id, bool checked) { - if (!m_root.isNull()) { - Message* msg = findMessage(id); - - if (msg != nullptr && - m_root->getParentServiceRoot()->onBeforeSwitchMessageImportance(m_root.data(), - QList() - << ImportanceChange(*msg, - msg->m_isImportant - ? RootItem::Importance::NotImportant - : RootItem::Importance::Important))) { - DatabaseQueries::switchMessagesImportance(qApp->database()->connection(objectName()), - QStringList() << QString::number(msg->m_id)); - m_root->getParentServiceRoot()->onAfterSwitchMessageImportance(m_root.data(), - QList() - << ImportanceChange(*msg, - msg->m_isImportant ? - RootItem::Importance::NotImportant : - RootItem::Importance::Important)); - emit markMessageImportant(msg->m_id, msg->m_isImportant - ? RootItem::Importance::NotImportant - : RootItem::Importance::Important); - - msg->m_isImportant = checked; - } - } -} - Message* WebBrowser::findMessage(int id) { for (int i = 0; i < m_messages.size(); i++) { if (m_messages.at(i).m_id == id) { diff --git a/src/librssguard/gui/webbrowser.h b/src/librssguard/gui/webbrowser.h index 5c87478d9..7f8d9d52a 100644 --- a/src/librssguard/gui/webbrowser.h +++ b/src/librssguard/gui/webbrowser.h @@ -31,13 +31,8 @@ class WebBrowser : public TabContent { explicit WebBrowser(QWidget* parent = nullptr); virtual ~WebBrowser(); - WebBrowser* webBrowser() const { - return const_cast(this); - } - - WebViewer* viewer() const { - return m_webView; - } + WebBrowser* webBrowser() const; + WebViewer* viewer() const; void reloadFontSettings(); @@ -51,11 +46,7 @@ class WebBrowser : public TabContent { void loadUrl(const QUrl& url); void loadMessages(const QList& messages, RootItem* root); void loadMessage(const Message& message, RootItem* root); - - // Switches visibility of navigation bar. - inline void setNavigationBarVisible(bool visible) { - m_toolBar->setVisible(visible); - } + void setNavigationBarVisible(bool visible); protected: bool eventFilter(QObject* watched, QEvent* event); @@ -66,9 +57,6 @@ class WebBrowser : public TabContent { void onLoadingStarted(); void onLoadingProgress(int progress); void onLoadingFinished(bool success); - - void receiveMessageStatusChangeRequest(int message_id, WebPage::MessageStatusChange change); - void onTitleChanged(const QString& new_title); void onIconChanged(const QIcon& icon); @@ -77,15 +65,10 @@ class WebBrowser : public TabContent { void iconChanged(int index, const QIcon& icon); void titleChanged(int index, const QString& title); - void markMessageRead(int id, RootItem::ReadStatus read); - void markMessageImportant(int id, RootItem::Importance important); - private: void initializeLayout(); Message* findMessage(int id); - void markMessageAsRead(int id, bool read); - void switchMessageImportance(int id, bool checked); void createConnections(); QVBoxLayout* m_layout; @@ -103,4 +86,16 @@ class WebBrowser : public TabContent { QPointer m_root; }; +inline WebBrowser* WebBrowser::webBrowser() const { + return const_cast(this); +} + +inline WebViewer* WebBrowser::viewer() const { + return m_webView; +} + +inline void WebBrowser::setNavigationBarVisible(bool visible) { + m_toolBar->setVisible(visible); +} + #endif // WEBBROWSER_H diff --git a/src/librssguard/gui/webviewer.cpp b/src/librssguard/gui/webviewer.cpp index 5779c7ba9..f3eca184a 100644 --- a/src/librssguard/gui/webviewer.cpp +++ b/src/librssguard/gui/webviewer.cpp @@ -131,10 +131,7 @@ void WebViewer::loadMessages(const QList& messages, RootItem* root) { message.m_contents, QLocale().toString(message.m_created, QLocale::FormatType::ShortFormat), enclosures, - message.m_isRead ? "mark-unread" : "mark-read", - message.m_isImportant ? "mark-unstarred" : "mark-starred", - QString::number(message.m_id)) - .arg(enclosure_images)); + enclosure_images)); } m_root = root; diff --git a/src/librssguard/librssguard.pro b/src/librssguard/librssguard.pro index c8b28c22d..9a6c80d04 100644 --- a/src/librssguard/librssguard.pro +++ b/src/librssguard/librssguard.pro @@ -174,7 +174,9 @@ HEADERS += core/feeddownloader.h \ services/gmail/gui/formdownloadattachment.h \ services/gmail/gui/formaddeditemail.h \ gui/searchtextwidget.h \ - network-web/oauthhttphandler.h + network-web/oauthhttphandler.h \ + gui/messagepreviewer.h \ + gui/newspaperpreviewer.h SOURCES += core/feeddownloader.cpp \ core/feedsmodel.cpp \ @@ -313,7 +315,9 @@ SOURCES += core/feeddownloader.cpp \ services/gmail/gui/formdownloadattachment.cpp \ services/gmail/gui/formaddeditemail.cpp \ gui/searchtextwidget.cpp \ - network-web/oauthhttphandler.cpp + network-web/oauthhttphandler.cpp \ + gui/messagepreviewer.cpp \ + gui/newspaperpreviewer.cpp mac { OBJECTIVE_SOURCES += miscellaneous/disablewindowtabbing.mm @@ -348,7 +352,8 @@ FORMS += gui/dialogs/formabout.ui \ services/tt-rss/gui/formeditttrssaccount.ui \ services/gmail/gui/formdownloadattachment.ui \ services/gmail/gui/formaddeditemail.ui \ - gui/searchtextwidget.ui + gui/searchtextwidget.ui \ + gui/newspaperpreviewer.ui equals(USE_WEBENGINE, true) { HEADERS += gui/locationlineedit.h \ @@ -399,16 +404,8 @@ equals(USE_WEBENGINE, true) { network-web/adblock/adblockdialog.ui } else { - HEADERS += gui/messagepreviewer.h \ - gui/messagetextbrowser.h \ - gui/newspaperpreviewer.h - - SOURCES += gui/messagepreviewer.cpp \ - gui/messagetextbrowser.cpp \ - gui/newspaperpreviewer.cpp - - FORMS += \ - gui/newspaperpreviewer.ui + HEADERS += gui/messagetextbrowser.h + SOURCES += gui/messagetextbrowser.cpp } # Add mimesis.