mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-15 19:47:46 -07:00
Emit more signals when data is changed and add utility functions to interact with a decklist in the context of cardinfoptrs. (#5815)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
56bbd8a172
commit
53e9a91dc6
2 changed files with 94 additions and 1 deletions
|
|
@ -263,6 +263,8 @@ bool DeckListModel::setData(const QModelIndex &index, const QVariant &value, con
|
||||||
|
|
||||||
emitRecursiveUpdates(index);
|
emitRecursiveUpdates(index);
|
||||||
deckList->refreshDeckHash();
|
deckList->refreshDeckHash();
|
||||||
|
|
||||||
|
emit dataChanged(index, index);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -292,7 +294,7 @@ bool DeckListModel::removeRows(int row, int count, const QModelIndex &parent)
|
||||||
} else {
|
} else {
|
||||||
emitRecursiveUpdates(parent);
|
emitRecursiveUpdates(parent);
|
||||||
}
|
}
|
||||||
|
emit dataChanged(parent, parent);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -483,6 +485,94 @@ void DeckListModel::setDeckList(DeckLoader *_deck)
|
||||||
rebuildTree();
|
rebuildTree();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<CardInfoPtr> DeckListModel::getCardsAsCardInfoPtrs() const
|
||||||
|
{
|
||||||
|
QList<CardInfoPtr> cards;
|
||||||
|
DeckList *decklist = getDeckList();
|
||||||
|
if (!decklist) {
|
||||||
|
return cards;
|
||||||
|
}
|
||||||
|
InnerDecklistNode *listRoot = decklist->getRoot();
|
||||||
|
if (!listRoot)
|
||||||
|
return cards;
|
||||||
|
|
||||||
|
for (int i = 0; i < listRoot->size(); i++) {
|
||||||
|
InnerDecklistNode *currentZone = dynamic_cast<InnerDecklistNode *>(listRoot->at(i));
|
||||||
|
if (!currentZone)
|
||||||
|
continue;
|
||||||
|
for (int j = 0; j < currentZone->size(); j++) {
|
||||||
|
DecklistCardNode *currentCard = dynamic_cast<DecklistCardNode *>(currentZone->at(j));
|
||||||
|
if (!currentCard)
|
||||||
|
continue;
|
||||||
|
for (int k = 0; k < currentCard->getNumber(); ++k) {
|
||||||
|
CardInfoPtr info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(
|
||||||
|
currentCard->getName(), currentCard->getCardProviderId());
|
||||||
|
if (info) {
|
||||||
|
cards.append(info);
|
||||||
|
} else {
|
||||||
|
qDebug() << "Card not found in database!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cards;
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<CardInfoPtr> DeckListModel::getCardsAsCardInfoPtrsForZone(QString zoneName) const
|
||||||
|
{
|
||||||
|
QList<CardInfoPtr> cards;
|
||||||
|
DeckList *decklist = getDeckList();
|
||||||
|
if (!decklist) {
|
||||||
|
return cards;
|
||||||
|
}
|
||||||
|
InnerDecklistNode *listRoot = decklist->getRoot();
|
||||||
|
if (!listRoot)
|
||||||
|
return cards;
|
||||||
|
|
||||||
|
for (int i = 0; i < listRoot->size(); i++) {
|
||||||
|
InnerDecklistNode *currentZone = dynamic_cast<InnerDecklistNode *>(listRoot->at(i));
|
||||||
|
if (!currentZone)
|
||||||
|
continue;
|
||||||
|
if (currentZone->getName() == zoneName) {
|
||||||
|
for (int j = 0; j < currentZone->size(); j++) {
|
||||||
|
DecklistCardNode *currentCard = dynamic_cast<DecklistCardNode *>(currentZone->at(j));
|
||||||
|
if (!currentCard)
|
||||||
|
continue;
|
||||||
|
for (int k = 0; k < currentCard->getNumber(); ++k) {
|
||||||
|
CardInfoPtr info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(
|
||||||
|
currentCard->getName(), currentCard->getCardProviderId());
|
||||||
|
if (info) {
|
||||||
|
cards.append(info);
|
||||||
|
} else {
|
||||||
|
qDebug() << "Card not found in database!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cards;
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QString> *DeckListModel::getZones() const
|
||||||
|
{
|
||||||
|
QList<QString> *zones = new QList<QString>();
|
||||||
|
DeckList *decklist = getDeckList();
|
||||||
|
if (!decklist) {
|
||||||
|
return zones;
|
||||||
|
}
|
||||||
|
InnerDecklistNode *listRoot = decklist->getRoot();
|
||||||
|
if (!listRoot)
|
||||||
|
return zones;
|
||||||
|
|
||||||
|
for (int i = 0; i < listRoot->size(); i++) {
|
||||||
|
InnerDecklistNode *currentZone = dynamic_cast<InnerDecklistNode *>(listRoot->at(i));
|
||||||
|
if (!currentZone)
|
||||||
|
continue;
|
||||||
|
zones->append(currentZone->getName());
|
||||||
|
}
|
||||||
|
return zones;
|
||||||
|
}
|
||||||
|
|
||||||
void DeckListModel::printDeckListNode(QTextCursor *cursor, InnerDecklistNode *node)
|
void DeckListModel::printDeckListNode(QTextCursor *cursor, InnerDecklistNode *node)
|
||||||
{
|
{
|
||||||
const int totalColumns = 2;
|
const int totalColumns = 2;
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,9 @@ public:
|
||||||
return deckList;
|
return deckList;
|
||||||
}
|
}
|
||||||
void setDeckList(DeckLoader *_deck);
|
void setDeckList(DeckLoader *_deck);
|
||||||
|
QList<CardInfoPtr> getCardsAsCardInfoPtrs() const;
|
||||||
|
QList<CardInfoPtr> getCardsAsCardInfoPtrsForZone(QString zoneName) const;
|
||||||
|
QList<QString> *getZones() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DeckLoader *deckList;
|
DeckLoader *deckList;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue