9e9f80e47a2aca11c1d61968450102454c9a8795
[irwi] / src / remote.cpp
1 #include "remote.h"
2
3 #include <cstdlib>
4
5 #include <QString>
6 #include <QSettings>
7 #include <QFile>
8 #include <QNetworkAccessManager>
9 #include <QNetworkRequest>
10 #include <QNetworkReply>
11 #include <QUrl>
12
13 Remote::Remote(const QString &name)
14     : m_name(name)
15 {
16     init();
17     updateInfo();
18 }
19
20 Remote::Remote(const QString &name, const QString &mfg,
21         int rating, int voteCount)
22     : m_name(name), m_mfg(mfg),
23     m_rating(rating), m_voteCount(voteCount)
24 {
25     init();
26 }
27
28 void Remote::init()
29 {
30     connect(&m_remoteNAM, SIGNAL(finished(QNetworkReply*)),
31             this, SLOT(remoteDownloadFinished(QNetworkReply*)));
32     connect(&m_infoNAM, SIGNAL(finished(QNetworkReply*)),
33             this, SLOT(infoRequestFinished(QNetworkReply *reply)));
34 }
35
36 void Remote::saveToFile()
37 {
38     QSettings settings;
39     if (!m_name.isEmpty()) {
40         QString url = settings.value("remoteUrl",
41             "http://mercury.wipsl.com/irwi/uploaded/").toString()
42             + m_name;
43         m_remoteNAM.get(QNetworkRequest(QUrl(url)));
44         settings.setValue("remoteName", m_name);
45     }
46 }
47
48 void Remote::updateInfo()
49 {
50     QSettings settings;
51     if (!m_name.isEmpty()) {
52         QString url = settings.value("baseUrl",
53             "http://mercury.wipsl.com/irwi/").toString()
54             + "vote/get?name="
55             + m_name;
56         m_infoNAM.get(QNetworkRequest(QUrl(url)));
57     }
58 }
59
60 void Remote::sendRating(Rating::Rating r)
61 {
62     QSettings settings;
63     if (m_name != "") {
64         m_ratingNAM.get(QNetworkRequest(QUrl(
65             settings.value("baseUrl",
66                 "http://mercury.wipsl.com/irwi/db.xml").toString() 
67             + "vote/"
68             + ((r == Rating::Up) ? "up" : "down")
69             + "?name=" 
70             + m_name)));
71    }
72 }
73
74 void Remote::remoteDownloadFinished(QNetworkReply *reply)
75 {
76     if (reply->error() == QNetworkReply::NoError) {
77         QFile file(settings->value("lircConf", "/etc/lircd.conf").toString());
78         if(file.open(QIODevice::WriteOnly))
79         {
80             file.write(reply->readAll());
81             file.close();
82         }
83     }
84     reply->close();
85     reply->deleteLater();
86
87     std::system("sudo /etc/init.d/lirc reload");
88
89     //emit remoteDownloaded();
90 }
91
92 void Remote::infoRequestFinished(QNetworkReply *reply)
93 {
94     if (reply->error() == QNetworkReply::NoError) {
95         m_rating    = QString(reply->readline(20)).toInt();
96         m_voteCount = QString(reply->readline(20)).toInt();
97     }
98     reply->close();
99     reply->deleteLater();
100
101     emit infoUpdated();
102 }
103