#include <QNetworkReply>
#include <QUrl>
-Remote::Remote(const QString &name)
- : m_name(name)
+Remote::Remote()
+ : m_name("")
+ , m_mfg("")
+ , m_rating(0)
+ , m_voteCount(0)
+ , m_infoNAM(NULL)
+ , m_remoteNAM(NULL)
+ , m_ratingNAM(NULL)
{
- init();
- updateInfo();
}
Remote::Remote(const QString &name, const QString &mfg,
int rating, int voteCount)
- : m_name(name), m_mfg(mfg),
- m_rating(rating), m_voteCount(voteCount)
+ : m_name(name)
+ , m_mfg(mfg)
+ , m_rating(rating)
+ , m_voteCount(voteCount)
+ , m_infoNAM(NULL)
+ , m_remoteNAM(NULL)
+ , m_ratingNAM(NULL)
{
- init();
}
Remote::Remote(const Remote &r)
- : m_name(r.m_name)
+ : QObject()
+ , m_name(r.m_name)
, m_mfg(r.m_mfg)
, m_rating(r.m_rating)
, m_voteCount(r.m_voteCount)
+ , m_infoNAM(NULL)
+ , m_remoteNAM(NULL)
+ , m_ratingNAM(NULL)
+{
+}
+
+Remote::~Remote()
{
- init();
+ delete m_infoNAM;
+ delete m_remoteNAM;
+ delete m_ratingNAM;
}
Remote &Remote::operator=(const Remote &other)
return *this;
}
-void Remote::init()
+bool Remote::operator==(const Remote &other) const
{
- connect(&m_remoteNAM, SIGNAL(finished(QNetworkReply*)),
- this, SLOT(remoteDownloadFinished(QNetworkReply*)));
- connect(&m_infoNAM, SIGNAL(finished(QNetworkReply*)),
- this, SLOT(infoRequestFinished(QNetworkReply *reply)));
+ return (m_name == other.m_name &&
+ m_mfg == other.m_mfg &&
+ m_rating == other.m_rating &&
+ m_voteCount == other.m_voteCount);
}
void Remote::saveToFile()
{
if (!m_name.isEmpty()) {
- QString url = m_settings.value("remoteUrl",
- "http://mercury.wipsl.com/irwi/uploaded/").toString()
+ if (!m_remoteNAM) {
+ m_remoteNAM = new QNetworkAccessManager(this);
+ connect(m_remoteNAM, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(remoteDownloadFinished(QNetworkReply*)));
+ }
+ QSettings settings(this);
+ QString url = settings.value("baseUrl",
+ "http://mercury.wipsl.com/irwi/").toString()
+ + "uploaded/"
+ m_name;
- m_remoteNAM.get(QNetworkRequest(QUrl(url)));
- m_settings.setValue("remoteName", m_name);
+ m_remoteNAM->get(QNetworkRequest(QUrl(url)));
+ settings.setValue("remoteName", m_name);
}
}
void Remote::updateInfo()
{
if (!m_name.isEmpty()) {
- QString url = m_settings.value("baseUrl",
+ if (!m_infoNAM) {
+ m_infoNAM = new QNetworkAccessManager(this);
+ connect(m_infoNAM, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(infoRequestFinished(QNetworkReply *)));
+ }
+ QSettings settings(this);
+ QString url = settings.value("baseUrl",
"http://mercury.wipsl.com/irwi/").toString()
+ "vote/get?name="
+ m_name;
- m_infoNAM.get(QNetworkRequest(QUrl(url)));
+ m_infoNAM->get(QNetworkRequest(QUrl(url)));
}
}
void Remote::sendRating(Rating::Rating r)
{
- if (m_name != "") {
- m_ratingNAM.get(QNetworkRequest(QUrl(
- m_settings.value("baseUrl",
- "http://mercury.wipsl.com/irwi/db.xml").toString()
+ if (!m_name.isEmpty()) {
+ if (!m_ratingNAM) {
+ m_ratingNAM = new QNetworkAccessManager(this);
+ connect(m_ratingNAM, SIGNAL(finished(QNetworkReply *)),
+ this, SIGNAL(ratingSent()));
+ connect(this, SIGNAL(ratingSent()), this, SLOT(updateInfo()));
+ }
+ QSettings settings(this);
+ m_ratingNAM->get(QNetworkRequest(QUrl(
+ settings.value("baseUrl",
+ "http://mercury.wipsl.com/irwi/").toString()
+ "vote/"
+ ((r == Rating::Up) ? "up" : "down")
+ "?name="
void Remote::remoteDownloadFinished(QNetworkReply *reply)
{
if (reply->error() == QNetworkReply::NoError) {
- QFile file(m_settings.value("lircConf", "/etc/lircd.conf").toString());
- if(file.open(QIODevice::WriteOnly))
- {
+ QFile file(QSettings(this).value("lircConf",
+ "/etc/lircd.conf").toString());
+ if(file.open(QIODevice::WriteOnly)) {
file.write(reply->readAll());
file.close();
}
std::system("sudo /etc/init.d/lirc reload");
- //emit remoteDownloaded();
+ emit saveFinished();
}
void Remote::infoRequestFinished(QNetworkReply *reply)
if (reply->error() == QNetworkReply::NoError) {
m_rating = QString(reply->readLine(20)).toInt();
m_voteCount = QString(reply->readLine(20)).toInt();
+ m_mfg = QString(reply->readLine(20)).trimmed();
}
reply->close();
reply->deleteLater();