mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
0dd40b7a51
The access manager is only one, while we can make requests from different parts of the application, so relying on the manager finished() signal to see if something was done or not was a not very good move. The QNetworkReply is created when a get() is invocked on the AccessManager and that's unique. connect it's finished() signal instead. bonus: code cleanup. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
66 lines
2 KiB
C++
66 lines
2 KiB
C++
#include "updatemanager.h"
|
|
#include <QtNetwork>
|
|
#include <QMessageBox>
|
|
#include "subsurfacewebservices.h"
|
|
#include "ssrf-version.h"
|
|
|
|
UpdateManager::UpdateManager(QObject *parent) : QObject(parent)
|
|
{
|
|
}
|
|
|
|
void UpdateManager::checkForUpdates()
|
|
{
|
|
QString os;
|
|
|
|
#if defined(Q_OS_WIN)
|
|
os = "win";
|
|
#elif defined(Q_OS_MAC)
|
|
os = "osx";
|
|
#elif defined(Q_OS_LINUX)
|
|
os = "linux";
|
|
#else
|
|
os = "unknown";
|
|
#endif
|
|
|
|
QString version = VERSION_STRING;
|
|
QString url = QString("http://subsurface.hohndel.org/updatecheck.html?os=%1&ver=%2").arg(os, version);
|
|
connect(SubsurfaceWebServices::manager()->get(QNetworkRequest(QUrl(url))), SIGNAL(finished()), this, SLOT(requestReceived()));
|
|
}
|
|
|
|
void UpdateManager::requestReceived()
|
|
{
|
|
QMessageBox msgbox;
|
|
QString msgTitle = tr("Check for updates.");
|
|
QString msgText = "<h3>" + tr("Subsurface was unable to check for updates.") + "</h3>";
|
|
|
|
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
|
|
if (reply->error() != QNetworkReply::NoError) {
|
|
//Network Error
|
|
msgText = msgText + "<br/><b>" + tr("The following error occurred:") + "</b><br/>" + reply->errorString()
|
|
+ "<br/><br/><b>" + tr("Please check your internet connection.") + "</b>";
|
|
} else {
|
|
//No network error
|
|
QString response(reply->readAll());
|
|
QString responseBody = response.split("\"").at(1);
|
|
|
|
msgbox.setIcon(QMessageBox::Information);
|
|
|
|
if (responseBody == "OK") {
|
|
msgText = tr("You are using the latest version of subsurface.");
|
|
} else if (responseBody.startsWith("http")) {
|
|
msgText = tr("A new version of subsurface is available.<br/>Click on:<br/><a href=\"%1\">%1</a><br/> to download it.")
|
|
.arg(responseBody);
|
|
} else if (responseBody.startsWith("Latest version")) {
|
|
msgText = tr("<b>A new version of subsurface is available.</b><br/><br/>%1")
|
|
.arg(responseBody);
|
|
} else {
|
|
msgText = tr("There was an error while trying to check for updates.<br/><br/>%1").arg(responseBody);
|
|
msgbox.setIcon(QMessageBox::Warning);
|
|
}
|
|
}
|
|
|
|
msgbox.setWindowTitle(msgTitle);
|
|
msgbox.setText(msgText);
|
|
msgbox.setTextFormat(Qt::RichText);
|
|
msgbox.exec();
|
|
}
|