]> git.sur5r.net Git - minitube/blob - src/updatechecker.cpp
Imported Upstream version 1.4.1
[minitube] / src / updatechecker.cpp
1 #include "updatechecker.h"
2 #include "networkaccess.h"
3 #include "constants.h"
4
5 namespace The {
6     NetworkAccess* http();
7 }
8
9 UpdateChecker::UpdateChecker() {
10     m_needUpdate = false;
11 }
12
13 void UpdateChecker::checkForUpdate() {
14     QUrl updateUrl(QString(Constants::WEBSITE) + "-ws/release.xml");
15     updateUrl.addQueryItem("v", Constants::VERSION);
16
17 #ifdef APP_MAC
18     updateUrl.addQueryItem("os", "mac");
19 #endif
20 #ifdef APP_WIN
21     updateUrl.addQueryItem("os", "win");
22 #endif
23 #ifdef APP_DEMO
24     updateUrl.addQueryItem("t", "demo");
25 #endif
26
27     QObject *reply = The::http()->get(updateUrl);
28     connect(reply, SIGNAL(data(QByteArray)), SLOT(requestFinished(QByteArray)));
29
30 }
31
32 void UpdateChecker::requestFinished(QByteArray data) {
33         UpdateCheckerStreamReader reader;
34         reader.read(data);
35         m_needUpdate = reader.needUpdate();
36         m_remoteVersion = reader.remoteVersion();
37         if (m_needUpdate && !m_remoteVersion.isEmpty()) emit newVersion(m_remoteVersion);
38 }
39
40 QString UpdateChecker::remoteVersion() {
41     return m_remoteVersion;
42 }
43
44 // --- Reader ---
45
46 bool UpdateCheckerStreamReader::read(QByteArray data) {
47     addData(data);
48
49     while (!atEnd()) {
50         readNext();
51         if (isStartElement()) {
52             if (name() == "release") {
53                 while (!atEnd()) {
54                     readNext();
55                     if (isStartElement() && name() == "version") {
56                         QString remoteVersion = readElementText();
57                         qDebug() << remoteVersion << QString(Constants::VERSION);
58                         m_needUpdate = remoteVersion != QString(Constants::VERSION);
59                         m_remoteVersion = remoteVersion;
60                         break;
61                     }
62                 }
63             }
64         }
65     }
66
67     return !error();
68 }
69
70 QString UpdateCheckerStreamReader::remoteVersion() {
71     return m_remoteVersion;
72 }