1 #include "remotedbparser.h"
5 #include <QDomNodeList>
8 RemoteDbParser::RemoteDbParser()
13 RemoteDbParser::RemoteDbParser(const RemoteDbParser &r)
16 , modelMap(r.modelMap)
20 RemoteDbParser::RemoteDbParser(QDomDocument &doc)
25 RemoteDbParser::~RemoteDbParser()
29 void RemoteDbParser::setContent(QDomDocument &doc)
36 bool RemoteDbParser::isValid()
41 QStringList RemoteDbParser::letters()
46 QStringList RemoteDbParser::manufacturers(const QString &letter)
48 return mfgMap.value(letter);
51 QList<Model> RemoteDbParser::models(const QString &manufacturer)
53 return modelMap.value(manufacturer);
56 void RemoteDbParser::parse(QDomDocument &doc)
58 QDomNodeList chars = doc.elementsByTagName("char");
60 for (int i = 0; i < chars.size(); ++i)
62 QDomElement charEl = chars.at(i).toElement();
65 if (charEl.hasAttribute("id"))
66 mfgMap.insert(charEl.attribute("id").at(0), parseMfgs(charEl));
70 // TODO: more error handling
71 valid = (mfgMap.size() > 0 &&
75 QStringList RemoteDbParser::parseMfgs(QDomElement &charEl)
77 QStringList mfgStrings;
78 QDomNodeList mfgs = charEl.elementsByTagName("mfg");
80 for (int i = 0; i < mfgs.size(); ++i)
82 QDomElement mfgEl = mfgs.at(i).toElement();
85 if (mfgEl.hasAttribute("id"))
87 mfgStrings.append(mfgEl.attribute("id"));
88 modelMap.insert(mfgStrings.last(), parseModels(mfgEl));
95 QList<Model> RemoteDbParser::parseModels(QDomElement &mfgEl)
97 QList<Model> modelList;
98 QDomNodeList models = mfgEl.elementsByTagName("model");
100 for (int i = 0; i < models.size(); ++i)
102 QDomElement modelEl = models.at(i).toElement();
103 if (!modelEl.isNull())
105 if (modelEl.hasAttribute("name") && modelEl.hasAttribute("id"))
107 modelList.append(Model(modelEl.attribute("name"),
108 modelEl.attribute("id")));