# HG changeset patch # User Chris Cannam # Date 1363013329 0 # Node ID 3c236d31cccd3eb2d932b2a02d0143b2a52597d5 # Parent 8a603a0840c8cb6b756fa598a215a74c336682ac Get this one building with Qt5 diff -r 8a603a0840c8 -r 3c236d31cccd framework/VersionTester.cpp --- a/framework/VersionTester.cpp Fri Nov 16 13:09:58 2012 +0000 +++ b/framework/VersionTester.cpp Mon Mar 11 14:48:49 2013 +0000 @@ -23,24 +23,30 @@ #include -#include +#include + +static QNetworkAccessManager nm; VersionTester::VersionTester(QString hostname, QString versionFilePath, QString myVersion) : - m_httpFailed(false), - m_myVersion(myVersion) + m_myVersion(myVersion), + m_reply(0), + m_httpFailed(false) { - QHttp *http = new QHttp(); - connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), - this, SLOT(httpResponseHeaderReceived(const QHttpResponseHeader &))); - connect(http, SIGNAL(done(bool)), - this, SLOT(httpDone(bool))); - http->setHost(hostname); - http->get(versionFilePath); + QUrl url(QString("http://%1/%2").arg(hostname).arg(versionFilePath)); + std::cerr << "VersionTester: URL is " << url << std::endl; + m_reply = nm.get(QNetworkRequest(url)); + connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + this, SLOT(error(QNetworkReply::NetworkError))); + connect(m_reply, SIGNAL(finished()), this, SLOT(finished())); } VersionTester::~VersionTester() { + if (m_reply) { + m_reply->abort(); + m_reply->deleteLater(); + } } bool @@ -69,20 +75,25 @@ } void -VersionTester::httpResponseHeaderReceived(const QHttpResponseHeader &h) +VersionTester::error(QNetworkReply::NetworkError) { - if (h.statusCode() / 100 != 2) m_httpFailed = true; + std::cerr << "VersionTester: error: " << m_reply->errorString() << std::endl; + m_httpFailed = true; } void -VersionTester::httpDone(bool error) +VersionTester::finished() { - QHttp *http = const_cast(dynamic_cast(sender())); - if (!http) return; - http->deleteLater(); - if (error || m_httpFailed) return; + m_reply->deleteLater(); + if (m_httpFailed) return; - QByteArray responseData = http->readAll(); + int status = m_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + if (status / 100 != 2) { + std::cerr << "VersionTester: error: http status = " << status << std::endl; + return; + } + + QByteArray responseData = m_reply->readAll(); QString str = QString::fromUtf8(responseData.data()); QStringList lines = str.split('\n', QString::SkipEmptyParts); if (lines.empty()) return; diff -r 8a603a0840c8 -r 3c236d31cccd framework/VersionTester.h --- a/framework/VersionTester.h Fri Nov 16 13:09:58 2012 +0000 +++ b/framework/VersionTester.h Mon Mar 11 14:48:49 2013 +0000 @@ -24,8 +24,7 @@ #include #include #include - -class QHttpResponseHeader; +#include class VersionTester : public QObject { @@ -41,12 +40,13 @@ void newerVersionAvailable(QString); protected slots: - void httpResponseHeaderReceived(const QHttpResponseHeader &); - void httpDone(bool); + void finished(); + void error(QNetworkReply::NetworkError); private: + QString m_myVersion; + QNetworkReply *m_reply; bool m_httpFailed; - QString m_myVersion; }; #endif diff -r 8a603a0840c8 -r 3c236d31cccd svapp.pro --- a/svapp.pro Fri Nov 16 13:09:58 2012 +0000 +++ b/svapp.pro Mon Mar 11 14:48:49 2013 +0000 @@ -4,7 +4,7 @@ include(config.pri) CONFIG += staticlib qt thread warn_on stl rtti exceptions -QT += network xml gui +QT += network xml gui widgets TARGET = svapp