Skip to content
Snippets Groups Projects
Commit ae6c852c authored by akiraohgaki's avatar akiraohgaki
Browse files

Add core/network class

parent c60ef656
No related branches found
No related tags found
No related merge requests found
#include <QEventLoop>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include "network.h"
namespace Core {
Network::Network(const bool &async, QObject *parent) :
QObject(parent), _async(async)
{
_manager = new QNetworkAccessManager();
connect(_manager, &QNetworkAccessManager::finished,
this, &Network::_finished);
if (!_async) {
_eventLoop = new QEventLoop();
connect(_manager, &QNetworkAccessManager::finished,
_eventLoop, &QEventLoop::quit);
}
}
Network::~Network()
{
_manager->deleteLater();
if (!_async) {
delete _eventLoop;
}
}
QNetworkReply *Network::head(const QUrl &uri)
{
QNetworkReply *reply = _manager->head(QNetworkRequest(uri));
if (!_async) {
_eventLoop->exec();
}
return reply;
}
QNetworkReply *Network::get(const QUrl &uri)
{
QNetworkReply *reply = _manager->get(QNetworkRequest(uri));
connect(reply, &QNetworkReply::downloadProgress,
this, &Network::_downloadProgress);
if (!_async) {
_eventLoop->exec();
}
return reply;
}
/**
* Private slots
*/
void Network::_finished(QNetworkReply *reply)
{
emit finished(reply);
}
void Network::_downloadProgress(const qint64 &received, const qint64 &total)
{
emit downloadProgress(received, total);
}
} // namespace Core
#ifndef CORE_NETWORK_H
#define CORE_NETWORK_H
#include <QObject>
class QEventLoop;
class QNetworkAccessManager;
class QNetworkReply;
namespace Core {
class Network : public QObject
{
Q_OBJECT
private:
bool _async;
QNetworkAccessManager *_manager;
QEventLoop *_eventLoop;
public:
explicit Network(const bool &async = true, QObject *parent = 0);
~Network();
QNetworkReply *head(const QUrl &uri);
QNetworkReply *get(const QUrl &uri);
private slots:
void _finished(QNetworkReply *reply);
void _downloadProgress(const qint64 &received, const qint64 &total);
signals:
void finished(QNetworkReply *reply);
void downloadProgress(const qint64 &received, const qint64 &total);
};
} // namespace Core
#endif // CORE_NETWORK_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment