From e1e7abd6ca75a58726d555e07ac686c2476a99fb Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 7 Apr 2025 09:52:20 +0200 Subject: [PATCH] fix #1672 and make sure http2 setting is used when guessing a feed --- .../src/gui/formstandardfeeddetails.cpp | 11 ++++------- .../src/gui/standardfeeddetails.cpp | 6 ++++-- .../src/gui/standardfeeddetails.h | 3 ++- .../src/gui/standardfeedexpdetails.cpp | 8 ++++++++ .../src/gui/standardfeedexpdetails.h | 3 +++ src/librssguard-standard/src/standardfeed.cpp | 6 ++++-- src/librssguard-standard/src/standardfeed.h | 4 +++- src/librssguard/gui/systemtrayicon.cpp | 9 +++++++++ src/librssguard/gui/systemtrayicon.h | 2 ++ 9 files changed, 39 insertions(+), 13 deletions(-) diff --git a/src/librssguard-standard/src/gui/formstandardfeeddetails.cpp b/src/librssguard-standard/src/gui/formstandardfeeddetails.cpp index 45e089a1e..0922ad82b 100644 --- a/src/librssguard-standard/src/gui/formstandardfeeddetails.cpp +++ b/src/librssguard-standard/src/gui/formstandardfeeddetails.cpp @@ -56,7 +56,8 @@ void FormStandardFeedDetails::guessFeed() { m_authDetails->username(), m_authDetails->password(), StandardFeed::httpHeadersToList(m_headersDetails->httpHeaders()), - m_serviceRoot->networkProxy()); + m_serviceRoot->networkProxy(), + m_standardFeedExpDetails->http2Status()); } void FormStandardFeedDetails::guessIconOnly() { @@ -139,9 +140,7 @@ void FormStandardFeedDetails::apply() { } if (isChangeAllowed(m_standardFeedExpDetails->m_ui.m_mcbEnableHttp2)) { - std_feed->setHttp2Status(static_cast(m_standardFeedExpDetails->m_ui.m_cmbEnableHttp2 - ->currentData() - .toInt())); + std_feed->setHttp2Status(m_standardFeedExpDetails->http2Status()); } std_feed->setCreationDate(QDateTime::currentDateTime()); @@ -227,9 +226,7 @@ void FormStandardFeedDetails::loadFeedData() { } else { m_standardFeedDetails->setExistingFeed(std_feed); - m_standardFeedExpDetails->m_ui.m_cbDontUseRawXml->setChecked(std_feed->dontUseRawXmlSaving()); - m_standardFeedExpDetails->m_ui.m_cmbEnableHttp2 - ->setCurrentIndex(m_standardFeedExpDetails->m_ui.m_cmbEnableHttp2->findData(int(std_feed->http2Status()))); + m_standardFeedExpDetails->setHttp2Status(std_feed->http2Status()); } } diff --git a/src/librssguard-standard/src/gui/standardfeeddetails.cpp b/src/librssguard-standard/src/gui/standardfeeddetails.cpp index 5bef5984b..be53ae08e 100644 --- a/src/librssguard-standard/src/gui/standardfeeddetails.cpp +++ b/src/librssguard-standard/src/gui/standardfeeddetails.cpp @@ -237,7 +237,8 @@ void StandardFeedDetails::guessFeed(StandardFeed::SourceType source_type, const QString& username, const QString& password, const QList>& headers, - const QNetworkProxy& custom_proxy) { + const QNetworkProxy& custom_proxy, + NetworkFactory::Http2Status http2_status) { try { auto metadata = StandardFeed::guessFeed(source_type, source, @@ -248,7 +249,8 @@ void StandardFeedDetails::guessFeed(StandardFeed::SourceType source_type, username, password, headers, - custom_proxy); + custom_proxy, + http2_status); // Icon or whole feed was guessed. m_ui.m_btnIcon->setIcon(metadata.first->icon()); diff --git a/src/librssguard-standard/src/gui/standardfeeddetails.h b/src/librssguard-standard/src/gui/standardfeeddetails.h index 22456f8f2..3a5c7d4c2 100644 --- a/src/librssguard-standard/src/gui/standardfeeddetails.h +++ b/src/librssguard-standard/src/gui/standardfeeddetails.h @@ -42,7 +42,8 @@ class StandardFeedDetails : public QWidget { const QString& username, const QString& password, const QList>& headers = {}, - const QNetworkProxy& custom_proxy = QNetworkProxy::ProxyType::DefaultProxy); + const QNetworkProxy& custom_proxy = QNetworkProxy::ProxyType::DefaultProxy, + NetworkFactory::Http2Status http2_status = NetworkFactory::Http2Status::DontSet); void onTitleChanged(const QString& new_title); void onDescriptionChanged(const QString& new_description); diff --git a/src/librssguard-standard/src/gui/standardfeedexpdetails.cpp b/src/librssguard-standard/src/gui/standardfeedexpdetails.cpp index 037dcc8c5..e24b00f77 100644 --- a/src/librssguard-standard/src/gui/standardfeedexpdetails.cpp +++ b/src/librssguard-standard/src/gui/standardfeedexpdetails.cpp @@ -33,3 +33,11 @@ StandardFeedExpDetails::StandardFeedExpDetails(QWidget* parent) : QWidget(parent m_ui.m_cmbEnableHttp2->addItem(tr("Enabled"), QVariant::fromValue(int(NetworkFactory::Http2Status::Enabled))); m_ui.m_cmbEnableHttp2->addItem(tr("Disabled"), QVariant::fromValue(int(NetworkFactory::Http2Status::Disabled))); } + +void StandardFeedExpDetails::setHttp2Status(NetworkFactory::Http2Status status) { + m_ui.m_cmbEnableHttp2->setCurrentIndex(m_ui.m_cmbEnableHttp2->findData(int(status))); +} + +NetworkFactory::Http2Status StandardFeedExpDetails::http2Status() const { + return static_cast(m_ui.m_cmbEnableHttp2->currentData().toInt()); +} diff --git a/src/librssguard-standard/src/gui/standardfeedexpdetails.h b/src/librssguard-standard/src/gui/standardfeedexpdetails.h index 082b01d97..82ae3cfb5 100644 --- a/src/librssguard-standard/src/gui/standardfeedexpdetails.h +++ b/src/librssguard-standard/src/gui/standardfeedexpdetails.h @@ -21,6 +21,9 @@ class StandardFeedExpDetails : public QWidget { public: explicit StandardFeedExpDetails(QWidget* parent = nullptr); + void setHttp2Status(NetworkFactory::Http2Status status); + NetworkFactory::Http2Status http2Status() const; + private: Ui::StandardFeedExpDetails m_ui; }; diff --git a/src/librssguard-standard/src/standardfeed.cpp b/src/librssguard-standard/src/standardfeed.cpp index b4b595900..1ddd9b745 100644 --- a/src/librssguard-standard/src/standardfeed.cpp +++ b/src/librssguard-standard/src/standardfeed.cpp @@ -307,7 +307,8 @@ QPair StandardFeed::guessFeed(StandardFeed::Source const QString& username, const QString& password, const QList>& http_headers, - const QNetworkProxy& custom_proxy) { + const QNetworkProxy& custom_proxy, + NetworkFactory::Http2Status http2_status) { auto timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt(); QByteArray feed_contents; NetworkResult network_result; @@ -328,7 +329,8 @@ QPair StandardFeed::guessFeed(StandardFeed::Source false, {}, {}, - custom_proxy); + custom_proxy, + http2_status); // account->resetHostSpacing(host); diff --git a/src/librssguard-standard/src/standardfeed.h b/src/librssguard-standard/src/standardfeed.h index 5e92616e3..d1ac4a175 100644 --- a/src/librssguard-standard/src/standardfeed.h +++ b/src/librssguard-standard/src/standardfeed.h @@ -92,7 +92,9 @@ class StandardFeed : public Feed { const QString& password = {}, const QList>& http_headers = {}, const QNetworkProxy& custom_proxy = - QNetworkProxy::ProxyType::DefaultProxy); + QNetworkProxy::ProxyType::DefaultProxy, + NetworkFactory::Http2Status http2_status = + NetworkFactory::Http2Status::DontSet); // Converts particular feed type to string. static QString typeToString(Type type); diff --git a/src/librssguard/gui/systemtrayicon.cpp b/src/librssguard/gui/systemtrayicon.cpp index 64280d254..a697e42ea 100644 --- a/src/librssguard/gui/systemtrayicon.cpp +++ b/src/librssguard/gui/systemtrayicon.cpp @@ -32,6 +32,9 @@ SystemTrayIcon::SystemTrayIcon(const QString& normal_icon, const QString& plain_ qDebugNN << LOGSEC_GUI << "Creating SystemTrayIcon instance."; m_font.setBold(true); + m_tmrDoubleFire.setSingleShot(true); + m_tmrDoubleFire.setInterval(100); + // Initialize icon. setNumber(); setContextMenu(parent->trayMenu()); @@ -46,6 +49,12 @@ SystemTrayIcon::~SystemTrayIcon() { } void SystemTrayIcon::onActivated(QSystemTrayIcon::ActivationReason reason) { + if (m_tmrDoubleFire.isActive()) { + return; + } + + m_tmrDoubleFire.start(); + switch (reason) { case SystemTrayIcon::ActivationReason::Trigger: case SystemTrayIcon::ActivationReason::DoubleClick: diff --git a/src/librssguard/gui/systemtrayicon.h b/src/librssguard/gui/systemtrayicon.h index f30377116..84dc7a68e 100644 --- a/src/librssguard/gui/systemtrayicon.h +++ b/src/librssguard/gui/systemtrayicon.h @@ -10,6 +10,7 @@ #include #include #include +#include class FormMain; class QEvent; @@ -66,6 +67,7 @@ class SystemTrayIcon : public QSystemTrayIcon { QIcon m_normalIcon; QPixmap m_plainPixmap; QFont m_font = QFont(); + QTimer m_tmrDoubleFire; QMetaObject::Connection m_connection; };