New architecture
[irwi] / src / remote.cpp
index c9cf83b..006e907 100644 (file)
@@ -9,22 +9,27 @@
 #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)
@@ -33,8 +38,17 @@ Remote::Remote(const Remote &r)
     , 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)
@@ -48,41 +62,49 @@ Remote &Remote::operator=(const Remote &other)
     return *this;
 }
 
-void Remote::init()
-{
-    connect(&m_remoteNAM, SIGNAL(finished(QNetworkReply*)),
-            this, SLOT(remoteDownloadFinished(QNetworkReply*)));
-    connect(&m_infoNAM, SIGNAL(finished(QNetworkReply*)),
-            this, SLOT(infoRequestFinished(QNetworkReply *)));
-}
-
 void Remote::saveToFile()
 {
     if (!m_name.isEmpty()) {
-        QString url = m_settings.value("remoteUrl",
+        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("remoteUrl",
             "http://mercury.wipsl.com/irwi/uploaded/").toString()
             + 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",
+        if (!m_ratingNAM) {
+            m_ratingNAM = new QNetworkAccessManager(this);
+        }
+        QSettings settings(this);
+        m_ratingNAM->get(QNetworkRequest(QUrl(
+            settings.value("baseUrl",
                 "http://mercury.wipsl.com/irwi/db.xml").toString() 
             + "vote/"
             + ((r == Rating::Up) ? "up" : "down")
@@ -94,9 +116,9 @@ void Remote::sendRating(Rating::Rating r)
 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();
         }
@@ -105,8 +127,6 @@ void Remote::remoteDownloadFinished(QNetworkReply *reply)
     reply->deleteLater();
 
     std::system("sudo /etc/init.d/lirc reload");
-
-    //emit remoteDownloaded();
 }
 
 void Remote::infoRequestFinished(QNetworkReply *reply)