#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);
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)
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?
+ }
}
class QHBoxLayout;
class QListWidget;
class QListWidgetItem;
+class QSettings;
+class QNetworkAccessManager;
+class QNetworkReply;
class SettingsDlg : public QDialog
{
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