Add QSet for faster lookups

This commit is contained in:
ZeldaZach 2024-12-25 23:54:40 -05:00
parent c7ca55ceb5
commit 0fdd4f67fe
No known key found for this signature in database
2 changed files with 9 additions and 4 deletions

View file

@ -110,15 +110,17 @@ bool CardDatabaseModel::checkCardHasAtLeastOneEnabledSet(CardInfoPtr card)
void CardDatabaseModel::cardDatabaseEnabledSetsChanged() void CardDatabaseModel::cardDatabaseEnabledSetsChanged()
{ {
// remove all the cards no more present in at least one enabled set // remove all the cards no more present in at least one enabled set
foreach (CardInfoPtr card, cardList) { for (const CardInfoPtr &card : cardList) {
if (!checkCardHasAtLeastOneEnabledSet(card)) if (!checkCardHasAtLeastOneEnabledSet(card)) {
cardRemoved(card); cardRemoved(card);
}
} }
// re-check all the card currently not shown, maybe their part of a newly-enabled set // re-check all the card currently not shown, maybe their part of a newly-enabled set
foreach (CardInfoPtr card, db->getCardList()) { for (const CardInfoPtr &card : db->getCardList()) {
if (!cardList.contains(card)) if (!cardListSet.contains(card)) {
cardAdded(card); cardAdded(card);
}
} }
} }
@ -128,6 +130,7 @@ void CardDatabaseModel::cardAdded(CardInfoPtr card)
// add the card if it's present in at least one enabled set // add the card if it's present in at least one enabled set
beginInsertRows(QModelIndex(), cardList.size(), cardList.size()); beginInsertRows(QModelIndex(), cardList.size(), cardList.size());
cardList.append(card); cardList.append(card);
cardListSet.insert(card);
connect(card.data(), SIGNAL(cardInfoChanged(CardInfoPtr)), this, SLOT(cardInfoChanged(CardInfoPtr))); connect(card.data(), SIGNAL(cardInfoChanged(CardInfoPtr)), this, SLOT(cardInfoChanged(CardInfoPtr)));
endInsertRows(); endInsertRows();
} }
@ -144,6 +147,7 @@ void CardDatabaseModel::cardRemoved(CardInfoPtr card)
disconnect(card.data(), nullptr, this, nullptr); disconnect(card.data(), nullptr, this, nullptr);
card.clear(); card.clear();
cardList.removeAt(row); cardList.removeAt(row);
cardListSet.insert(card);
endRemoveRows(); endRemoveRows();
} }

View file

@ -46,6 +46,7 @@ public:
private: private:
QList<CardInfoPtr> cardList; QList<CardInfoPtr> cardList;
QSet<CardInfoPtr> cardListSet; // Supports faster lookups in cardDatabaseEnabledSetsChanged()
CardDatabase *db; CardDatabase *db;
bool showOnlyCardsFromEnabledSets; bool showOnlyCardsFromEnabledSets;