]> git.sur5r.net Git - minitube/blob - src/updatechecker.cpp
Imported Upstream version 1.6
[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 #ifdef APP_MAC_STORE
27     updateUrl.addQueryItem("store", "mac");
28 #endif
29
30     QObject *reply = The::http()->get(updateUrl);
31     connect(reply, SIGNAL(data(QByteArray)), SLOT(requestFinished(QByteArray)));
32
33 }
34
35 void UpdateChecker::requestFinished(QByteArray data) {
36         UpdateCheckerStreamReader reader;
37         reader.read(data);
38         m_needUpdate = reader.needUpdate();
39         m_remoteVersion = reader.remoteVersion();
40         if (m_needUpdate && !m_remoteVersion.isEmpty()) emit newVersion(m_remoteVersion);
41 }
42
43 QString UpdateChecker::remoteVersion() {
44     return m_remoteVersion;
45 }
46
47 // --- Reader ---
48
49 bool UpdateCheckerStreamReader::read(QByteArray data) {
50     addData(data);
51
52     while (!atEnd()) {
53         readNext();
54         if (isStartElement()) {
55             if (name() == "release") {
56                 while (!atEnd()) {
57                     readNext();
58                     if (isStartElement() && name() == "version") {
59                         QString remoteVersion = readElementText();
60                         qDebug() << remoteVersion << QString(Constants::VERSION);
61                         m_needUpdate = remoteVersion != QString(Constants::VERSION);
62                         m_remoteVersion = remoteVersion;
63                         break;
64                     }
65                 }
66             }
67         }
68     }
69
70     return !error();
71 }
72
73 QString UpdateCheckerStreamReader::remoteVersion() {
74     return m_remoteVersion;
75 }