Merge branch 'master' of ssh://mercury.wipsl.com/var/git/irwi
[irwi] / src / remote.cpp
index af46cda..9e9f80e 100644 (file)
@@ -1,14 +1,20 @@
 #include "remote.h"
 
+#include <cstdlib>
+
 #include <QString>
 #include <QSettings>
+#include <QFile>
 #include <QNetworkAccessManager>
 #include <QNetworkRequest>
+#include <QNetworkReply>
 #include <QUrl>
 
 Remote::Remote(const QString &name)
     : m_name(name)
 {
+    init();
+    updateInfo();
 }
 
 Remote::Remote(const QString &name, const QString &mfg,
@@ -16,20 +22,38 @@ Remote::Remote(const QString &name, const QString &mfg,
     : m_name(name), m_mfg(mfg),
     m_rating(rating), m_voteCount(voteCount)
 {
+    init();
+}
+
+void Remote::init()
+{
+    connect(&m_remoteNAM, SIGNAL(finished(QNetworkReply*)),
+            this, SLOT(remoteDownloadFinished(QNetworkReply*)));
+    connect(&m_infoNAM, SIGNAL(finished(QNetworkReply*)),
+            this, SLOT(infoRequestFinished(QNetworkReply *reply)));
 }
 
 void Remote::saveToFile()
 {
+    QSettings settings;
+    if (!m_name.isEmpty()) {
+        QString url = settings.value("remoteUrl",
+            "http://mercury.wipsl.com/irwi/uploaded/").toString()
+            + m_name;
+        m_remoteNAM.get(QNetworkRequest(QUrl(url)));
+        settings.setValue("remoteName", m_name);
+    }
 }
 
 void Remote::updateInfo()
 {
     QSettings settings;
-    if (m_name != "") {
-        m_infoNAM.get(QNetworkRequest(QUrl(
-              settings.value("baseUrl").toString() 
-                + "vote/get?name=" 
-                + m_name )));
+    if (!m_name.isEmpty()) {
+        QString url = settings.value("baseUrl",
+            "http://mercury.wipsl.com/irwi/").toString()
+            + "vote/get?name="
+            + m_name;
+        m_infoNAM.get(QNetworkRequest(QUrl(url)));
     }
 }
 
@@ -44,6 +68,36 @@ void Remote::sendRating(Rating::Rating r)
             + ((r == Rating::Up) ? "up" : "down")
             + "?name=" 
             + m_name)));
+   }
+}
+
+void Remote::remoteDownloadFinished(QNetworkReply *reply)
+{
+    if (reply->error() == QNetworkReply::NoError) {
+        QFile file(settings->value("lircConf", "/etc/lircd.conf").toString());
+        if(file.open(QIODevice::WriteOnly))
+        {
+            file.write(reply->readAll());
+            file.close();
+        }
+    }
+    reply->close();
+    reply->deleteLater();
+
+    std::system("sudo /etc/init.d/lirc reload");
+
+    //emit remoteDownloaded();
+}
+
+void Remote::infoRequestFinished(QNetworkReply *reply)
+{
+    if (reply->error() == QNetworkReply::NoError) {
+        m_rating    = QString(reply->readline(20)).toInt();
+        m_voteCount = QString(reply->readline(20)).toInt();
     }
+    reply->close();
+    reply->deleteLater();
+
+    emit infoUpdated();
 }