source: smplayer/trunk/src/updatechecker.cpp@ 165

Last change on this file since 165 was 165, checked in by Silvan Scherrer, 11 years ago

SMPlayer: update trunk to latest 0.8.7

File size: 3.9 KB
Line 
1/* smplayer, GUI front-end for mplayer.
2 Copyright (C) 2006-2014 Ricardo Villalba <rvm@users.sourceforge.net>
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17*/
18
19#include "updatechecker.h"
20#include "version.h"
21#include <QSettings>
22#include <QUrl>
23#include <QNetworkAccessManager>
24#include <QNetworkRequest>
25#include <QNetworkReply>
26#include <QRegExp>
27#include <QDate>
28#include <QDateTime>
29
30void UpdateCheckerData::save(QSettings * set) {
31 set->beginGroup("update_checker");
32 set->setValue("checked_date", last_checked);
33 set->setValue("enabled", enabled);
34 set->setValue("days_to_check", days_to_check);
35 set->setValue("last_known_version", last_known_version);
36 set->endGroup();
37}
38
39void UpdateCheckerData::load(QSettings * set) {
40 set->beginGroup("update_checker");
41 last_checked = set->value("checked_date", 0).toDate();
42 enabled = set->value("enabled", true).toBool();
43 days_to_check = set->value("days_to_check", 7).toInt();
44 last_known_version = set->value("last_known_version", Version::with_revision()).toString();
45 set->endGroup();
46}
47
48UpdateChecker::UpdateChecker(QObject * parent, UpdateCheckerData * data) : QObject(parent)
49{
50 d = data;
51
52 QDate now = QDate::currentDate();
53 //now = now.addDays(27);
54 int days = QDateTime(d->last_checked).daysTo(QDateTime(now));
55
56 qDebug("UpdateChecker::UpdateChecker: enabled: %d", d->enabled);
57 qDebug("UpdateChecker::UpdateChecker: days_to_check: %d", d->days_to_check);
58 qDebug("UpdateChecker::UpdateChecker: days since last check: %d", days);
59
60 if ((!d->enabled) || (days < d->days_to_check)) return;
61
62 net_manager = new QNetworkAccessManager();
63 QUrl url("http://updates.smplayer.info/current_version");
64
65 QNetworkRequest req(url);
66 req.setRawHeader("User-Agent", "SMPlayer");
67 QNetworkReply *reply = net_manager->get(req);
68 connect(reply, SIGNAL(finished()), this, SLOT(gotReply()));
69}
70
71UpdateChecker::~UpdateChecker() {
72}
73
74void UpdateChecker::gotReply() {
75 qDebug("UpdateChecker::gotReply");
76
77 QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
78
79 if (reply) {
80 if (reply->error() == QNetworkReply::NoError) {
81 //read data from reply
82 QRegExp rx_version("^version=(.*)");
83 QString version;
84 while (reply->canReadLine()) {
85 QByteArray line = reply->readLine().trimmed();
86 //qDebug("line: %s", line.constData());
87 if (rx_version.indexIn(line) != -1) {
88 version = rx_version.cap(1);
89 //qDebug("version: %s", version.toUtf8().constData());
90 break;
91 }
92 }
93 if (!version.isEmpty()) {
94 d->last_checked = QDate::currentDate();
95 //qDebug("last known: %s version: %s", d->last_known_version.toUtf8().constData(), version.toUtf8().constData());
96 //qDebug("version_with_revision: %s", Version::with_revision().toUtf8().constData());
97 if ((d->last_known_version != version) && (version > Version::with_revision())) {
98 qDebug("UpdateChecker::gotReply: new version found: %s", version.toUtf8().constData());
99 emit newVersionFound(version);
100 }
101 }
102 } else {
103 //get http status code
104 int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
105 qDebug("UpdateChecker::gotReply: status: %d", status);
106 }
107 reply->deleteLater();
108 }
109}
110
111void UpdateChecker::saveVersion(QString v) {
112 d->last_known_version = v;
113}
114
115#include "moc_updatechecker.cpp"
116
Note: See TracBrowser for help on using the repository browser.