mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	The webservice backend sends responses in English. Let's do a better job presenting those in the users preferred language. Fixes #714 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
		
			
				
	
	
		
			86 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "updatemanager.h"
 | |
| #include "usersurvey.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);
 | |
| 	QNetworkRequest request;
 | |
| 	request.setUrl(url);
 | |
| 	request.setRawHeader("Accept", "text/xml");
 | |
| 	QString userAgent = UserSurvey::getUserAgent();
 | |
| 	request.setRawHeader("User-Agent", userAgent.toUtf8());
 | |
| 	connect(SubsurfaceWebServices::manager()->get(request), 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;
 | |
| 		if (response.contains('"'))
 | |
| 			responseBody = response.split("\"").at(1);
 | |
| 		else
 | |
| 			responseBody = response;
 | |
| 
 | |
| 		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")) {
 | |
| 			// the webservice backend doesn't localize - but it's easy enough to just replace the
 | |
| 			// strings that it is likely to send back
 | |
| 			responseBody.replace("Latest version is ", "");
 | |
| 			responseBody.replace(". please check with your OS vendor for updates.", "");
 | |
| 			msgText = QString("<b>") + tr("A new version of subsurface is available.") + QString("</b><br/><br/>") +
 | |
| 					tr("Latest version is %1, please check with your OS vendor for updates.")
 | |
| 					.arg(responseBody);
 | |
| 		} else {
 | |
| 			// the webservice backend doesn't localize - but it's easy enough to just replace the
 | |
| 			// strings that it is likely to send back
 | |
| 			if (responseBody.contains("Newest release version is "))
 | |
| 				responseBody.replace("Newest release version is ", tr("Newest release version is "));
 | |
| 			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.setWindowIcon(QIcon(":/subsurface-icon"));
 | |
| 	msgbox.setText(msgText);
 | |
| 	msgbox.setTextFormat(Qt::RichText);
 | |
| 	msgbox.exec();
 | |
| }
 |