Cache correct providerId cards on deck load (#5668)

* Implement new method for DeckList to return cardlist with providerId, a new carddatabase method to fetch a cardlist with name and providerId and changed PictureLoader to use providerId versions of cards for caching.

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
BruebachL 2025-02-28 17:10:06 +01:00 committed by GitHub
parent 7ff43f15fc
commit 3620664a9f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 41 additions and 5 deletions

View file

@ -825,6 +825,19 @@ void DeckList::getCardListHelper(InnerDecklistNode *item, QSet<QString> &result)
}
}
void DeckList::getCardListWithProviderIdHelper(InnerDecklistNode *item, QMap<QString, QString> &result) const
{
for (int i = 0; i < item->size(); ++i) {
auto *node = dynamic_cast<DecklistCardNode *>(item->at(i));
if (node) {
result.insert(node->getName(), node->getCardProviderId());
} else {
getCardListWithProviderIdHelper(dynamic_cast<InnerDecklistNode *>(item->at(i)), result);
}
}
}
QStringList DeckList::getCardList() const
{
QSet<QString> result;
@ -832,6 +845,13 @@ QStringList DeckList::getCardList() const
return result.values();
}
QMap<QString, QString> DeckList::getCardListWithProviderId() const
{
QMap<QString, QString> result;
getCardListWithProviderIdHelper(root, result);
return result;
}
int DeckList::getSideboardSize() const
{
int size = 0;