subsurface/qt-ui/updatemanager.cpp
Dirk Hohndel d818dc1a84 Remove HTML from translated strings
In some strings that won't be possible as the translation needs to be
aware of line breaks, etc. But for these strings it seems like the right
thing to do.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-09 10:34:51 -07:00

68 lines
2 KiB
C++

#include "updatemanager.h"
#include <QtNetwork>
#include <QMessageBox>
#include "subsurfacewebservices.h"
#include "ssrf-version.h"
UpdateManager::UpdateManager(QObject *parent) : QObject(parent)
{
manager = SubsurfaceWebServices::manager();
connect(manager, SIGNAL(finished(QNetworkReply *)), SLOT(requestReceived(QNetworkReply *)));
}
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);
manager->get(QNetworkRequest(QUrl(url)));
}
void UpdateManager::requestReceived(QNetworkReply *reply)
{
QMessageBox msgbox;
QString msgTitle = tr("Check for updates.");
QString msgText = "<h3>" + tr("Subsurface was unable to check for updates.") + "</h3>";
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();
}