1 #include "remotedbmgr.h"
5 #include <QDomNodeList>
7 #include <QNetworkReply>
9 #include <QNetworkRequest>
14 RemoteDBMgr::RemoteDBMgr()
16 connect(&netAM, SIGNAL(finished(QNetworkReply *)),
17 this, SLOT(dbDownloadFinished(QNetworkReply *)));
20 RemoteDBMgr::~RemoteDBMgr()
24 void RemoteDBMgr::getDBAsync()
27 QSettings settings(this);
28 netAM.get(QNetworkRequest(QUrl(settings.value("dbUrl",
29 "http://mercury.wipsl.com/irwi/db/db.xml").toString())));
36 void RemoteDBMgr::dbDownloadFinished(QNetworkReply *reply)
38 if (reply->error() == QNetworkReply::NoError) {
39 QByteArray ba = reply->readAll();
41 buf.open(QIODevice::ReadOnly);
53 void RemoteDBMgr::parse(QDomDocument &doc)
55 QDomNodeList chars = doc.elementsByTagName("char");
57 for (int i = 0; i < chars.size(); ++i) {
58 QDomElement charEl = chars.at(i).toElement();
59 if (!charEl.isNull()) {
60 if (charEl.hasAttribute("id"))
61 db.insert(charEl.attribute("id"), parseMfgMap(charEl));
66 MfgMap RemoteDBMgr::parseMfgMap(QDomElement &charEl)
69 QDomNodeList mfgs = charEl.elementsByTagName("mfg");
71 for (int i = 0; i < mfgs.size(); ++i) {
72 QDomElement mfgEl = mfgs.at(i).toElement();
73 if (!mfgEl.isNull()) {
74 if (mfgEl.hasAttribute("id")) {
75 mfgMap.insert(mfgEl.attribute("id"), parseRemotes(mfgEl));
82 RemoteList RemoteDBMgr::parseRemotes(QDomElement &mfgEl)
85 QDomNodeList models = mfgEl.elementsByTagName("model");
87 for (int i = 0; i < models.size(); ++i) {
88 QDomElement modelEl = models.at(i).toElement();
89 if (!modelEl.isNull()) {
90 if (modelEl.hasAttribute("id")
91 && modelEl.hasAttribute("name")
92 && modelEl.hasAttribute("rating")
93 && modelEl.hasAttribute("vote_count")) {
94 remotes << Remote(modelEl.attribute("name"),
95 modelEl.attribute("id"),
96 modelEl.attribute("rating").toInt(),
97 modelEl.attribute("vote_count").toInt());