#include <QNetworkRequest>
#include <QBuffer>
#include <QByteArray>
-#include <QDebug>
RemoteDBMgr::RemoteDBMgr()
{
connect(&netAM, SIGNAL(finished(QNetworkReply *)),
- this, SLOT(dbDownloadFinished(QNetworkReply *)));
+ this, SLOT(dbDownloadFinished(QNetworkReply *)));
}
RemoteDBMgr::~RemoteDBMgr()
{
+ foreach(MfgMap mfgMap, db.values()) {
+ foreach(RemoteList list, mfgMap.values()) {
+ qDeleteAll(list);
+ }
+ }
}
void RemoteDBMgr::getDBAsync()
{
- if (db.isEmpty()) {
+ if (db.isEmpty() && !processing) {
QSettings settings(this);
- netAM.get(QNetworkRequest(QUrl(settings.value("dbUrl",
- "http://mercury.wipsl.com/irwi/db/db.xml").toString())));
+ netAM.get(QNetworkRequest(QUrl(settings.value("baseUrl",
+ "http://mercury.wipsl.com/irwi/").toString() + "db/db.xml")));
} else {
emit dbReady(&db);
}
void RemoteDBMgr::dbDownloadFinished(QNetworkReply *reply)
{
- if (reply->error() == QNetworkReply::NoError) {
+ if (processing = (reply->error() == QNetworkReply::NoError)) {
QByteArray ba = reply->readAll();
QBuffer buf(&ba);
buf.open(QIODevice::ReadOnly);
if (!db.isEmpty()) {
emit dbReady(&db);
}
+ } else {
+ emit downloadFailed(reply->error());
}
+
+ processing = false;
}
void RemoteDBMgr::parse(QDomDocument &doc)
for (int i = 0; i < models.size(); ++i) {
QDomElement modelEl = models.at(i).toElement();
if (!modelEl.isNull()) {
- if (modelEl.hasAttribute("id")
- && modelEl.hasAttribute("name")
+ if (modelEl.hasAttribute("name")
&& modelEl.hasAttribute("rating")
&& modelEl.hasAttribute("vote_count")) {
- remotes << Remote(modelEl.attribute("name"),
- modelEl.attribute("id"),
- modelEl.attribute("rating").toInt(),
- modelEl.attribute("vote_count").toInt());
+ remotes << new Remote(modelEl.attribute("name"),
+ mfgEl.attribute("id"),
+ modelEl.attribute("rating").toInt(),
+ modelEl.attribute("vote_count").toInt());
}
}
}