--- /dev/null
+#include "rating.h"
+
+namespace Rating {
+ Rating Up = true;
+ Rating Down = false;
+}
--- /dev/null
+#ifndef RATING_H
+#define RATING_H
+
+namespace Rating {
+ typedef bool Rating;
+ extern Rating Up;
+ extern Rating Down;
+}
+
+#endif
+
#include <cstdlib>
#include <QString>
-#include <QSettings>
#include <QFile>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
init();
}
+Remote::Remote(const Remote &r)
+ : m_name(r.m_name)
+ , m_mfg(r.m_mfg)
+ , m_rating(r.m_rating)
+ , m_voteCount(r.m_voteCount)
+{
+ init();
+}
+
+Remote &Remote::operator=(const Remote &other)
+{
+ if (this != &other) {
+ m_name = other.m_name;
+ m_mfg = other.m_mfg;
+ m_rating = other.m_rating;
+ m_voteCount = other.m_voteCount;
+ }
+ return *this;
+}
+
void Remote::init()
{
connect(&m_remoteNAM, SIGNAL(finished(QNetworkReply*)),
void Remote::saveToFile()
{
- QSettings settings;
if (!m_name.isEmpty()) {
- QString url = settings.value("remoteUrl",
+ QString url = m_settings.value("remoteUrl",
"http://mercury.wipsl.com/irwi/uploaded/").toString()
+ m_name;
m_remoteNAM.get(QNetworkRequest(QUrl(url)));
- settings.setValue("remoteName", m_name);
+ m_settings.setValue("remoteName", m_name);
}
}
void Remote::updateInfo()
{
- QSettings settings;
if (!m_name.isEmpty()) {
- QString url = settings.value("baseUrl",
+ QString url = m_settings.value("baseUrl",
"http://mercury.wipsl.com/irwi/").toString()
+ "vote/get?name="
+ m_name;
void Remote::sendRating(Rating::Rating r)
{
- QSettings settings;
if (m_name != "") {
m_ratingNAM.get(QNetworkRequest(QUrl(
- settings.value("baseUrl",
+ m_settings.value("baseUrl",
"http://mercury.wipsl.com/irwi/db.xml").toString()
+ "vote/"
+ ((r == Rating::Up) ? "up" : "down")
void Remote::remoteDownloadFinished(QNetworkReply *reply)
{
if (reply->error() == QNetworkReply::NoError) {
- QFile file(settings->value("lircConf", "/etc/lircd.conf").toString());
+ QFile file(m_settings.value("lircConf", "/etc/lircd.conf").toString());
if(file.open(QIODevice::WriteOnly))
{
file.write(reply->readAll());
void Remote::infoRequestFinished(QNetworkReply *reply)
{
if (reply->error() == QNetworkReply::NoError) {
- m_rating = QString(reply->readline(20)).toInt();
- m_voteCount = QString(reply->readline(20)).toInt();
+ m_rating = QString(reply->readLine(20)).toInt();
+ m_voteCount = QString(reply->readLine(20)).toInt();
}
reply->close();
reply->deleteLater();
#include <QString>
#include <QNetworkReply>
#include <QNetworkAccessManager>
+#include <QSettings>
-namespace Rating {
- typedef bool Rating;
- Rating Up = true;
- Rating Down = false;
-}
+#include "rating.h"
class Remote : public QObject
{
Remote(const QString &name);
Remote(const QString &name, const QString &mfg,
int rating, int voteCount);
+ Remote(const Remote &);
+ Remote &operator=(const Remote &);
//getters
QString name() const { return m_name; }
int m_rating;
int m_voteCount;
+ QSettings m_settings;
QNetworkAccessManager m_infoNAM;
QNetworkAccessManager m_remoteNAM;
QNetworkAccessManager m_ratingNAM;
void init();
-
void remoteDownloadFinished(QNetworkReply *reply);
void infoRequestFinished(QNetworkReply *reply);
};
#include <QNetworkReply>
#include <QUrl>
#include <QNetworkRequest>
+#include <QBuffer>
+#include <QByteArray>
RemoteDBMgr::RemoteDBMgr()
{
- connect(netAM, SIGNAL(finished(QNetworkReply *)),
+ connect(&netAM, SIGNAL(finished(QNetworkReply *)),
this, SLOT(dbDownloadFinished(QNetworkReply *)));
}
#include <QNetworkAccessManager>
#include "remotedb.h"
+class QDomDocument;
+class QDomElement;
+
class RemoteDBMgr : public QObject
{
Q_OBJECT
signals:
void dbReady(RemoteDB *);
+private slots:
+ void dbDownloadFinished(QNetworkReply *reply);
+
private:
+ void parse(QDomDocument &doc);
+ MfgMap parseMfgMap(QDomElement &charEl);
+ RemoteList parseRemotes(QDomElement &mfgEl);
+
RemoteDB db;
QNetworkAccessManager netAM;
+
};
#endif
+
+#include <QListWidget>
#include "remotelistwidgetitem.h"
-RemoteListWidgetItem::RemoteListWidgetItem(Remote remote, QWidget *parent = 0)
- : m_remote(remote), QListWidgetItem(parent, 1337)
+RemoteListWidgetItem::RemoteListWidgetItem(Remote remote, QListWidget *parent)
+ : QListWidgetItem(parent, 1337), m_remote(remote)
{
}
//overrides QListWidgetItem::data
QVariant RemoteListWidgetItem::data(int role) const
{
- QString str = remote.name() + remote.rating();
+ QString str = m_remote.name() + m_remote.rating();
switch (role) {
case Qt::DecorationRole:
return QVariant();
#include "remote.h"
+class QListWidget;
+
class RemoteListWidgetItem : public QListWidgetItem
{
public:
- RemoteListWidgetItem(Remote remote, QWidget *parent = 0);
+ RemoteListWidgetItem(Remote remote, QListWidget *parent = 0);
Remote remote() const { return m_remote; }
//overrides QListWidgetItem::data
#include "selectremotedlg.h"
#include "remote.h"
+#include "remotelistwidgetitem.h"
#include <QHBoxLayout>
#include <QLabel>
alphabetList = new QListWidget(this);
alphabetList->setMaximumWidth(96);
layout->addWidget(alphabetList);
- connect(alphabetList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
- this, SLOT(alphabetItemChanged(QListWidgetItem*, QListWidgetItem*)));
+ 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*)));
+ connect(mfgList,
+ SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
+ this,
+ SLOT(mfgItemChanged(QListWidgetItem*, QListWidgetItem*)));
modelList = new QListWidget(this);
layout->addWidget(modelList);
this, SLOT(downloadRemote()));
this->setLayout(layout);
- connect(&remoteDbMgr, SIGNAL(RemoteDBMgr::dbReady(RemoteDB*)),
- this, SLOT(setDb(RemoteDB*)));
- remoteDbMgr.getDbAsync();
+ connect(&remoteDBMgr, SIGNAL(RemoteDBMgr::dbReady(RemoteDB*)),
+ this, SLOT(setDB(RemoteDB*)));
+ remoteDBMgr.getDBAsync();
setBusy(true);
}
delete layout;
}
-SelectRemoteDlg::setDb(RemoteDB *db)
+void SelectRemoteDlg::setDB(RemoteDB *db)
{
- remoteDb = db;
+ remoteDB = db;
setBusy(false);
}
modelList->clear();
if (current)
{
- mfgList->addItems(remoteDb[current->text()].keys());
+ mfgList->addItems((*remoteDB)[current->text()].keys());
}
}
if (current)
{
QList <Remote> remotes =
- remoteDb[alphabetList->currentItem()->text()][current->text()];
+ (*remoteDB)[alphabetList->currentItem()->text()][current->text()];
foreach(Remote remote, remotes) {
- modelList.addItem(RemoteListWidgetItem(remote));
+ modelList->addItem(new RemoteListWidgetItem(remote));
}
}
}
void SelectRemoteDlg::downloadRemote()
{
- RemoteListWidgetItem *currentModel = modelList->currentItem();
+ RemoteListWidgetItem *currentModel = static_cast<RemoteListWidgetItem *>(modelList->currentItem());
if (currentModel)
{
- currentModel->remote().saveFile();
+ currentModel->remote().saveToFile();
}
}
class QWidget;
class QPushButton;
class QLabel;
-class RemoteList;
class SelectRemoteDlg : public QDialog
{
QListWidgetItem *previous);
void mfgItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
void downloadRemote();
+ void setDB(RemoteDB *db);
private:
QLabel *remoteNameLabel;
QListWidget *mfgList;
QListWidget *modelList;
QPushButton *downloadBtn;
- RemoteDBMgr remoteDbMgr;
- RemoteDB *remoteDb;
+ RemoteDBMgr remoteDBMgr;
+ RemoteDB *remoteDB;
void setBusy(bool busy = true);
};
TEMPLATE = app
TARGET = irwi
+SOURCES += rating.cpp
SOURCES += settingsdlg.cpp
SOURCES += main.cpp
SOURCES += mainwidget.cpp
SOURCES += irctrl.cpp
SOURCES += remote.cpp
+SOURCES += remotedbmgr.cpp
SOURCES += selectremotedlg.cpp
SOURCES += advsettingsdlg.cpp
SOURCES += settingstable.cpp
SOURCES += aboutdlg.cpp
+SOURCES += remotelistwidgetitem.cpp
+HEADERS += rating.h
HEADERS += settingsdlg.h
HEADERS += mainwidget.h
HEADERS += irctrl.h
HEADERS += remote.h
+HEADERS += remotedbmgr.h
HEADERS += selectremotedlg.h
HEADERS += advsettingsdlg.h
HEADERS += settingstable.h
HEADERS += aboutdlg.h
+HEADERS += remotelistwidgetitem.h
include(qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.pri)