SettingDlg is now able to fetch remotefilenames
authorTorste Aikio <zokier@zokier.laptop>
Fri, 21 May 2010 12:11:50 +0000 (15:11 +0300)
committerTorste Aikio <zokier@zokier.laptop>
Fri, 21 May 2010 12:11:50 +0000 (15:11 +0300)
src/settingsdlg.cpp
src/settingsdlg.h

index f540683..1c8ecd1 100644 (file)
@@ -1,5 +1,6 @@
 #include "settingsdlg.h"
 
+#include <QDebug>
 #include <QHBoxLayout>
 #include <QLabel>
 #include <QString>
@@ -17,7 +18,13 @@ SettingsDlg::SettingsDlg(QWidget *parent)
     this->setWindowTitle(tr("Settings"));
 
     //TODO caching?
-    netAM = new QNetworkAccessManager(this);
+    mfgNetAM = new QNetworkAccessManager(this);
+    connect(mfgNetAM, SIGNAL(finished(QNetworkReply*)), 
+            this,  SLOT(mfgListDownloadFinished(QNetworkReply*)));
+
+    modelNetAM = new QNetworkAccessManager(this);
+    connect(modelNetAM, SIGNAL(finished(QNetworkReply*)), 
+            this,  SLOT(modelListDownloadFinished(QNetworkReply*)));
     
     settings = new QSettings(this);
 
@@ -43,21 +50,19 @@ SettingsDlg::SettingsDlg(QWidget *parent)
                 this, SLOT(modelItemChanged(QListWidgetItem*, QListWidgetItem*)));
 
     this->setLayout(layout);
-
-    connect(netAM, SIGNAL(finished(QNetworkReply*)), 
-            this,  SLOT(mfgListDownloadFinished(QNetworkReply*)));
 }
 
 SettingsDlg::~SettingsDlg()
 {
     delete layout;
     delete settings;
-    delete netAM;
+    delete mfgNetAM;
+    delete modelNetAM;
 }
 
 void SettingsDlg::alphabetItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
 {
-    QNetworkReply* reply = netAM->get(
+    QNetworkReply* reply = mfgNetAM->get(
         QNetworkRequest(
             QUrl(
                 settings->value(
@@ -80,6 +85,7 @@ void SettingsDlg::mfgListDownloadFinished(QNetworkReply *reply)
         while (buf.canReadLine())
         {
             QString str(buf.readLine());
+            str.chop(1);
             mfgList->addItem(str);
         }
     } else {
@@ -91,6 +97,39 @@ void SettingsDlg::mfgListDownloadFinished(QNetworkReply *reply)
 
 void SettingsDlg::mfgItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
 {
+    if (mfgList->currentItem() != NULL) {
+    QNetworkReply* reply = modelNetAM->get(
+        QNetworkRequest(
+            QUrl(
+                settings->value(
+                    "remoteUrl",
+                    "http://mercury.wipsl.com/irwi/remotes/"
+                ).toString() + alphabetList->currentItem()->text()
+                + "/" + current->text() + ".txt"
+            )
+        )
+    );
+    }
+}
+
+void SettingsDlg::modelListDownloadFinished(QNetworkReply *reply)
+{
+    modelList->clear();
+    if (reply->error() == QNetworkReply::NoError) {
+        QByteArray ba = reply->readAll();
+        QBuffer buf(&ba, this);
+        buf.open(QIODevice::ReadOnly);
+        buf.seek(0);
+        while (buf.canReadLine())
+        {
+            QString str(buf.readLine());
+            modelList->addItem(str);
+        }
+    } else {
+        //qDebug() << (int)reply->error();
+    }
+    reply->close();
+    reply->deleteLater();
 }
 
 void SettingsDlg::modelItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
index b87a45c..000e30a 100644 (file)
@@ -20,17 +20,21 @@ public:
 
 private slots:
     void alphabetItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
+    
     void mfgItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
-    void modelItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
     void mfgListDownloadFinished(QNetworkReply *reply);
 
+    void modelItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
+    void modelListDownloadFinished(QNetworkReply *reply);
+
 private:
     QHBoxLayout *layout;
     QListWidget *alphabetList;
     QListWidget *mfgList;
     QListWidget *modelList;
     QSettings *settings;
-    QNetworkAccessManager *netAM;
+    QNetworkAccessManager *mfgNetAM;
+    QNetworkAccessManager *modelNetAM;
 };
 
 #endif