Skip to content

Commit

Permalink
make desktop network access manager a singleton
Browse files Browse the repository at this point in the history
  • Loading branch information
jjallaire committed Nov 17, 2011
1 parent 2b7ab8d commit f14f230
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 9 deletions.
21 changes: 18 additions & 3 deletions src/cpp/desktop/DesktopNetworkAccessManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,21 @@

using namespace core;

NetworkAccessManager::NetworkAccessManager(QString secret, QObject *parent) :
QNetworkAccessManager(parent), secret_(secret)
extern QString sharedSecret;

namespace desktop {

NetworkAccessManager* NetworkAccessManager::instance_ = NULL;

NetworkAccessManager* NetworkAccessManager::instance()
{
if (instance_ == NULL)
instance_ = new NetworkAccessManager(sharedSecret);
return instance_;
}

NetworkAccessManager::NetworkAccessManager(QString secret) :
QNetworkAccessManager(), secret_(secret)
{
setProxy(QNetworkProxy::NoProxy);

Expand All @@ -32,7 +45,7 @@ NetworkAccessManager::NetworkAccessManager(QString secret, QObject *parent) :
Error error = browserCachePath.ensureDirectory();
if (!error)
{
QNetworkDiskCache* pCache = new QNetworkDiskCache(parent);
QNetworkDiskCache* pCache = new QNetworkDiskCache();
QString browserCacheDir = QString::fromUtf8(
browserCachePath.absolutePath().c_str());
pCache->setCacheDirectory(browserCacheDir);
Expand All @@ -54,3 +67,5 @@ QNetworkReply* NetworkAccessManager::createRequest(
secret_.toAscii());
return this->QNetworkAccessManager::createRequest(op, req2, outgoingData);
}

} // namespace desktop
14 changes: 11 additions & 3 deletions src/cpp/desktop/DesktopNetworkAccessManager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,17 @@
#include <QObject>
#include <QtNetwork>


namespace desktop {

class NetworkAccessManager : public QNetworkAccessManager
{
Q_OBJECT
public:
explicit NetworkAccessManager(QString secret,
QObject *parent = 0);
static NetworkAccessManager* instance();

Q_OBJECT
private:
explicit NetworkAccessManager(QString secret);

protected:
QNetworkReply* createRequest(Operation op,
Expand All @@ -31,6 +36,9 @@ class NetworkAccessManager : public QNetworkAccessManager

private:
QString secret_;
static NetworkAccessManager* instance_;
};

} // namespace desktop

#endif // DESKTOP_NETWORK_ACCESS_MANAGER_HPP
4 changes: 1 addition & 3 deletions src/cpp/desktop/DesktopWebPage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
#include <QtDebug>
#include "DesktopNetworkAccessManager.hpp"

extern QString sharedSecret;

namespace desktop {

WebPage::WebPage(QUrl baseUrl, QWidget *parent) :
Expand All @@ -27,7 +25,7 @@ WebPage::WebPage(QUrl baseUrl, QWidget *parent) :
{
//settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
setNetworkAccessManager(new NetworkAccessManager(sharedSecret, parent));
setNetworkAccessManager(NetworkAccessManager::instance());
}

void WebPage::setBaseUrl(const QUrl& baseUrl)
Expand Down

0 comments on commit f14f230

Please sign in to comment.