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->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<NetworkFactory::Http2Status>(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());
}
}

View file

@ -237,7 +237,8 @@ void StandardFeedDetails::guessFeed(StandardFeed::SourceType source_type,
const QString& username,
const QString& password,
const QList<QPair<QByteArray, QByteArray>>& 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());

View file

@ -42,7 +42,8 @@ class StandardFeedDetails : public QWidget {
const QString& username,
const QString& password,
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 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("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:
explicit StandardFeedExpDetails(QWidget* parent = nullptr);
void setHttp2Status(NetworkFactory::Http2Status status);
NetworkFactory::Http2Status http2Status() const;
private:
Ui::StandardFeedExpDetails m_ui;
};

View file

@ -307,7 +307,8 @@ QPair<StandardFeed*, NetworkResult> StandardFeed::guessFeed(StandardFeed::Source
const QString& username,
const QString& password,
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();
QByteArray feed_contents;
NetworkResult network_result;
@ -328,7 +329,8 @@ QPair<StandardFeed*, NetworkResult> StandardFeed::guessFeed(StandardFeed::Source
false,
{},
{},
custom_proxy);
custom_proxy,
http2_status);
// account->resetHostSpacing(host);

View file

@ -92,7 +92,9 @@ class StandardFeed : public Feed {
const QString& password = {},
const QList<QPair<QByteArray, QByteArray>>& 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);

View file

@ -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:

View file

@ -10,6 +10,7 @@
#include <QMenu>
#include <QPixmap>
#include <QSystemTrayIcon>
#include <QTimer>
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;
};