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 <QNetworkProxy>
|
||||
#include <QNetworkReply>
|
||||
#include <QNetworkRequest>
|
||||
|
||||
|
||||
BaseNetworkAccessManager::BaseNetworkAccessManager(QObject *parent)
|
||||
: QNetworkAccessManager(parent) {
|
||||
connect(this, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
|
||||
this, SLOT(onSslErrors(QNetworkReply*,QList<QSslError>)));
|
||||
|
||||
loadSettings();
|
||||
}
|
||||
|
||||
|
@ -48,6 +52,16 @@ void BaseNetworkAccessManager::loadSettings() {
|
|||
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,
|
||||
const QNetworkRequest &request,
|
||||
QIODevice *outgoingData) {
|
||||
|
|
|
@ -18,6 +18,10 @@ class BaseNetworkAccessManager : public QNetworkAccessManager {
|
|||
// NOTE: This sets up proxy settings.
|
||||
virtual void loadSettings();
|
||||
|
||||
protected slots:
|
||||
void onSslErrors(QNetworkReply *reply,
|
||||
const QList<QSslError> &error);
|
||||
|
||||
protected:
|
||||
// Creates custom request.
|
||||
QNetworkReply *createRequest(Operation op,
|
||||
|
|
|
@ -95,7 +95,22 @@ QNetworkReply::NetworkError NetworkFactory::downloadFeedFile(const QString &url,
|
|||
// process of downloading of a file easier to understand.
|
||||
|
||||
// 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::instance();
|
||||
QEventLoop loop;
|
||||
QTimer timer;
|
||||
QNetworkRequest request;
|
||||
|
|
|
@ -4,12 +4,13 @@
|
|||
|
||||
#include <QNetworkReply>
|
||||
#include <QAuthenticator>
|
||||
#include <QApplication>
|
||||
|
||||
|
||||
QPointer<SilentNetworkAccessManager> SilentNetworkAccessManager::s_instance;
|
||||
|
||||
SilentNetworkAccessManager::SilentNetworkAccessManager(QObject *parent)
|
||||
: BaseNetworkAccessManager(parent) {
|
||||
connect(this, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
|
||||
this, SLOT(onSslErrors(QNetworkReply*,QList<QSslError>)));
|
||||
connect(this, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
|
||||
this, SLOT(onAuthenticationRequired(QNetworkReply*,QAuthenticator*)));
|
||||
}
|
||||
|
@ -18,14 +19,12 @@ SilentNetworkAccessManager::~SilentNetworkAccessManager() {
|
|||
qDebug("Destroying SilentNetworkAccessManages instance.");
|
||||
}
|
||||
|
||||
void SilentNetworkAccessManager::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());
|
||||
SilentNetworkAccessManager *SilentNetworkAccessManager::instance() {
|
||||
if (s_instance.isNull()) {
|
||||
s_instance = new SilentNetworkAccessManager(qApp);
|
||||
}
|
||||
|
||||
reply->ignoreSslErrors(error);
|
||||
return s_instance;
|
||||
}
|
||||
|
||||
void SilentNetworkAccessManager::onAuthenticationRequired(QNetworkReply *reply,
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
#include "core/basenetworkaccessmanager.h"
|
||||
|
||||
#include <QPointer>
|
||||
|
||||
|
||||
// Network manager used for more communication for feeds.
|
||||
class SilentNetworkAccessManager : public BaseNetworkAccessManager {
|
||||
|
@ -13,9 +15,15 @@ class SilentNetworkAccessManager : public BaseNetworkAccessManager {
|
|||
explicit SilentNetworkAccessManager(QObject *parent = 0);
|
||||
virtual ~SilentNetworkAccessManager();
|
||||
|
||||
// Returns pointer to global network access manager
|
||||
// used by ALL feed downloaders.
|
||||
static SilentNetworkAccessManager *instance();
|
||||
|
||||
protected slots:
|
||||
void onSslErrors(QNetworkReply *reply, const QList<QSslError> &error);
|
||||
void onAuthenticationRequired(QNetworkReply * reply, QAuthenticator *authenticator);
|
||||
|
||||
private:
|
||||
static QPointer<SilentNetworkAccessManager> s_instance;
|
||||
};
|
||||
|
||||
#endif // SILENTNETWORKACCESSMANAGER_H
|
||||
|
|
|
@ -8,8 +8,6 @@ QPointer<WebBrowserNetworkAccessManager> WebBrowserNetworkAccessManager::s_insta
|
|||
|
||||
WebBrowserNetworkAccessManager::WebBrowserNetworkAccessManager(QObject *parent)
|
||||
: BaseNetworkAccessManager(parent) {
|
||||
connect(this, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
|
||||
this, SLOT(onSslErrors(QNetworkReply*,QList<QSslError>)));
|
||||
connect(this, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
|
||||
this, SLOT(onAuthenticationRequired(QNetworkReply*,QAuthenticator*)));
|
||||
}
|
||||
|
@ -18,16 +16,6 @@ WebBrowserNetworkAccessManager::~WebBrowserNetworkAccessManager() {
|
|||
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,
|
||||
QAuthenticator *authenticator) {
|
||||
Q_UNUSED(authenticator);
|
||||
|
|
|
@ -22,7 +22,6 @@ class WebBrowserNetworkAccessManager : public BaseNetworkAccessManager {
|
|||
static WebBrowserNetworkAccessManager *instance();
|
||||
|
||||
protected slots:
|
||||
void onSslErrors(QNetworkReply *reply, const QList<QSslError> &error);
|
||||
void onAuthenticationRequired(QNetworkReply * reply, QAuthenticator *authenticator);
|
||||
|
||||
private:
|
||||
|
|
|
@ -194,6 +194,8 @@ void FormMain::onAboutToQuit() {
|
|||
// BEFORE even trying to quit the application.
|
||||
bool locked_safely = SystemFactory::instance()->applicationCloseLock()->tryLock(CLOSE_LOCK_TIMEOUT);
|
||||
|
||||
qApp->processEvents();
|
||||
|
||||
qDebug("Cleaning up resources and saving application state.");
|
||||
m_ui->m_tabWidget->feedMessageViewer()->quit();
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue