Hmmm.
This commit is contained in:
parent
b66a6d4143
commit
9e75252f29
8 changed files with 52 additions and 23 deletions
|
@ -4,11 +4,15 @@
|
||||||
#include "core/settings.h"
|
#include "core/settings.h"
|
||||||
|
|
||||||
#include <QNetworkProxy>
|
#include <QNetworkProxy>
|
||||||
|
#include <QNetworkReply>
|
||||||
#include <QNetworkRequest>
|
#include <QNetworkRequest>
|
||||||
|
|
||||||
|
|
||||||
BaseNetworkAccessManager::BaseNetworkAccessManager(QObject *parent)
|
BaseNetworkAccessManager::BaseNetworkAccessManager(QObject *parent)
|
||||||
: QNetworkAccessManager(parent) {
|
: QNetworkAccessManager(parent) {
|
||||||
|
connect(this, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
|
||||||
|
this, SLOT(onSslErrors(QNetworkReply*,QList<QSslError>)));
|
||||||
|
|
||||||
loadSettings();
|
loadSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,6 +52,16 @@ void BaseNetworkAccessManager::loadSettings() {
|
||||||
qDebug("Settings of BaseNetworkAccessManager loaded.");
|
qDebug("Settings of BaseNetworkAccessManager loaded.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BaseNetworkAccessManager::onSslErrors(QNetworkReply *reply,
|
||||||
|
const QList<QSslError> &error) {
|
||||||
|
qDebug("SSL errors for '%s': '%s' (code %d).",
|
||||||
|
qPrintable(reply->url().toString()),
|
||||||
|
qPrintable(reply->errorString()),
|
||||||
|
(int) reply->error());
|
||||||
|
|
||||||
|
reply->ignoreSslErrors(error);
|
||||||
|
}
|
||||||
|
|
||||||
QNetworkReply *BaseNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op,
|
QNetworkReply *BaseNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op,
|
||||||
const QNetworkRequest &request,
|
const QNetworkRequest &request,
|
||||||
QIODevice *outgoingData) {
|
QIODevice *outgoingData) {
|
||||||
|
|
|
@ -18,6 +18,10 @@ class BaseNetworkAccessManager : public QNetworkAccessManager {
|
||||||
// NOTE: This sets up proxy settings.
|
// NOTE: This sets up proxy settings.
|
||||||
virtual void loadSettings();
|
virtual void loadSettings();
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
void onSslErrors(QNetworkReply *reply,
|
||||||
|
const QList<QSslError> &error);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Creates custom request.
|
// Creates custom request.
|
||||||
QNetworkReply *createRequest(Operation op,
|
QNetworkReply *createRequest(Operation op,
|
||||||
|
|
|
@ -95,7 +95,22 @@ QNetworkReply::NetworkError NetworkFactory::downloadFeedFile(const QString &url,
|
||||||
// process of downloading of a file easier to understand.
|
// process of downloading of a file easier to understand.
|
||||||
|
|
||||||
// Make necessary variables.
|
// Make necessary variables.
|
||||||
|
|
||||||
|
// TODO: Tady bych chtěl použit singleton
|
||||||
|
// jenže když je toto v jinym vlakně (viz feedmessageviewer movetothread)
|
||||||
|
// tak se manager ze singletonu vytvoří s parentem qApp kterej je z jinyho
|
||||||
|
// vlakna a dojde k warningu (TO NECHCI)
|
||||||
|
// reseni: but necham silent bez parenta a pridam metodu na odstraneni
|
||||||
|
// nebo k metode instance() pridam parametr kde se specifikuje
|
||||||
|
// parent kterej se pouzije pro vytvoreni managera a to by mel
|
||||||
|
// byt parent z tohodle worker vlakna nebo jeste je moznost
|
||||||
|
// zakomentovat movetothread a vykonavat updaty v hlavnim vlakne,
|
||||||
|
// ale to vyusti v drobnej lag a NEBO jeste je moznost
|
||||||
|
// zavolat SilentNetworkAccessManager::instance() před vytvořením hlavního
|
||||||
|
// okna aplikace v mainu tak aby se nastavil byl manager i parent
|
||||||
|
// na stejnem vlaknu
|
||||||
SilentNetworkAccessManager manager;
|
SilentNetworkAccessManager manager;
|
||||||
|
//SilentNetworkAccessManager *manager = SilentNetworkAccessManager::instance();
|
||||||
QEventLoop loop;
|
QEventLoop loop;
|
||||||
QTimer timer;
|
QTimer timer;
|
||||||
QNetworkRequest request;
|
QNetworkRequest request;
|
||||||
|
|
|
@ -4,12 +4,13 @@
|
||||||
|
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
#include <QAuthenticator>
|
#include <QAuthenticator>
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
|
||||||
|
QPointer<SilentNetworkAccessManager> SilentNetworkAccessManager::s_instance;
|
||||||
|
|
||||||
SilentNetworkAccessManager::SilentNetworkAccessManager(QObject *parent)
|
SilentNetworkAccessManager::SilentNetworkAccessManager(QObject *parent)
|
||||||
: BaseNetworkAccessManager(parent) {
|
: BaseNetworkAccessManager(parent) {
|
||||||
connect(this, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
|
|
||||||
this, SLOT(onSslErrors(QNetworkReply*,QList<QSslError>)));
|
|
||||||
connect(this, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
|
connect(this, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
|
||||||
this, SLOT(onAuthenticationRequired(QNetworkReply*,QAuthenticator*)));
|
this, SLOT(onAuthenticationRequired(QNetworkReply*,QAuthenticator*)));
|
||||||
}
|
}
|
||||||
|
@ -18,14 +19,12 @@ SilentNetworkAccessManager::~SilentNetworkAccessManager() {
|
||||||
qDebug("Destroying SilentNetworkAccessManages instance.");
|
qDebug("Destroying SilentNetworkAccessManages instance.");
|
||||||
}
|
}
|
||||||
|
|
||||||
void SilentNetworkAccessManager::onSslErrors(QNetworkReply *reply,
|
SilentNetworkAccessManager *SilentNetworkAccessManager::instance() {
|
||||||
const QList<QSslError> &error) {
|
if (s_instance.isNull()) {
|
||||||
qDebug("SSL errors for '%s': '%s' (code %d).",
|
s_instance = new SilentNetworkAccessManager(qApp);
|
||||||
qPrintable(reply->url().toString()),
|
}
|
||||||
qPrintable(reply->errorString()),
|
|
||||||
(int) reply->error());
|
|
||||||
|
|
||||||
reply->ignoreSslErrors(error);
|
return s_instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SilentNetworkAccessManager::onAuthenticationRequired(QNetworkReply *reply,
|
void SilentNetworkAccessManager::onAuthenticationRequired(QNetworkReply *reply,
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
#include "core/basenetworkaccessmanager.h"
|
#include "core/basenetworkaccessmanager.h"
|
||||||
|
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
|
|
||||||
// Network manager used for more communication for feeds.
|
// Network manager used for more communication for feeds.
|
||||||
class SilentNetworkAccessManager : public BaseNetworkAccessManager {
|
class SilentNetworkAccessManager : public BaseNetworkAccessManager {
|
||||||
|
@ -13,9 +15,15 @@ class SilentNetworkAccessManager : public BaseNetworkAccessManager {
|
||||||
explicit SilentNetworkAccessManager(QObject *parent = 0);
|
explicit SilentNetworkAccessManager(QObject *parent = 0);
|
||||||
virtual ~SilentNetworkAccessManager();
|
virtual ~SilentNetworkAccessManager();
|
||||||
|
|
||||||
|
// Returns pointer to global network access manager
|
||||||
|
// used by ALL feed downloaders.
|
||||||
|
static SilentNetworkAccessManager *instance();
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void onSslErrors(QNetworkReply *reply, const QList<QSslError> &error);
|
|
||||||
void onAuthenticationRequired(QNetworkReply * reply, QAuthenticator *authenticator);
|
void onAuthenticationRequired(QNetworkReply * reply, QAuthenticator *authenticator);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static QPointer<SilentNetworkAccessManager> s_instance;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SILENTNETWORKACCESSMANAGER_H
|
#endif // SILENTNETWORKACCESSMANAGER_H
|
||||||
|
|
|
@ -8,8 +8,6 @@ QPointer<WebBrowserNetworkAccessManager> WebBrowserNetworkAccessManager::s_insta
|
||||||
|
|
||||||
WebBrowserNetworkAccessManager::WebBrowserNetworkAccessManager(QObject *parent)
|
WebBrowserNetworkAccessManager::WebBrowserNetworkAccessManager(QObject *parent)
|
||||||
: BaseNetworkAccessManager(parent) {
|
: BaseNetworkAccessManager(parent) {
|
||||||
connect(this, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
|
|
||||||
this, SLOT(onSslErrors(QNetworkReply*,QList<QSslError>)));
|
|
||||||
connect(this, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
|
connect(this, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
|
||||||
this, SLOT(onAuthenticationRequired(QNetworkReply*,QAuthenticator*)));
|
this, SLOT(onAuthenticationRequired(QNetworkReply*,QAuthenticator*)));
|
||||||
}
|
}
|
||||||
|
@ -18,16 +16,6 @@ WebBrowserNetworkAccessManager::~WebBrowserNetworkAccessManager() {
|
||||||
qDebug("Destroying WebBrowserNetworkAccessManager instance.");
|
qDebug("Destroying WebBrowserNetworkAccessManager instance.");
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebBrowserNetworkAccessManager::onSslErrors(QNetworkReply *reply,
|
|
||||||
const QList<QSslError> &error) {
|
|
||||||
qDebug("SSL errors for '%s': '%s' (code %d).",
|
|
||||||
qPrintable(reply->url().toString()),
|
|
||||||
qPrintable(reply->errorString()),
|
|
||||||
(int) reply->error());
|
|
||||||
|
|
||||||
reply->ignoreSslErrors(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WebBrowserNetworkAccessManager::onAuthenticationRequired(QNetworkReply *reply,
|
void WebBrowserNetworkAccessManager::onAuthenticationRequired(QNetworkReply *reply,
|
||||||
QAuthenticator *authenticator) {
|
QAuthenticator *authenticator) {
|
||||||
Q_UNUSED(authenticator);
|
Q_UNUSED(authenticator);
|
||||||
|
|
|
@ -22,7 +22,6 @@ class WebBrowserNetworkAccessManager : public BaseNetworkAccessManager {
|
||||||
static WebBrowserNetworkAccessManager *instance();
|
static WebBrowserNetworkAccessManager *instance();
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void onSslErrors(QNetworkReply *reply, const QList<QSslError> &error);
|
|
||||||
void onAuthenticationRequired(QNetworkReply * reply, QAuthenticator *authenticator);
|
void onAuthenticationRequired(QNetworkReply * reply, QAuthenticator *authenticator);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -194,6 +194,8 @@ void FormMain::onAboutToQuit() {
|
||||||
// BEFORE even trying to quit the application.
|
// BEFORE even trying to quit the application.
|
||||||
bool locked_safely = SystemFactory::instance()->applicationCloseLock()->tryLock(CLOSE_LOCK_TIMEOUT);
|
bool locked_safely = SystemFactory::instance()->applicationCloseLock()->tryLock(CLOSE_LOCK_TIMEOUT);
|
||||||
|
|
||||||
|
qApp->processEvents();
|
||||||
|
|
||||||
qDebug("Cleaning up resources and saving application state.");
|
qDebug("Cleaning up resources and saving application state.");
|
||||||
m_ui->m_tabWidget->feedMessageViewer()->quit();
|
m_ui->m_tabWidget->feedMessageViewer()->quit();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue