]> git.sur5r.net Git - minitube/blob - src/updatechecker.cpp
35c4639dc2b937ea34f22fbde156117337ebda8d
[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     // QUrl updateUrl("http://flavio.tordini.org:8012/release.xml");
16
17     QObject *reply = The::http()->get(updateUrl);
18     connect(reply, SIGNAL(data(QByteArray)), SLOT(requestFinished(QByteArray)));
19
20 }
21
22 void UpdateChecker::requestFinished(QByteArray data) {
23         UpdateCheckerStreamReader reader;
24         reader.read(data);
25         m_needUpdate = reader.needUpdate();
26         m_remoteVersion = reader.remoteVersion();
27         if (m_needUpdate && !m_remoteVersion.isEmpty()) emit newVersion(m_remoteVersion);
28 }
29
30 QString UpdateChecker::remoteVersion() {
31     return m_remoteVersion;
32 }
33
34 // --- Reader ---
35
36 bool UpdateCheckerStreamReader::read(QByteArray data) {
37     addData(data);
38
39     while (!atEnd()) {
40         readNext();
41         if (isStartElement()) {
42             if (name() == "release") {
43                 while (!atEnd()) {
44                     readNext();
45                     if (isStartElement() && name() == "version") {
46                         QString remoteVersion = readElementText();
47                         qDebug() << remoteVersion << QString(Constants::VERSION);
48                         m_needUpdate = remoteVersion != QString(Constants::VERSION);
49                         m_remoteVersion = remoteVersion;
50                         break;
51                     }
52                 }
53             }
54         }
55     }
56
57     return !error();
58 }
59
60 QString UpdateCheckerStreamReader::remoteVersion() {
61     return m_remoteVersion;
62 }