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);
88 settings.setValue("remoteMfg", m_mfg);
92 void Remote::updateInfo()
94 if (!m_name.isEmpty()) {
96 m_infoNAM = new QNetworkAccessManager(this);
97 connect(m_infoNAM, SIGNAL(finished(QNetworkReply*)),
98 this, SLOT(infoRequestFinished(QNetworkReply *)));
100 QSettings settings(this);
101 QString url = settings.value("baseUrl",
102 "http://mercury.wipsl.com/irwi/").toString()
105 m_infoNAM->get(QNetworkRequest(QUrl(url)));
109 void Remote::sendRating(Rating::Rating r)
111 if (!m_name.isEmpty()) {
113 m_ratingNAM = new QNetworkAccessManager(this);
114 connect(m_ratingNAM, SIGNAL(finished(QNetworkReply *)),
115 this, SIGNAL(ratingSent()));
116 connect(this, SIGNAL(ratingSent()), this, SLOT(updateInfo()));
118 QSettings settings(this);
119 m_ratingNAM->get(QNetworkRequest(QUrl(
120 settings.value("baseUrl",
121 "http://mercury.wipsl.com/irwi/").toString()
123 + ((r == Rating::Up) ? "up" : "down")
129 void Remote::remoteDownloadFinished(QNetworkReply *reply)
131 if (reply->error() == QNetworkReply::NoError) {
132 QFile file(QSettings(this).value("lircConf",
133 "/etc/lircd.conf").toString());
134 if(file.open(QIODevice::WriteOnly)) {
135 file.write(reply->readAll());
140 reply->deleteLater();
142 std::system("sudo /etc/init.d/lirc reload");
147 void Remote::infoRequestFinished(QNetworkReply *reply)
149 if (reply->error() == QNetworkReply::NoError) {
150 m_rating = QString(reply->readLine(20)).toInt();
151 m_voteCount = QString(reply->readLine(20)).toInt();
152 m_mfg = QString(reply->readLine(20)).trimmed();
155 reply->deleteLater();