Fix network manager destructor exception.

This commit is contained in:
Martin Rotter 2020-05-26 09:58:07 +02:00
parent d3dae650db
commit 45e163ecba
8 changed files with 18 additions and 16 deletions

View File

@ -228,7 +228,8 @@ void SettingsBrowserMail::saveSettings() {
qApp->web()->updateProxy();
// Reload settings for all network access managers.
SilentNetworkAccessManager::instance()->loadSettings();
qApp->downloadManager()->networkManager()->loadSettings();
onEndSaveSettings();
}

View File

@ -144,6 +144,8 @@ void WebViewer::loadMessages(const QList<Message>& messages, RootItem* root) {
setEnabled(false);
displayMessage();
setEnabled(previously_enabled);
page()->runJavaScript(QSL("window.scrollTo(0, 0);"));
}
void WebViewer::clear() {

View File

@ -69,7 +69,7 @@ Application::Application(const QString& id, int& argc, char** argv)
connect(this, &Application::saveStateRequest, this, &Application::onSaveState);
#if defined(USE_WEBENGINE)
QWebEngineUrlScheme url_scheme(APP_LOW_NAME);
QWebEngineUrlScheme url_scheme(QByteArray(APP_LOW_NAME));
url_scheme.setDefaultPort(QWebEngineUrlScheme::SpecialPort::PortUnspecified);
url_scheme.setSyntax(QWebEngineUrlScheme::Syntax::Host);

View File

@ -421,7 +421,7 @@ void DownloadItem::updateInfoAndUrlLabel() {
DownloadManager::DownloadManager(QWidget* parent) : TabContent(parent), m_ui(new Ui::DownloadManager),
m_autoSaver(new AutoSaver(this)), m_model(new DownloadModel(this)),
m_networkManager(SilentNetworkAccessManager::instance()), m_iconProvider(nullptr), m_removePolicy(Never) {
m_networkManager(new SilentNetworkAccessManager(this)), m_iconProvider(nullptr), m_removePolicy(Never) {
m_ui->setupUi(this);
m_ui->m_viewDownloads->setShowGrid(false);
m_ui->m_viewDownloads->verticalHeader()->hide();
@ -524,7 +524,7 @@ void DownloadManager::addItem(DownloadItem* item) {
updateRow(item);
}
QNetworkAccessManager* DownloadManager::networkManager() const {
SilentNetworkAccessManager* DownloadManager::networkManager() const {
return m_networkManager;
}
@ -785,7 +785,6 @@ Qt::ItemFlags DownloadModel::flags(const QModelIndex& index) const {
QMimeData* DownloadModel::mimeData(const QModelIndexList& indexes) const {
auto* mimeData = new QMimeData();
QList<QUrl> urls;
foreach (const QModelIndex& index, indexes) {

View File

@ -14,8 +14,11 @@
#include <QNetworkReply>
class AutoSaver;
class DownloadModel;
class QFileIconProvider;
class QMimeData;
class DownloadItem : public QWidget {
@ -78,9 +81,12 @@ class DownloadItem : public QWidget {
};
#if defined(USE_WEBENGINE)
class WebBrowser;
#endif
class SilentNetworkAccessManager;
class DownloadManager : public TabContent {
Q_OBJECT
Q_PROPERTY(RemovePolicy removePolicy READ removePolicy WRITE setRemovePolicy NOTIFY removePolicyChanged)
@ -105,7 +111,7 @@ class DownloadManager : public TabContent {
}
#endif
QNetworkAccessManager* networkManager() const;
SilentNetworkAccessManager* networkManager() const;
int totalDownloads() const;
int activeDownloads() const;
@ -146,7 +152,7 @@ class DownloadManager : public TabContent {
QScopedPointer<Ui::DownloadManager> m_ui;
AutoSaver* m_autoSaver;
DownloadModel* m_model;
QNetworkAccessManager* m_networkManager;
SilentNetworkAccessManager* m_networkManager;
QScopedPointer<QFileIconProvider> m_iconProvider;
QList<DownloadItem*> m_downloads;

View File

@ -7,8 +7,6 @@
#include <QAuthenticator>
#include <QNetworkReply>
Q_GLOBAL_STATIC(SilentNetworkAccessManager, qz_silent_acmanager)
SilentNetworkAccessManager::SilentNetworkAccessManager(QObject* parent)
: BaseNetworkAccessManager(parent) {
connect(this, &SilentNetworkAccessManager::authenticationRequired,
@ -19,10 +17,6 @@ SilentNetworkAccessManager::~SilentNetworkAccessManager() {
qDebug("Destroying SilentNetworkAccessManager instance.");
}
SilentNetworkAccessManager* SilentNetworkAccessManager::instance() {
return qz_silent_acmanager();
}
void SilentNetworkAccessManager::onAuthenticationRequired(QNetworkReply* reply, QAuthenticator* authenticator) {
if (reply->property("protected").toBool()) {
// This feed contains authentication information, it is good.

View File

@ -18,9 +18,6 @@ class SilentNetworkAccessManager : public BaseNetworkAccessManager {
explicit SilentNetworkAccessManager(QObject* parent = nullptr);
virtual ~SilentNetworkAccessManager();
// Returns pointer to global silent network manager
static SilentNetworkAccessManager* instance();
public slots:
// This cannot do any GUI stuff.

View File

@ -60,6 +60,9 @@ Message RssParser::extractMessage(const QDomElement& msg_element, QDateTime curr
new_message.m_enclosures.append(Enclosure(elem_enclosure, elem_enclosure_type));
qDebug("Found enclosure '%s' for the message.", qPrintable(elem_enclosure));
}
else {
new_message.m_enclosures.append(mrssGetEnclosures(msg_element));
}
// Deal with link and author.
new_message.m_url = msg_element.namedItem(QSL("link")).toElement().text();