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