+++ /dev/null
-#include "engine.h"
-#include "remote.h"
-#include "iremote.h"
-#include "remotedbparser.h"
-#include "netio.h"
-
-#include <QDomDocument>
-
-Engine::Engine()
- : netIO(new NetIO())
- , currentRemote(NULL)
-{
-}
-
-Engine::~Engine()
-{
- delete netIO;
- if (currentRemote)
- delete currentRemote;
-}
-
-void Engine::setRemote(const QString &id)
-{
- if (currentRemote)
- delete currentRemote;
-
- currentRemote = new Remote(id, netIO);
-}
-
-RemoteDbParser Engine::availableRemotes()
-{
- // TODO download db.xml
-
- QDomDocument doc;
- return RemoteDbParser(doc);
-}
-
-IRemote *Engine::remote()
-{
- return currentRemote;
-}
-
-
-
+++ /dev/null
-#ifndef _ENGINE_H_
-#define _ENGINE_H_
-
-#include "iengine.h"
-
-class NetIO;
-class Remote;
-class IRemote;
-class RemoteDbParser;
-
-class Engine : public IEngine
-{
-public:
- Engine();
- ~Engine();
- RemoteDbParser availableRemotes();
- void setRemote(const QString &id);
- IRemote *remote();
-
-private:
- NetIO *netIO;
- Remote *currentRemote;
-};
-
-#endif // _ENGINE_H_
-
-
+++ /dev/null
-#ifndef _IENGINE_H_
-#define _IENGINE_H_
-
-#include <QString>
-
-class IRemote;
-class RemoteDbParser;
-
-class IEngine
-{
-public:
- IEngine() {}
- virtual ~IEngine() {}
- virtual RemoteDbParser availableRemotes() = 0;
- virtual void setRemote(const QString &id) = 0;
- virtual IRemote *remote() = 0;
-};
-
-#endif // _IENGINE_H_
-
+++ /dev/null
-#ifndef _IREMOTE_H_
-#define _IREMOTE_H_
-
-#include <QObject>
-
-class IRemote : public QObject
-{
- Q_OBJECT
-
-public:
- enum RemoteCmd
- {
- VOLUMEUP,
- VOLUMEDOWN,
- CHANNELUP,
- CHANNELDOWN,
- POWER,
- MUTE
- };
-
- IRemote() {}
- virtual ~IRemote() {}
-
- virtual void updateRating() = 0;
- virtual void sendRating(bool) = 0;
- virtual void sendCmd(RemoteCmd) = 0;
-
-signals:
- void ratingChanged(int rating);
-};
-
-#endif // _IREMOTE_H_
-
+++ /dev/null
-#ifndef _MODEL_H_
-#define _MODEL_H_
-
-struct Model
-{
- Model()
- {
- }
-
- Model(const QString &name, const QString &id)
- : name(name)
- , id(id)
- {
- }
-
- Model(const Model &m)
- : name(m.name)
- , id(m.id)
- {
- }
-
- QString name;
- QString id;
-};
-
-#endif // _MODEL_H_
-
+++ /dev/null
-#include <QString>
-
-#include "netio.h"
-
-NetIO::NetIO()
-{
-}
-
-NetIO::~NetIO()
-{
-}
-
-void NetIO::ratingById(const QString &id)
-{
- emit ratingDownloaded(1234);
-}
-
-
+++ /dev/null
-#ifndef _NETIO_H_
-#define _NETIO_H_
-
-#include <QObject>
-
-class QString;
-
-class NetIO : public QObject
-{
- Q_OBJECT
-
-public:
- NetIO();
- ~NetIO();
-
- void ratingById(const QString &id);
-
-signals:
- void ratingDownloaded(int);
-};
-
-#endif // _NETIO_H_
-
-#ifndef _REMOTE_H_
-#define _REMOTE_H_
-
-#include "iremote.h"
-#include "model.h"
+#ifndef REMOTE_H
+#define REMOTE_H
+#include <QObject>
#include <QString>
-class IrCtrl;
-class NetIO;
-class QSettings;
+namespace Rating {
+ typedef bool Rating;
+ Rating Up = true;
+ Rating Down = false;
+}
-class Remote : public IRemote
+class Remote
{
+ Q_OBJECT
public:
- Remote();
- Remote(const QString &id, NetIO *);
- ~Remote();
-
- const QString &id() const;
- void setId(const QString &id);
- void setNetIO(NetIO *);
-
- // visible for gui
- void updateRating();
- void sendRating(bool good);
- void sendCmd(RemoteCmd);
-
-private:
- Remote(const Remote &remote);
-
-private:
- bool rated;
- Model model;
- QSettings *settings;
- IrCtrl *irCtrl;
- NetIO *netIO;
-};
+ Remote(const QString &name);
-#endif // _REMOTE_H_
+ //getters
+ QString name() const;
+ QString mfg() const;
+ int rating() const;
+ int voteCount() const;
+public slots:
+ void saveToFile();
+ void updateInfo();
+ void sendRating(Rating::Rating);
+
+signals:
+ void infoUpdated();
+};
+#endif
--- /dev/null
+#ifndef REMOTEDB_H
+#define REMOTEDB_H
+
+#include <QList>
+#include <QMap>
+#include <QString>
+
+#include "remote.h"
+
+typedef QList <Remote> RemoteList;
+typedef QMap <QString, RemoteList> MfgMap;
+typedef QMap <QString, MfgMap> RemoteDB;
+
+#endif
+
--- /dev/null
+#ifndef REMOTEDBMGR_H
+#define REMOTEDBMGR_H
+
+#include <QObject>
+
+#include "remotedb.h"
+
+class RemoteDBMgr : QObject
+{
+ Q_OBJECT
+public:
+ RemoteDBMgr();
+ ~RemoteDBMgr();
+
+ void getDbAsync();
+
+signals:
+ void dbReady(RemoteDB*);
+};
+
+#endif
+
+++ /dev/null
-#include "remotedbparser.h"
-
-#include <QFile>
-#include <QDomElement>
-#include <QDomNodeList>
-#include <QDebug>
-
-RemoteDbParser::RemoteDbParser()
- : valid(false)
-{
-}
-
-RemoteDbParser::RemoteDbParser(const RemoteDbParser &r)
- : valid(r.valid)
- , mfgMap(r.mfgMap)
- , modelMap(r.modelMap)
-{
-}
-
-RemoteDbParser::RemoteDbParser(QDomDocument &doc)
-{
- parse(doc);
-}
-
-RemoteDbParser::~RemoteDbParser()
-{
-}
-
-void RemoteDbParser::setContent(QDomDocument &doc)
-{
- mfgMap.clear();
- modelMap.clear();
- parse(doc);
-}
-
-bool RemoteDbParser::isValid()
-{
- return valid;
-}
-
-QStringList RemoteDbParser::letters()
-{
- return mfgMap.keys();
-}
-
-QStringList RemoteDbParser::manufacturers(const QString &letter)
-{
- return mfgMap.value(letter);
-}
-
-QList<Model> RemoteDbParser::models(const QString &manufacturer)
-{
- return modelMap.value(manufacturer);
-}
-
-void RemoteDbParser::parse(QDomDocument &doc)
-{
- QDomNodeList chars = doc.elementsByTagName("char");
-
- for (int i = 0; i < chars.size(); ++i)
- {
- QDomElement charEl = chars.at(i).toElement();
- if (!charEl.isNull())
- {
- if (charEl.hasAttribute("id"))
- mfgMap.insert(charEl.attribute("id").at(0), parseMfgs(charEl));
- }
- }
-
- // TODO: more error handling
- valid = (mfgMap.size() > 0 &&
- modelMap.size() > 0);
-}
-
-QStringList RemoteDbParser::parseMfgs(QDomElement &charEl)
-{
- QStringList mfgStrings;
- QDomNodeList mfgs = charEl.elementsByTagName("mfg");
-
- for (int i = 0; i < mfgs.size(); ++i)
- {
- QDomElement mfgEl = mfgs.at(i).toElement();
- if (!mfgEl.isNull())
- {
- if (mfgEl.hasAttribute("id"))
- {
- mfgStrings.append(mfgEl.attribute("id"));
- modelMap.insert(mfgStrings.last(), parseModels(mfgEl));
- }
- }
- }
- return mfgStrings;
-}
-
-QList<Model> RemoteDbParser::parseModels(QDomElement &mfgEl)
-{
- QList<Model> modelList;
- QDomNodeList models = mfgEl.elementsByTagName("model");
-
- for (int i = 0; i < models.size(); ++i)
- {
- QDomElement modelEl = models.at(i).toElement();
- if (!modelEl.isNull())
- {
- if (modelEl.hasAttribute("name") && modelEl.hasAttribute("id"))
- {
- modelList.append(Model(modelEl.attribute("name"),
- modelEl.attribute("id")));
- }
- }
- }
- return modelList;
-}
-
+++ /dev/null
-#ifndef _REMOTEDBPARSER_H_
-#define _REMOTEDBPARSER_H_
-
-#include <QDomDocument>
-#include <QStringList>
-#include <QMap>
-#include <QList>
-#include "model.h"
-
-class RemoteDbParser
-{
-public:
- RemoteDbParser();
- RemoteDbParser(const RemoteDbParser &);
- RemoteDbParser(QDomDocument &);
- ~RemoteDbParser();
-
- void setContent(QDomDocument &);
-
- // Returns false if document is not set or it's invalid
- bool isValid();
-
- QStringList letters();
- QStringList manufacturers(const QString &letter);
- QList<Model> models(const QString &manufacturer);
-
-private:
- void parse(QDomDocument &doc);
- QStringList parseMfgs(QDomElement &charEl);
- QList<Model> parseModels(QDomElement &mfgEl);
-
-private:
- bool valid;
- QMap<QString, QStringList> mfgMap;
- QMap<QString, QList<Model> > modelMap;
-};
-
-#endif // _REMOTEDBPARSER_H_
-
-
--- /dev/null
+#ifndef REMOTELISTWIDGETITEM_H
+#define REMOTELISTWIDGETITEM_H
+
+#include <QListWidgetItem>
+#include <QVariant>
+#include <QWidget>
+
+#include "remote.h"
+
+class RemoteListWidgetItem : public QListWidgetItem
+{
+public:
+ RemoteListWidgetItem(Remote remote, QWidget *parent = 0);
+ Remote getRemote();
+
+ //overrides QListWidgetItem::data
+ QVariant data(int role) const;
+
+private:
+ Remote remote;
+};
+
+#endif
+