Complete rewrite. Does not work yet.
[irwi] / src / selectremotedlg.cpp
1 #include "selectremotedlg.h"
2
3 #include "remotedbparser.h"
4 #include "model.h"
5 #include "iengine.h"
6
7 #include <cstdlib>
8
9 #include <QDebug>
10 #include <QHBoxLayout>
11 #include <QLabel>
12 #include <QString>
13 #include <QListWidget>
14 #include <QListWidgetItem>
15 #include <QSettings>
16 #include <QtNetwork/QNetworkAccessManager>
17 #include <QtNetwork/QNetworkReply>
18 #include <QBuffer>
19 #include <QByteArray>
20 #include <QFile>
21 #include <QMap>
22 #include <QList>
23 #include <QMessageBox>
24 #include <QPushButton>
25 #include <QListWidgetItem>
26 #include <QDomDocument>
27
28 SelectRemoteDlg::SelectRemoteDlg(QWidget *parent, IEngine *engine)
29     : QDialog(parent)
30 {
31 //    this->setWindowTitle(tr("Select remote"));
32 //    this->setMinimumHeight(320);
33 //
34 //    deviceNameMap = new QMap<QString, QString>();
35 //    settings = new QSettings(this);
36 //    remoteList = NULL;
37 //
38 //    layout = new QHBoxLayout(this);
39 //
40 //    alphabetList = new QListWidget(this);
41 //    alphabetList->setMaximumWidth(96);
42 //    layout->addWidget(alphabetList);
43 //    connect(alphabetList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
44 //                this, SLOT(alphabetItemChanged(QListWidgetItem*, QListWidgetItem*)));
45 //    
46 //    mfgList = new QListWidget(this);
47 //    layout->addWidget(mfgList);
48 //    connect(mfgList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
49 //                this, SLOT(mfgItemChanged(QListWidgetItem*, QListWidgetItem*)));
50 //
51 //    modelList = new QListWidget(this);
52 //    layout->addWidget(modelList);
53 //
54 //    downloadBtn = new QPushButton(tr("Download"), this);
55 //    layout->addWidget(downloadBtn);
56 //    connect(downloadBtn, SIGNAL(clicked()), 
57 //            this, SLOT(downloadRemote()));
58 //
59 //    this->setLayout(layout);
60 //
61 //    //TODO caching?
62 //    listNetAM = new QNetworkAccessManager(this);
63 //    connect(listNetAM, SIGNAL(finished(QNetworkReply*)), 
64 //            this,  SLOT(listDownloadFinished(QNetworkReply*)));
65 //
66 //    remoteNetAM = new QNetworkAccessManager(this);
67 //    connect(remoteNetAM, SIGNAL(finished(QNetworkReply*)), 
68 //            this,  SLOT(remoteDownloadFinished(QNetworkReply*)));
69 //    beginDownload(settings->value("dbUrl", 
70 //                "http://mercury.wipsl.com/irwi/db.xml").toString(), listNetAM); 
71 }
72
73
74 SelectRemoteDlg::~SelectRemoteDlg()
75 {
76 //    delete layout;
77 //    delete settings;
78 //    delete listNetAM;
79 //    delete remoteNetAM;
80 //    delete deviceNameMap;
81 //    if (remoteList)
82 //    {
83 //        delete remoteList;
84 //    }
85 }
86
87 void SelectRemoteDlg::setBusy(bool busy)
88 {
89 //    setAttribute(Qt::WA_Maemo5ShowProgressIndicator, busy);
90 //    setEnabled(!busy);
91 }
92
93 void SelectRemoteDlg::beginDownload(const QString &url,
94                                     QNetworkAccessManager *nam)
95 {
96     nam->get(QNetworkRequest(QUrl(url)));
97     setBusy(true);
98 }
99
100 void SelectRemoteDlg::alphabetItemChanged(QListWidgetItem *current,
101                                       QListWidgetItem * /*previous*/)
102 {
103 //    mfgList->clear();
104 //    modelList->clear();
105 //    if (current)
106 //    {
107 //        mfgList->addItems(remoteList->manufacturers(current->text()));
108 //    }
109 }
110
111 void SelectRemoteDlg::listDownloadFinished(QNetworkReply *reply)
112 {
113 //    if (reply->error() == QNetworkReply::NoError) {
114 //        QByteArray ba = reply->readAll();
115 //        QBuffer buf(&ba, this);
116 //        buf.open(QIODevice::ReadOnly);
117 //        buf.seek(0);
118 //        QDomDocument doc;
119 //        doc.setContent(&buf);
120 //        remoteList = new RemoteList(doc);
121 //        QStringList alist = remoteList->letters();
122 //        for (int i = 0; i < alist.size(); ++i)
123 //        {
124 //            alphabetList->addItem(QString(alist[i]));
125 //        }
126 //    } else {
127 //        //qDebug() << (int)reply->error();
128 //    }
129 //    reply->close();
130 //    reply->deleteLater();
131 //    setBusy(false);
132 }
133
134 void SelectRemoteDlg::mfgItemChanged(QListWidgetItem *current,
135                                      QListWidgetItem * /*previous*/)
136 {
137 //    modelList->clear();
138 //    deviceNameMap->clear();
139 //    if (current)
140 //    {
141 //        QList<Model> models = remoteList->models(current->text());
142 //        for (int i = 0; i < models.size(); ++i)
143 //        {
144 //            modelList->addItem(models[i].name);
145 //            deviceNameMap->insert(models[i].name, models[i].file);
146 //        }
147 //
148 //    }
149 }
150
151 void SelectRemoteDlg::downloadRemote()
152 {
153 //    QListWidgetItem *currentModel = modelList->currentItem();
154 //    if (currentModel)
155 //    {
156 //        QString name = currentModel->text();
157 //        if (!name.isEmpty()) {
158 //            QString url = settings->value(
159 //                    "remoteUrl",
160 //                    "http://mercury.wipsl.com/irwi/uploaded/").toString() 
161 //                    + (*deviceNameMap)[name];
162 //            beginDownload(url, remoteNetAM);
163 //            settings->setValue("remoteName", name);
164 //        }
165 //    }
166 }
167
168 void SelectRemoteDlg::remoteDownloadFinished(QNetworkReply *reply)
169 {
170 //    if (reply->error() == QNetworkReply::NoError) {
171 //        QFile file(settings->value("lircConf", "/etc/lircd.conf").toString());
172 //        if(file.open(QIODevice::WriteOnly))
173 //        {
174 //            file.write(reply->readAll());
175 //            file.close();
176 //        }
177 //    }
178 //    reply->close();
179 //    reply->deleteLater();
180 //
181 //    std::system("sudo /etc/init.d/lirc reload");
182 //
183 //    emit remoteDownloaded();
184 //    setBusy(false);
185 //    QMessageBox mbox(QMessageBox::Information, tr("Success"),
186 //            tr("Remote downloaded"), QMessageBox::Ok, this);
187 //    mbox.exec();
188 //    this->close();
189 }
190
191