SettingsDlg now downloads stuff from interwebs
authorTorste Aikio <zokier@zokier.laptop>
Fri, 21 May 2010 08:08:12 +0000 (11:08 +0300)
committerTorste Aikio <zokier@zokier.laptop>
Fri, 21 May 2010 08:08:12 +0000 (11:08 +0300)
src/irw.pro
src/mainwidget.cpp
src/settingsdlg.cpp
src/settingsdlg.h

index 2791076..daf7e5f 100644 (file)
@@ -16,4 +16,5 @@ desktop.files = qt-homescreen-example.desktop
 target.path = /usr/lib/hildon-desktop
 INSTALLS += target desktop
 
+QT += network
 
index 9c2436f..a3d8151 100644 (file)
@@ -55,10 +55,7 @@ MainWidget::MainWidget (QWidget *parent)
 void MainWidget::showSettingsDialog()
 {
     SettingsDlg dlg(this);
-    if (dlg.exec() == QDialog::Accepted)
-    {
-        irCtrl.setRemoteName(dlg.getRemoteName());
-    }
+    dlg.exec();
 }
 
 
index 5c8fe97..de50777 100644 (file)
@@ -5,11 +5,20 @@
 #include <QString>
 #include <QListWidget>
 #include <QListWidgetItem>
+#include <QSettings>
+#include <QtNetwork/QNetworkAccessManager>
+#include <QtNetwork/QNetworkReply>
 
 SettingsDlg::SettingsDlg(QWidget *parent)
     : QDialog(parent)
 {
     this->setWindowTitle(tr("Settings"));
+
+    //TODO caching?
+    netAM = new QNetworkAccessManager(this);
+    
+    settings = new QSettings(this);
+
     layout = new QHBoxLayout(this);
 
     alphabetList = new QListWidget(this);
@@ -37,15 +46,34 @@ SettingsDlg::SettingsDlg(QWidget *parent)
 SettingsDlg::~SettingsDlg()
 {
     delete layout;
+    delete settings;
+    delete netAM;
 }
 
-QString& SettingsDlg::getRemoteName()
+void SettingsDlg::alphabetItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
 {
-    return remoteName;
+    QNetworkReply* reply = netAM->get(
+        QNetworkRequest(
+            QUrl(
+                settings->value(
+                    "remoteUrl",
+                    "http://mercury.wipsl.com/irwi/remotes/"
+                ).toString() + current->text() + ".txt"
+            )
+        )
+    );
+    connect(netAM, SIGNAL(finished(QNetworkReply*)), 
+            this,  SLOT(mfgListDownloadFinished(QNetworkReply*)));
 }
 
-void SettingsDlg::alphabetItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
+void SettingsDlg::mfgListDownloadFinished(QNetworkReply *reply)
 {
+    mfgList->clear();
+    while (reply->canReadLine())
+    {
+        mfgList->addItem(QString(reply->readLine()));
+    }
+    reply->deleteLater();
 }
 
 void SettingsDlg::mfgItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
@@ -54,5 +82,11 @@ void SettingsDlg::mfgItemChanged(QListWidgetItem *current, QListWidgetItem *prev
 
 void SettingsDlg::modelItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
 {
+    if (current)
+    {
+        settings->setValue("remoteName", current->text());
+        //TODO save remote from server to /etc/lircd.conf
+        //maybe lirc needs restart after that?
+    }
 }
 
index dc2325e..b87a45c 100644 (file)
@@ -7,6 +7,9 @@
 class QHBoxLayout;
 class QListWidget;
 class QListWidgetItem;
+class QSettings;
+class QNetworkAccessManager;
+class QNetworkReply;
 
 class SettingsDlg : public QDialog
 {
@@ -15,19 +18,19 @@ public:
     SettingsDlg(QWidget *parent = 0);
     ~SettingsDlg();
 
-    QString& getRemoteName();
-
 private slots:
     void alphabetItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
     void mfgItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
     void modelItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
+    void mfgListDownloadFinished(QNetworkReply *reply);
 
 private:
     QHBoxLayout *layout;
-    QString remoteName;
     QListWidget *alphabetList;
     QListWidget *mfgList;
     QListWidget *modelList;
+    QSettings *settings;
+    QNetworkAccessManager *netAM;
 };
 
 #endif