From 0a01fd912bff0e58e989dc0d8e55ba7bd3773970 Mon Sep 17 00:00:00 2001 From: Torste Aikio Date: Fri, 18 Jun 2010 13:52:19 +0300 Subject: [PATCH] New architecture --- src/selectremotedlg.cpp | 197 ++++++++++++----------------------------------- src/selectremotedlg.h | 16 +--- 2 files changed, 51 insertions(+), 162 deletions(-) diff --git a/src/selectremotedlg.cpp b/src/selectremotedlg.cpp index 5354930..e1330f7 100644 --- a/src/selectremotedlg.cpp +++ b/src/selectremotedlg.cpp @@ -1,190 +1,91 @@ #include "selectremotedlg.h" -#include "remotedbparser.h" -#include "model.h" +#include "remote.h" -#include - -#include #include #include #include #include #include #include -#include -#include -#include -#include -#include #include #include #include #include -#include -#include SelectRemoteDlg::SelectRemoteDlg(QWidget *parent) : QDialog(parent) { -// this->setWindowTitle(tr("Select remote")); -// this->setMinimumHeight(320); -// -// deviceNameMap = new QMap(); -// settings = new QSettings(this); -// remoteList = NULL; -// -// layout = new QHBoxLayout(this); -// -// alphabetList = new QListWidget(this); -// alphabetList->setMaximumWidth(96); -// layout->addWidget(alphabetList); -// connect(alphabetList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), -// this, SLOT(alphabetItemChanged(QListWidgetItem*, QListWidgetItem*))); -// -// mfgList = new QListWidget(this); -// layout->addWidget(mfgList); -// connect(mfgList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), -// this, SLOT(mfgItemChanged(QListWidgetItem*, QListWidgetItem*))); -// -// modelList = new QListWidget(this); -// layout->addWidget(modelList); -// -// downloadBtn = new QPushButton(tr("Download"), this); -// layout->addWidget(downloadBtn); -// connect(downloadBtn, SIGNAL(clicked()), -// this, SLOT(downloadRemote())); -// -// this->setLayout(layout); -// -// //TODO caching? -// listNetAM = new QNetworkAccessManager(this); -// connect(listNetAM, SIGNAL(finished(QNetworkReply*)), -// this, SLOT(listDownloadFinished(QNetworkReply*))); -// -// remoteNetAM = new QNetworkAccessManager(this); -// connect(remoteNetAM, SIGNAL(finished(QNetworkReply*)), -// this, SLOT(remoteDownloadFinished(QNetworkReply*))); -// beginDownload(settings->value("dbUrl", -// "http://mercury.wipsl.com/irwi/db.xml").toString(), listNetAM); + this->setWindowTitle(tr("Select remote")); + this->setMinimumHeight(320); + + layout = new QHBoxLayout(this); + + alphabetList = new QListWidget(this); + alphabetList->setMaximumWidth(96); + layout->addWidget(alphabetList); + connect(alphabetList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), + this, SLOT(alphabetItemChanged(QListWidgetItem*, QListWidgetItem*))); + + mfgList = new QListWidget(this); + layout->addWidget(mfgList); + connect(mfgList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), + this, SLOT(mfgItemChanged(QListWidgetItem*, QListWidgetItem*))); + + modelList = new QListWidget(this); + layout->addWidget(modelList); + + downloadBtn = new QPushButton(tr("Download"), this); + layout->addWidget(downloadBtn); + connect(downloadBtn, SIGNAL(clicked()), + this, SLOT(downloadRemote())); + + this->setLayout(layout); } SelectRemoteDlg::~SelectRemoteDlg() { -// delete layout; -// delete settings; -// delete listNetAM; -// delete remoteNetAM; -// delete deviceNameMap; -// if (remoteList) -// { -// delete remoteList; -// } + delete layout; } void SelectRemoteDlg::setBusy(bool busy) { -// setAttribute(Qt::WA_Maemo5ShowProgressIndicator, busy); -// setEnabled(!busy); -} - -void SelectRemoteDlg::beginDownload(const QString &url, - QNetworkAccessManager *nam) -{ - nam->get(QNetworkRequest(QUrl(url))); - setBusy(true); + setAttribute(Qt::WA_Maemo5ShowProgressIndicator, busy); + setEnabled(!busy); } void SelectRemoteDlg::alphabetItemChanged(QListWidgetItem *current, QListWidgetItem * /*previous*/) { -// mfgList->clear(); -// modelList->clear(); -// if (current) -// { -// mfgList->addItems(remoteList->manufacturers(current->text())); -// } -} - -void SelectRemoteDlg::listDownloadFinished(QNetworkReply *reply) -{ -// if (reply->error() == QNetworkReply::NoError) { -// QByteArray ba = reply->readAll(); -// QBuffer buf(&ba, this); -// buf.open(QIODevice::ReadOnly); -// buf.seek(0); -// QDomDocument doc; -// doc.setContent(&buf); -// remoteList = new RemoteList(doc); -// QStringList alist = remoteList->letters(); -// for (int i = 0; i < alist.size(); ++i) -// { -// alphabetList->addItem(QString(alist[i])); -// } -// } else { -// //qDebug() << (int)reply->error(); -// } -// reply->close(); -// reply->deleteLater(); -// setBusy(false); + mfgList->clear(); + modelList->clear(); + if (current) + { + mfgList->addItems(remoteDb[current->text()].keys()); + } } void SelectRemoteDlg::mfgItemChanged(QListWidgetItem *current, QListWidgetItem * /*previous*/) { -// modelList->clear(); -// deviceNameMap->clear(); -// if (current) -// { -// QList models = remoteList->models(current->text()); -// for (int i = 0; i < models.size(); ++i) -// { -// modelList->addItem(models[i].name); -// deviceNameMap->insert(models[i].name, models[i].file); -// } -// -// } + modelList->clear(); + if (current) + { + QList remotes = + remoteDb[alphabetList->currentItem()->text()][current->text()]; + foreach(Remote remote, remotes) { + modelList.addItem(RemoteListWidgetItem(remote)); + } + } } void SelectRemoteDlg::downloadRemote() { -// QListWidgetItem *currentModel = modelList->currentItem(); -// if (currentModel) -// { -// QString name = currentModel->text(); -// if (!name.isEmpty()) { -// QString url = settings->value( -// "remoteUrl", -// "http://mercury.wipsl.com/irwi/uploaded/").toString() -// + (*deviceNameMap)[name]; -// beginDownload(url, remoteNetAM); -// settings->setValue("remoteName", name); -// } -// } + RemoteListWidgetItem *currentModel = modelList->currentItem(); + if (currentModel) + { + currentModel->remote().saveFile(); + } } -void SelectRemoteDlg::remoteDownloadFinished(QNetworkReply *reply) -{ -// if (reply->error() == QNetworkReply::NoError) { -// QFile file(settings->value("lircConf", "/etc/lircd.conf").toString()); -// if(file.open(QIODevice::WriteOnly)) -// { -// file.write(reply->readAll()); -// file.close(); -// } -// } -// reply->close(); -// reply->deleteLater(); -// -// std::system("sudo /etc/init.d/lirc reload"); -// -// emit remoteDownloaded(); -// setBusy(false); -// QMessageBox mbox(QMessageBox::Information, tr("Success"), -// tr("Remote downloaded"), QMessageBox::Ok, this); -// mbox.exec(); -// this->close(); -} - - diff --git a/src/selectremotedlg.h b/src/selectremotedlg.h index c3118dc..5cf42c3 100644 --- a/src/selectremotedlg.h +++ b/src/selectremotedlg.h @@ -5,6 +5,8 @@ #include #include +#include "remotedb.h" + class QHBoxLayout; class QListWidget; class QListWidgetItem; @@ -24,34 +26,20 @@ public: SelectRemoteDlg(QWidget *parent); ~SelectRemoteDlg(); -signals: - void remoteDownloaded(); - private slots: void alphabetItemChanged(QListWidgetItem *current, QListWidgetItem *previous); - void mfgItemChanged(QListWidgetItem *current, QListWidgetItem *previous); - void listDownloadFinished(QNetworkReply *reply); - void downloadRemote(); - void remoteDownloadFinished(QNetworkReply *reply); private: QHBoxLayout *layout; QListWidget *alphabetList; QListWidget *mfgList; QListWidget *modelList; - QSettings *settings; - QNetworkAccessManager *listNetAM; - QNetworkAccessManager *remoteNetAM; - QMap *deviceNameMap; QPushButton *downloadBtn; QLabel *remoteNameLabel; - RemoteList *remoteList; - - void beginDownload(const QString &url, QNetworkAccessManager *nam); void setBusy(bool busy = true); }; -- 1.7.9.5