LoadStatus CardDatabase::loadCardDatabase(const QString &path, bool tokens) { LoadStatus tempLoadStatus = NotLoaded; if (!path.isEmpty()) tempLoadStatus = loadFromFile(path, tokens); if (tempLoadStatus == Ok) { SetList allSets; QHashIterator<QString, CardSet *> setsIterator(sets); while (setsIterator.hasNext()) allSets.append(setsIterator.next().value()); allSets.sortByKey(); for (int i = 0; i < allSets.size(); ++i) allSets[i]->setSortKey(i); emit cardListChanged(); } if (!tokens) { loadStatus = tempLoadStatus; qDebug() << "loadCardDatabase(): Path = " << path << " Status = " << loadStatus; } return tempLoadStatus; }
void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml, bool tokens) { while (!xml.atEnd()) { if (xml.readNext() == QXmlStreamReader::EndElement) break; if (xml.name() == "card") { QString name, manacost, type, pt, text; QStringList colors; QStringMap customPicURLs, customPicURLsHq; MuidMap muids; SetList sets; int tableRow = 0; int loyalty = 0; bool cipt = false; bool isToken = false; while (!xml.atEnd()) { if (xml.readNext() == QXmlStreamReader::EndElement) break; if (xml.name() == "name") name = xml.readElementText(); else if (xml.name() == "manacost") manacost = xml.readElementText(); else if (xml.name() == "type") type = xml.readElementText(); else if (xml.name() == "pt") pt = xml.readElementText(); else if (xml.name() == "text") text = xml.readElementText(); else if (xml.name() == "set") { QXmlStreamAttributes attrs = xml.attributes(); QString setName = xml.readElementText(); sets.append(getSet(setName)); if (attrs.hasAttribute("muId")) { muids[setName] = attrs.value("muId").toString().toInt(); } if (attrs.hasAttribute("picURL")) { customPicURLs[setName] = attrs.value("picURL").toString(); } if (attrs.hasAttribute("picURLHq")) { customPicURLsHq[setName] = attrs.value("picURLHq").toString(); } } else if (xml.name() == "color") colors << xml.readElementText(); else if (xml.name() == "tablerow") tableRow = xml.readElementText().toInt(); else if (xml.name() == "cipt") cipt = (xml.readElementText() == "1"); else if (xml.name() == "loyalty") loyalty = xml.readElementText().toInt(); else if (xml.name() == "token") isToken = xml.readElementText().toInt(); } if (isToken == tokens) { addCard(new CardInfo(this, name, isToken, manacost, type, pt, text, colors, loyalty, cipt, tableRow, sets, customPicURLs, customPicURLsHq, muids)); } } } }