1 #include "remotelist.h"
4 #include <QDomNodeList>
7 RemoteList::RemoteList()
12 RemoteList::RemoteList(const RemoteList &r)
15 , modelMap(r.modelMap)
19 RemoteList::RemoteList(QDomDocument &doc)
24 RemoteList::RemoteList(const QString &xmlFile)
29 RemoteList::~RemoteList()
33 void RemoteList::setContent(QDomDocument &doc)
40 void RemoteList::setContent(const QString &xmlFile)
47 bool RemoteList::isValid()
52 QList<QChar> RemoteList::letters()
57 QStringList RemoteList::manufacturers(const QChar &letter)
59 return mfgMap.value(letter);
62 QList<Model> RemoteList::models(const QString &manufacturer)
64 return modelMap.value(manufacturer);
67 void RemoteList::parse(const QString &xmlFile)
72 if (!file.open(QIODevice::ReadOnly))
78 if (!doc.setContent(&file))
89 void RemoteList::parse(QDomDocument &doc)
91 QDomNodeList chars = doc.elementsByTagName("char");
93 for (int i = 0; i < chars.size(); ++i)
95 QDomElement charEl = chars.at(i).toElement();
98 if (charEl.hasAttribute("id"))
99 mfgMap.insert(charEl.attribute("id").at(0), parseMfgs(charEl));
103 valid = (mfgMap.size() > 0 &&
104 modelMap.size() > 0 &&
105 mfgMap.values().size() == modelMap.keys().size());
108 QStringList RemoteList::parseMfgs(QDomElement &charEl)
110 QStringList mfgStrings;
111 QDomNodeList mfgs = charEl.elementsByTagName("mfg");
113 for (int i = 0; i < mfgs.size(); ++i)
115 QDomElement mfgEl = mfgs.at(i).toElement();
118 if (mfgEl.hasAttribute("id"))
120 mfgStrings.append(mfgEl.attribute("id"));
121 modelMap.insert(mfgStrings.last(), parseModels(mfgEl));
128 QList<Model> RemoteList::parseModels(QDomElement &mfgEl)
130 QList<Model> modelList;
131 QDomNodeList models = mfgEl.elementsByTagName("model");
133 for (int i = 0; i < models.size(); ++i)
135 QDomElement modelEl = models.at(i).toElement();
136 if (!modelEl.isNull())
138 if (modelEl.hasAttribute("name") && modelEl.hasAttribute("file"))
140 modelList.append(Model(modelEl.attribute("name"),
141 modelEl.attribute("file")));