7 #include <QNetworkAccessManager>
8 #include <QNetworkRequest>
9 #include <QNetworkReply>
23 Remote::Remote(const QString &name, const QString &mfg,
24 int rating, int voteCount)
28 , m_voteCount(voteCount)
35 Remote::Remote(const Remote &r)
39 , m_rating(r.m_rating)
40 , m_voteCount(r.m_voteCount)
54 Remote &Remote::operator=(const Remote &other)
57 m_name = other.m_name;
59 m_rating = other.m_rating;
60 m_voteCount = other.m_voteCount;
65 bool Remote::operator==(const Remote &other) const
67 return (m_name == other.m_name &&
68 m_mfg == other.m_mfg &&
69 m_rating == other.m_rating &&
70 m_voteCount == other.m_voteCount);
73 void Remote::saveToFile()
75 if (!m_name.isEmpty()) {
77 m_remoteNAM = new QNetworkAccessManager(this);
78 connect(m_remoteNAM, SIGNAL(finished(QNetworkReply*)),
79 this, SLOT(remoteDownloadFinished(QNetworkReply*)));
81 QSettings settings(this);
82 QString url = settings.value("baseUrl",
83 "http://mercury.wipsl.com/irwi/").toString()
86 m_remoteNAM->get(QNetworkRequest(QUrl(url)));
87 settings.setValue("remoteName", m_name);
91 void Remote::updateInfo()
93 if (!m_name.isEmpty()) {
95 m_infoNAM = new QNetworkAccessManager(this);
96 connect(m_infoNAM, SIGNAL(finished(QNetworkReply*)),
97 this, SLOT(infoRequestFinished(QNetworkReply *)));
99 QSettings settings(this);
100 QString url = settings.value("baseUrl",
101 "http://mercury.wipsl.com/irwi/").toString()
104 m_infoNAM->get(QNetworkRequest(QUrl(url)));
108 void Remote::sendRating(Rating::Rating r)
110 if (!m_name.isEmpty()) {
112 m_ratingNAM = new QNetworkAccessManager(this);
113 connect(m_ratingNAM, SIGNAL(finished(QNetworkReply *)),
114 this, SIGNAL(ratingSent()));
115 connect(this, SIGNAL(ratingSent()), this, SLOT(updateInfo()));
117 QSettings settings(this);
118 m_ratingNAM->get(QNetworkRequest(QUrl(
119 settings.value("baseUrl",
120 "http://mercury.wipsl.com/irwi/").toString()
122 + ((r == Rating::Up) ? "up" : "down")
128 void Remote::remoteDownloadFinished(QNetworkReply *reply)
130 if (reply->error() == QNetworkReply::NoError) {
131 QFile file(QSettings(this).value("lircConf",
132 "/etc/lircd.conf").toString());
133 if(file.open(QIODevice::WriteOnly)) {
134 file.write(reply->readAll());
139 reply->deleteLater();
141 std::system("sudo /etc/init.d/lirc reload");
146 void Remote::infoRequestFinished(QNetworkReply *reply)
148 if (reply->error() == QNetworkReply::NoError) {
149 m_rating = QString(reply->readLine(20)).toInt();
150 m_voteCount = QString(reply->readLine(20)).toInt();
151 m_mfg = QString(reply->readLine(20)).trimmed();
154 reply->deleteLater();