fix #1672 and make sure http2 setting is used when guessing a feed

This commit is contained in:
Martin Rotter 2025-04-07 09:52:20 +02:00
parent c68e545ea4
commit e1e7abd6ca
9 changed files with 39 additions and 13 deletions

View file

@ -56,7 +56,8 @@ void FormStandardFeedDetails::guessFeed() {
m_authDetails->username(), m_authDetails->username(),
m_authDetails->password(), m_authDetails->password(),
StandardFeed::httpHeadersToList(m_headersDetails->httpHeaders()), StandardFeed::httpHeadersToList(m_headersDetails->httpHeaders()),
m_serviceRoot->networkProxy()); m_serviceRoot->networkProxy(),
m_standardFeedExpDetails->http2Status());
} }
void FormStandardFeedDetails::guessIconOnly() { void FormStandardFeedDetails::guessIconOnly() {
@ -139,9 +140,7 @@ void FormStandardFeedDetails::apply() {
} }
if (isChangeAllowed(m_standardFeedExpDetails->m_ui.m_mcbEnableHttp2)) { if (isChangeAllowed(m_standardFeedExpDetails->m_ui.m_mcbEnableHttp2)) {
std_feed->setHttp2Status(static_cast<NetworkFactory::Http2Status>(m_standardFeedExpDetails->m_ui.m_cmbEnableHttp2 std_feed->setHttp2Status(m_standardFeedExpDetails->http2Status());
->currentData()
.toInt()));
} }
std_feed->setCreationDate(QDateTime::currentDateTime()); std_feed->setCreationDate(QDateTime::currentDateTime());
@ -227,9 +226,7 @@ void FormStandardFeedDetails::loadFeedData() {
} }
else { else {
m_standardFeedDetails->setExistingFeed(std_feed); m_standardFeedDetails->setExistingFeed(std_feed);
m_standardFeedExpDetails->m_ui.m_cbDontUseRawXml->setChecked(std_feed->dontUseRawXmlSaving()); m_standardFeedExpDetails->m_ui.m_cbDontUseRawXml->setChecked(std_feed->dontUseRawXmlSaving());
m_standardFeedExpDetails->m_ui.m_cmbEnableHttp2 m_standardFeedExpDetails->setHttp2Status(std_feed->http2Status());
->setCurrentIndex(m_standardFeedExpDetails->m_ui.m_cmbEnableHttp2->findData(int(std_feed->http2Status())));
} }
} }

View file

@ -237,7 +237,8 @@ void StandardFeedDetails::guessFeed(StandardFeed::SourceType source_type,
const QString& username, const QString& username,
const QString& password, const QString& password,
const QList<QPair<QByteArray, QByteArray>>& headers, const QList<QPair<QByteArray, QByteArray>>& headers,
const QNetworkProxy& custom_proxy) { const QNetworkProxy& custom_proxy,
NetworkFactory::Http2Status http2_status) {
try { try {
auto metadata = StandardFeed::guessFeed(source_type, auto metadata = StandardFeed::guessFeed(source_type,
source, source,
@ -248,7 +249,8 @@ void StandardFeedDetails::guessFeed(StandardFeed::SourceType source_type,
username, username,
password, password,
headers, headers,
custom_proxy); custom_proxy,
http2_status);
// Icon or whole feed was guessed. // Icon or whole feed was guessed.
m_ui.m_btnIcon->setIcon(metadata.first->icon()); m_ui.m_btnIcon->setIcon(metadata.first->icon());

View file

@ -42,7 +42,8 @@ class StandardFeedDetails : public QWidget {
const QString& username, const QString& username,
const QString& password, const QString& password,
const QList<QPair<QByteArray, QByteArray>>& headers = {}, const QList<QPair<QByteArray, QByteArray>>& 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 onTitleChanged(const QString& new_title);
void onDescriptionChanged(const QString& new_description); void onDescriptionChanged(const QString& new_description);

View file

@ -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("Enabled"), QVariant::fromValue(int(NetworkFactory::Http2Status::Enabled)));
m_ui.m_cmbEnableHttp2->addItem(tr("Disabled"), QVariant::fromValue(int(NetworkFactory::Http2Status::Disabled))); 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<NetworkFactory::Http2Status>(m_ui.m_cmbEnableHttp2->currentData().toInt());
}

View file

@ -21,6 +21,9 @@ class StandardFeedExpDetails : public QWidget {
public: public:
explicit StandardFeedExpDetails(QWidget* parent = nullptr); explicit StandardFeedExpDetails(QWidget* parent = nullptr);
void setHttp2Status(NetworkFactory::Http2Status status);
NetworkFactory::Http2Status http2Status() const;
private: private:
Ui::StandardFeedExpDetails m_ui; Ui::StandardFeedExpDetails m_ui;
}; };

View file

@ -307,7 +307,8 @@ QPair<StandardFeed*, NetworkResult> StandardFeed::guessFeed(StandardFeed::Source
const QString& username, const QString& username,
const QString& password, const QString& password,
const QList<QPair<QByteArray, QByteArray>>& http_headers, const QList<QPair<QByteArray, QByteArray>>& 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(); auto timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
QByteArray feed_contents; QByteArray feed_contents;
NetworkResult network_result; NetworkResult network_result;
@ -328,7 +329,8 @@ QPair<StandardFeed*, NetworkResult> StandardFeed::guessFeed(StandardFeed::Source
false, false,
{}, {},
{}, {},
custom_proxy); custom_proxy,
http2_status);
// account->resetHostSpacing(host); // account->resetHostSpacing(host);

View file

@ -92,7 +92,9 @@ class StandardFeed : public Feed {
const QString& password = {}, const QString& password = {},
const QList<QPair<QByteArray, QByteArray>>& http_headers = {}, const QList<QPair<QByteArray, QByteArray>>& http_headers = {},
const QNetworkProxy& custom_proxy = const QNetworkProxy& custom_proxy =
QNetworkProxy::ProxyType::DefaultProxy); QNetworkProxy::ProxyType::DefaultProxy,
NetworkFactory::Http2Status http2_status =
NetworkFactory::Http2Status::DontSet);
// Converts particular feed type to string. // Converts particular feed type to string.
static QString typeToString(Type type); static QString typeToString(Type type);

View file

@ -32,6 +32,9 @@ SystemTrayIcon::SystemTrayIcon(const QString& normal_icon, const QString& plain_
qDebugNN << LOGSEC_GUI << "Creating SystemTrayIcon instance."; qDebugNN << LOGSEC_GUI << "Creating SystemTrayIcon instance.";
m_font.setBold(true); m_font.setBold(true);
m_tmrDoubleFire.setSingleShot(true);
m_tmrDoubleFire.setInterval(100);
// Initialize icon. // Initialize icon.
setNumber(); setNumber();
setContextMenu(parent->trayMenu()); setContextMenu(parent->trayMenu());
@ -46,6 +49,12 @@ SystemTrayIcon::~SystemTrayIcon() {
} }
void SystemTrayIcon::onActivated(QSystemTrayIcon::ActivationReason reason) { void SystemTrayIcon::onActivated(QSystemTrayIcon::ActivationReason reason) {
if (m_tmrDoubleFire.isActive()) {
return;
}
m_tmrDoubleFire.start();
switch (reason) { switch (reason) {
case SystemTrayIcon::ActivationReason::Trigger: case SystemTrayIcon::ActivationReason::Trigger:
case SystemTrayIcon::ActivationReason::DoubleClick: case SystemTrayIcon::ActivationReason::DoubleClick:

View file

@ -10,6 +10,7 @@
#include <QMenu> #include <QMenu>
#include <QPixmap> #include <QPixmap>
#include <QSystemTrayIcon> #include <QSystemTrayIcon>
#include <QTimer>
class FormMain; class FormMain;
class QEvent; class QEvent;
@ -66,6 +67,7 @@ class SystemTrayIcon : public QSystemTrayIcon {
QIcon m_normalIcon; QIcon m_normalIcon;
QPixmap m_plainPixmap; QPixmap m_plainPixmap;
QFont m_font = QFont(); QFont m_font = QFont();
QTimer m_tmrDoubleFire;
QMetaObject::Connection m_connection; QMetaObject::Connection m_connection;
}; };