aboutsummaryrefslogtreecommitdiffstats
path: root/qt-ui/updatemanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui/updatemanager.cpp')
-rw-r--r--qt-ui/updatemanager.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/qt-ui/updatemanager.cpp b/qt-ui/updatemanager.cpp
new file mode 100644
index 000000000..e721f914c
--- /dev/null
+++ b/qt-ui/updatemanager.cpp
@@ -0,0 +1,67 @@
+#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";
+#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 = tr("<h3>Subsurface was unable to check for updates.</h3>");
+
+
+ if (reply->error() != QNetworkReply::NoError) {
+ //Network Error
+ msgText = msgText + tr("<br/><b>The following error occurred:</b><br/>") + reply->errorString()
+ + tr("<br/><br/><b>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();
+}