use loadFromStream_Plain instead of manually adding CardNodes to the DeckList.

Took 30 minutes
This commit is contained in:
Lukas Brübach 2025-07-13 12:39:01 +02:00
parent c137201317
commit fa6c8503fe

View file

@ -26,6 +26,9 @@ public:
list->setName(deckName); list->setName(deckName);
list->setComments(deckDescription); list->setComments(deckDescription);
QString outputText;
QTextStream outStream(&outputText);
for (auto entry : obj.value("cards").toArray()) { for (auto entry : obj.value("cards").toArray()) {
auto quantity = entry.toObject().value("quantity").toInt(); auto quantity = entry.toObject().value("quantity").toInt();
@ -34,13 +37,13 @@ public:
QString cardName = oracleCard.value("name").toString(); QString cardName = oracleCard.value("name").toString();
QString setName = card.value("edition").toObject().value("editioncode").toString().toUpper(); QString setName = card.value("edition").toObject().value("editioncode").toString().toUpper();
QString collectorNumber = card.value("collectorNumber").toString(); QString collectorNumber = card.value("collectorNumber").toString();
QString providerId = card.value("uid").toString();
DecklistCardNode *newCard = outStream << quantity << ' ' << cardName << " (" << setName << ") " << collectorNumber << '\n';
list->addCard(cardName, DECK_ZONE_MAIN, -1, setName, collectorNumber, providerId);
newCard->setNumber(quantity);
} }
list->loadFromStream_Plain(outStream, false);
list->resolveSetNameAndNumberToProviderID();
return list; return list;
} }
}; };
@ -58,6 +61,36 @@ public:
list->setName(deckName); list->setName(deckName);
list->setComments(deckDescription); list->setComments(deckDescription);
QString outputText;
QTextStream outStream(&outputText);
for (auto entry : obj.value("mainboard").toObject()) {
auto quantity = entry.toObject().value("quantity").toInt();
auto card = entry.toObject().value("card").toObject();
QString cardName = card.value("name").toString();
QString setName = card.value("set").toString().toUpper();
QString collectorNumber = card.value("cn").toString();
outStream << quantity << ' ' << cardName << " (" << setName << ") " << collectorNumber << '\n';
}
outStream << '\n';
for (auto entry : obj.value("sideboard").toObject()) {
auto quantity = entry.toObject().value("quantity").toInt();
auto card = entry.toObject().value("card").toObject();
QString cardName = card.value("name").toString();
QString setName = card.value("set").toString().toUpper();
QString collectorNumber = card.value("cn").toString();
outStream << quantity << ' ' << cardName << " (" << setName << ") " << collectorNumber << '\n';
}
list->loadFromStream_Plain(outStream, false);
list->resolveSetNameAndNumberToProviderID();
QJsonObject commandersObj = obj.value("commanders").toObject(); QJsonObject commandersObj = obj.value("commanders").toObject();
if (!commandersObj.isEmpty()) { if (!commandersObj.isEmpty()) {
for (auto it = commandersObj.begin(); it != commandersObj.end(); ++it) { for (auto it = commandersObj.begin(); it != commandersObj.end(); ++it) {
@ -72,34 +105,6 @@ public:
} }
} }
for (auto entry : obj.value("mainboard").toObject()) {
auto quantity = entry.toObject().value("quantity").toInt();
auto card = entry.toObject().value("card").toObject();
QString cardName = card.value("name").toString();
QString setName = card.value("set").toString().toUpper();
QString collectorNumber = card.value("cn").toString();
QString providerId = card.value("scryfall_id").toString();
DecklistCardNode *newCard =
list->addCard(cardName, DECK_ZONE_MAIN, -1, setName, collectorNumber, providerId);
newCard->setNumber(quantity);
}
for (auto entry : obj.value("sideboard").toObject()) {
auto quantity = entry.toObject().value("quantity").toInt();
auto card = entry.toObject().value("card").toObject();
QString cardName = card.value("name").toString();
QString setName = card.value("set").toString().toUpper();
QString collectorNumber = card.value("cn").toString();
QString providerId = card.value("scryfall_id").toString();
DecklistCardNode *newCard =
list->addCard(cardName, DECK_ZONE_SIDE, -1, setName, collectorNumber, providerId);
newCard->setNumber(quantity);
}
return list; return list;
} }
}; };