mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-19 17:02:15 -07:00
Only overwrite card in deck if UUID _and_ Number missing
This commit is contained in:
parent
050c86cee6
commit
7d42a43c87
4 changed files with 39 additions and 19 deletions
|
|
@ -307,8 +307,10 @@ InnerDecklistNode *DeckListModel::createNodeIfNeeded(const QString &name, InnerD
|
|||
return newNode;
|
||||
}
|
||||
|
||||
DecklistModelCardNode *
|
||||
DeckListModel::findCardNode(const QString &cardName, const QString &zoneName, const QString &providerId) const
|
||||
DecklistModelCardNode *DeckListModel::findCardNode(const QString &cardName,
|
||||
const QString &zoneName,
|
||||
const QString &providerId,
|
||||
const QString &cardNumber) const
|
||||
{
|
||||
InnerDecklistNode *zoneNode, *typeNode;
|
||||
CardInfoPtr info;
|
||||
|
|
@ -330,14 +332,18 @@ DeckListModel::findCardNode(const QString &cardName, const QString &zoneName, co
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
return dynamic_cast<DecklistModelCardNode *>(typeNode->findCardChildByNameAndProviderId(cardName, providerId));
|
||||
return dynamic_cast<DecklistModelCardNode *>(
|
||||
typeNode->findCardChildByNameProviderIdAndNumber(cardName, providerId, cardNumber));
|
||||
}
|
||||
|
||||
QModelIndex DeckListModel::findCard(const QString &cardName, const QString &zoneName, const QString &providerId) const
|
||||
QModelIndex DeckListModel::findCard(const QString &cardName,
|
||||
const QString &zoneName,
|
||||
const QString &providerId,
|
||||
const QString &cardNumber) const
|
||||
{
|
||||
DecklistModelCardNode *cardNode;
|
||||
|
||||
cardNode = findCardNode(cardName, zoneName, providerId);
|
||||
cardNode = findCardNode(cardName, zoneName, providerId, cardNumber);
|
||||
if (!cardNode) {
|
||||
return {};
|
||||
}
|
||||
|
|
@ -352,7 +358,7 @@ QModelIndex DeckListModel::addPreferredPrintingCard(const QString &cardName, con
|
|||
}
|
||||
|
||||
QModelIndex DeckListModel::addCard(const QString &cardName,
|
||||
const CardInfoPerSet cardInfoSet,
|
||||
const CardInfoPerSet &cardInfoSet,
|
||||
const QString &zoneName,
|
||||
bool abAddAnyway)
|
||||
{
|
||||
|
|
@ -377,8 +383,8 @@ QModelIndex DeckListModel::addCard(const QString &cardName,
|
|||
InnerDecklistNode *cardTypeNode = createNodeIfNeeded(cardType, zoneNode);
|
||||
|
||||
const QModelIndex parentIndex = nodeToIndex(cardTypeNode);
|
||||
auto *cardNode = dynamic_cast<DecklistModelCardNode *>(
|
||||
cardTypeNode->findCardChildByNameAndProviderId(cardName, cardInfoSet.getProperty("uuid")));
|
||||
auto *cardNode = dynamic_cast<DecklistModelCardNode *>(cardTypeNode->findCardChildByNameProviderIdAndNumber(
|
||||
cardName, cardInfoSet.getProperty("uuid"), cardInfoSet.getProperty("num")));
|
||||
const auto cardSetName = cardInfoSet.getPtr().isNull() ? "" : cardInfoSet.getPtr()->getCorrectedShortName();
|
||||
|
||||
if (!cardNode) {
|
||||
|
|
|
|||
|
|
@ -94,10 +94,15 @@ public:
|
|||
Qt::ItemFlags flags(const QModelIndex &index) const override;
|
||||
bool setData(const QModelIndex &index, const QVariant &value, int role) override;
|
||||
bool removeRows(int row, int count, const QModelIndex &parent) override;
|
||||
QModelIndex findCard(const QString &cardName, const QString &zoneName, const QString &providerId = "") const;
|
||||
QModelIndex findCard(const QString &cardName,
|
||||
const QString &zoneName,
|
||||
const QString &providerId = "",
|
||||
const QString &cardNumber = "") const;
|
||||
QModelIndex addPreferredPrintingCard(const QString &cardName, const QString &zoneName, bool abAddAnyway);
|
||||
QModelIndex
|
||||
addCard(const ::QString &cardName, CardInfoPerSet cardInfoSet, const QString &zoneName, bool abAddAnyway = false);
|
||||
QModelIndex addCard(const ::QString &cardName,
|
||||
const CardInfoPerSet &cardInfoSet,
|
||||
const QString &zoneName,
|
||||
bool abAddAnyway = false);
|
||||
void sort(int column, Qt::SortOrder order) override;
|
||||
void cleanList();
|
||||
DeckLoader *getDeckList() const
|
||||
|
|
@ -113,8 +118,10 @@ private:
|
|||
Qt::SortOrder lastKnownOrder;
|
||||
InnerDecklistNode *createNodeIfNeeded(const QString &name, InnerDecklistNode *parent);
|
||||
QModelIndex nodeToIndex(AbstractDecklistNode *node) const;
|
||||
DecklistModelCardNode *
|
||||
findCardNode(const QString &cardName, const QString &zoneName, const QString &providerId = "") const;
|
||||
DecklistModelCardNode *findCardNode(const QString &cardName,
|
||||
const QString &zoneName,
|
||||
const QString &providerId = "",
|
||||
const QString &cardNumber = "") const;
|
||||
void emitRecursiveUpdates(const QModelIndex &index);
|
||||
void sortHelper(InnerDecklistNode *node, Qt::SortOrder order);
|
||||
|
||||
|
|
|
|||
|
|
@ -156,12 +156,17 @@ AbstractDecklistNode *InnerDecklistNode::findChild(const QString &_name)
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
AbstractDecklistNode *InnerDecklistNode::findCardChildByNameAndProviderId(const QString &_name,
|
||||
const QString &_providerId)
|
||||
AbstractDecklistNode *InnerDecklistNode::findCardChildByNameProviderIdAndNumber(const QString &_name,
|
||||
const QString &_providerId,
|
||||
const QString &_cardNumber)
|
||||
{
|
||||
for (int i = 0; i < size(); i++) {
|
||||
if (at(i) != nullptr && at(i)->getName() == _name && at(i)->getCardProviderId() == _providerId) {
|
||||
return at(i);
|
||||
for (const auto &i : *this) {
|
||||
if (i != nullptr && i->getName() == _name) {
|
||||
if (i->getCardCollectorNumber() == _cardNumber) {
|
||||
if (i->getCardProviderId() == _providerId) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
|
|
|
|||
|
|
@ -136,7 +136,9 @@ public:
|
|||
|
||||
void clearTree();
|
||||
AbstractDecklistNode *findChild(const QString &_name);
|
||||
AbstractDecklistNode *findCardChildByNameAndProviderId(const QString &_name, const QString &_providerId);
|
||||
AbstractDecklistNode *findCardChildByNameProviderIdAndNumber(const QString &_name,
|
||||
const QString &_providerId,
|
||||
const QString &_cardNumber = "");
|
||||
int height() const override;
|
||||
int recursiveCount(bool countTotalCards = false) const;
|
||||
bool compare(AbstractDecklistNode *other) const override;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue