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