-
Notifications
You must be signed in to change notification settings - Fork 373
/
CheckUpdatesThread.cpp
62 lines (54 loc) · 2.6 KB
/
CheckUpdatesThread.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "CheckUpdatesThread.h"
#include "MainWindow.h"
CheckUpdatesThread::CheckUpdatesThread(QObject *parent) : QThread(parent) {
isUpdateAvailable = false;
this->parent = parent;manager = new QNetworkAccessManager();
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
// Check two destinations to have more reliability
manager->get(QNetworkRequest(QUrl("http://cloud.github.com/downloads/Y-Vladimir/SmartDeblur/updates.xml")));
manager->get(QNetworkRequest(QUrl("http://yuzhikov.com/updates.xml")));
}
void CheckUpdatesThread::run() {
qDebug() << "CheckUpdatesThread started";
}
void CheckUpdatesThread::replyFinished(QNetworkReply * reply) {
try {
if (reply->error() != QNetworkReply::NoError) {
reply->deleteLater();
return;
}
QDomDocument updatesDoc("updatesXML");
updatesDoc.setContent(QString(reply->readAll()));
reply->deleteLater();
QDomElement appElem = updatesDoc.documentElement();
QString lastVersion = appElem.attributeNode("lastVersion").nodeValue();
QString description = appElem.elementsByTagName("description").at(0).toElement().text();
QString date = appElem.elementsByTagName("date").at(0).toElement().text();
QString url = appElem.elementsByTagName("url").at(0).toElement().text();
QString changes;
QDomNodeList nodeList = appElem.elementsByTagName("changes").at(0).toElement().elementsByTagName("item");
if (nodeList.count() > 0) {
for(int i=0; i<nodeList.count(); i++) {
changes += "<li>" + nodeList.at(i).toElement().text() + "</li>";
}
changes = "<ul>"+changes+"</ul>";
}
// If gathered vesrion not equal current, then show message
if (lastVersion.length() > 1 && lastVersion != MainWindow::appVersion) {
if (isUpdateAvailable) {
return;
}
isUpdateAvailable = true;
QString updateText = "Your installed version of SmartDeblur is %1<b><br>"
"An updated version (%2, from %3) is available!</b><br><br>"
"%4%5"
"Download a new version by the following link:<br>"
"<a href=\"%6\">%6</a>";
QMessageBox::information((QWidget*)parent, tr("New version of SmartDblur"),
updateText.arg(MainWindow::appVersion, lastVersion, date, description, changes, url));
}
} catch (...) {
qDebug() << "ERROR while checking updates!";
}
}