From a21153d5e24fdbb9b27e8d726b85ac467da91d5a Mon Sep 17 00:00:00 2001 From: Torste Aikio Date: Fri, 21 May 2010 15:11:50 +0300 Subject: [PATCH] SettingDlg is now able to fetch remotefilenames --- src/settingsdlg.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++------ src/settingsdlg.h | 8 ++++++-- 2 files changed, 51 insertions(+), 8 deletions(-) diff --git a/src/settingsdlg.cpp b/src/settingsdlg.cpp index f540683..1c8ecd1 100644 --- a/src/settingsdlg.cpp +++ b/src/settingsdlg.cpp @@ -1,5 +1,6 @@ #include "settingsdlg.h" +#include #include #include #include @@ -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) diff --git a/src/settingsdlg.h b/src/settingsdlg.h index b87a45c..000e30a 100644 --- a/src/settingsdlg.h +++ b/src/settingsdlg.h @@ -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 -- 1.7.9.5