Opens and rewinds buffer
[irwi] / src / settingsdlg.cpp
1 #include "settingsdlg.h"
2
3 #include <QHBoxLayout>
4 #include <QLabel>
5 #include <QString>
6 #include <QListWidget>
7 #include <QListWidgetItem>
8 #include <QSettings>
9 #include <QtNetwork/QNetworkAccessManager>
10 #include <QtNetwork/QNetworkReply>
11 #include <QBuffer>
12 #include <QByteArray>
13
14 SettingsDlg::SettingsDlg(QWidget *parent)
15     : QDialog(parent)
16 {
17     this->setWindowTitle(tr("Settings"));
18
19     //TODO caching?
20     netAM = new QNetworkAccessManager(this);
21     
22     settings = new QSettings(this);
23
24     layout = new QHBoxLayout(this);
25
26     alphabetList = new QListWidget(this);
27     for (char c = 'a'; c <= 'z'; ++c)
28     {
29         alphabetList->addItem(QString(c));
30     }
31     layout->addWidget(alphabetList);
32     connect(alphabetList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
33                 this, SLOT(alphabetItemChanged(QListWidgetItem*, QListWidgetItem*)));
34     
35     mfgList = new QListWidget(this);
36     layout->addWidget(mfgList);
37     connect(mfgList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
38                 this, SLOT(mfgItemChanged(QListWidgetItem*, QListWidgetItem*)));
39
40     modelList = new QListWidget(this);
41     layout->addWidget(modelList);
42     connect(modelList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
43                 this, SLOT(modelItemChanged(QListWidgetItem*, QListWidgetItem*)));
44
45     this->setLayout(layout);
46 }
47
48 SettingsDlg::~SettingsDlg()
49 {
50     delete layout;
51     delete settings;
52     delete netAM;
53 }
54
55 void SettingsDlg::alphabetItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
56 {
57     QNetworkReply* reply = netAM->get(
58         QNetworkRequest(
59             QUrl(
60                 settings->value(
61                     "remoteUrl",
62                     "http://mercury.wipsl.com/irwi/remotes/"
63                 ).toString() + current->text() + ".txt"
64             )
65         )
66     );
67     connect(netAM, SIGNAL(finished(QNetworkReply*)), 
68             this,  SLOT(mfgListDownloadFinished(QNetworkReply*)));
69 }
70 #include <QDebug>
71
72 void SettingsDlg::mfgListDownloadFinished(QNetworkReply *reply)
73 {
74     mfgList->clear();
75     QByteArray ba = reply->readAll();
76     QBuffer buf(&ba, this);
77     buf.open(QIODevice::ReadOnly);
78     buf.seek(0);
79     qDebug() << buf.canReadLine();
80     while (buf.canReadLine())
81     {
82         QString str(buf.readLine());
83         qDebug() << str;
84         mfgList->addItem(str);
85     }
86     reply->deleteLater();
87 }
88
89 void SettingsDlg::mfgItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
90 {
91 }
92
93 void SettingsDlg::modelItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
94 {
95     if (current)
96     {
97         settings->setValue("remoteName", current->text());
98         //TODO save remote from server to /etc/lircd.conf
99         //maybe lirc needs restart after that?
100     }
101 }
102