1 #include "settingsdlg.h"
8 #include <QListWidgetItem>
10 #include <QtNetwork/QNetworkAccessManager>
11 #include <QtNetwork/QNetworkReply>
16 SettingsDlg::SettingsDlg(QWidget *parent)
19 this->setWindowTitle(tr("Settings"));
22 mfgNetAM = new QNetworkAccessManager(this);
23 connect(mfgNetAM, SIGNAL(finished(QNetworkReply*)),
24 this, SLOT(mfgListDownloadFinished(QNetworkReply*)));
26 modelNetAM = new QNetworkAccessManager(this);
27 connect(modelNetAM, SIGNAL(finished(QNetworkReply*)),
28 this, SLOT(modelListDownloadFinished(QNetworkReply*)));
30 remoteNetAM = new QNetworkAccessManager(this);
31 connect(remoteNetAM, SIGNAL(finished(QNetworkReply*)),
32 this, SLOT(remoteDownloadFinished(QNetworkReply*)));
34 settings = new QSettings(this);
36 layout = new QHBoxLayout(this);
38 alphabetList = new QListWidget(this);
39 for (char c = 'a'; c <= 'z'; ++c)
41 alphabetList->addItem(QString(c));
43 layout->addWidget(alphabetList);
44 connect(alphabetList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
45 this, SLOT(alphabetItemChanged(QListWidgetItem*, QListWidgetItem*)));
47 mfgList = new QListWidget(this);
48 layout->addWidget(mfgList);
49 connect(mfgList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
50 this, SLOT(mfgItemChanged(QListWidgetItem*, QListWidgetItem*)));
52 modelList = new QListWidget(this);
53 layout->addWidget(modelList);
54 connect(modelList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
55 this, SLOT(modelItemChanged(QListWidgetItem*, QListWidgetItem*)));
57 this->setLayout(layout);
60 SettingsDlg::~SettingsDlg()
69 void SettingsDlg::beginDownload(const QString &url, QNetworkAccessManager *nam)
71 nam->get(QNetworkRequest(QUrl(url)));
74 void SettingsDlg::alphabetItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
76 QString url = settings->value("remoteUrl", "http://mercury.wipsl.com/irwi/remotes/").toString()
77 + current->text() + ".txt";
78 beginDownload(url, mfgNetAM);
81 void SettingsDlg::mfgListDownloadFinished(QNetworkReply *reply)
84 if (reply->error() == QNetworkReply::NoError) {
85 QByteArray ba = reply->readAll();
86 QBuffer buf(&ba, this);
87 buf.open(QIODevice::ReadOnly);
89 while (buf.canReadLine())
91 QString str(buf.readLine());
93 mfgList->addItem(str);
96 //qDebug() << (int)reply->error();
102 void SettingsDlg::mfgItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
104 if (mfgList->currentItem() != NULL) {
105 QString url = settings->value(
106 "remoteUrl", "http://mercury.wipsl.com/irwi/remotes/").toString()
107 + alphabetList->currentItem()->text()
108 + "/" + current->text() + ".txt";
109 beginDownload(url, modelNetAM);
113 void SettingsDlg::modelListDownloadFinished(QNetworkReply *reply)
116 if (reply->error() == QNetworkReply::NoError) {
117 QByteArray ba = reply->readAll();
118 QBuffer buf(&ba, this);
119 buf.open(QIODevice::ReadOnly);
121 while (buf.canReadLine())
123 QString str(buf.readLine());
125 modelList->addItem(str);
128 //qDebug() << (int)reply->error();
131 reply->deleteLater();
134 void SettingsDlg::modelItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
138 if (!current->text().isEmpty()) {
139 QString url = settings->value(
140 "remoteUrl", "http://mercury.wipsl.com/irwi/remotes/").toString()
141 + alphabetList->currentItem()->text()
142 + "/" + mfgList->currentItem()->text()
143 + "/" + current->text();
144 beginDownload(url, remoteNetAM);
145 settings->setValue("remoteName", current->text());
150 void SettingsDlg::remoteDownloadFinished(QNetworkReply *reply)
152 if (reply->error() == QNetworkReply::NoError) {
153 QFile file("/etc/lircd.conf");
154 if(file.open(QIODevice::WriteOnly))
156 file.write(reply->readAll());
161 reply->deleteLater();
163 system("lircctl restart");