mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-10 16:24:45 -07:00
[GDE] Fix add card always grouping by type (#5995)
This commit is contained in:
parent
6f3a07b756
commit
90ce5f2c57
2 changed files with 20 additions and 26 deletions
|
|
@ -29,7 +29,7 @@ DeckListModel::~DeckListModel()
|
||||||
delete root;
|
delete root;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString DeckListModel::getSortCriteriaForCard(CardInfoPtr info)
|
QString DeckListModel::getGroupCriteriaForCard(CardInfoPtr info) const
|
||||||
{
|
{
|
||||||
if (!info) {
|
if (!info) {
|
||||||
return "unknown";
|
return "unknown";
|
||||||
|
|
@ -67,15 +67,15 @@ void DeckListModel::rebuildTree()
|
||||||
}
|
}
|
||||||
|
|
||||||
CardInfoPtr info = CardDatabaseManager::getInstance()->getCard(currentCard->getName());
|
CardInfoPtr info = CardDatabaseManager::getInstance()->getCard(currentCard->getName());
|
||||||
QString cardType = getSortCriteriaForCard(info);
|
QString groupCriteria = getGroupCriteriaForCard(info);
|
||||||
|
|
||||||
auto *cardTypeNode = dynamic_cast<InnerDecklistNode *>(node->findChild(cardType));
|
auto *groupNode = dynamic_cast<InnerDecklistNode *>(node->findChild(groupCriteria));
|
||||||
|
|
||||||
if (!cardTypeNode) {
|
if (!groupNode) {
|
||||||
cardTypeNode = new InnerDecklistNode(cardType, node);
|
groupNode = new InnerDecklistNode(groupCriteria, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
new DecklistModelCardNode(currentCard, cardTypeNode);
|
new DecklistModelCardNode(currentCard, groupNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -332,28 +332,24 @@ DecklistModelCardNode *DeckListModel::findCardNode(const QString &cardName,
|
||||||
const QString &providerId,
|
const QString &providerId,
|
||||||
const QString &cardNumber) const
|
const QString &cardNumber) const
|
||||||
{
|
{
|
||||||
InnerDecklistNode *zoneNode, *typeNode;
|
InnerDecklistNode *zoneNode = dynamic_cast<InnerDecklistNode *>(root->findChild(zoneName));
|
||||||
CardInfoPtr info;
|
|
||||||
QString cardType;
|
|
||||||
|
|
||||||
zoneNode = dynamic_cast<InnerDecklistNode *>(root->findChild(zoneName));
|
|
||||||
if (!zoneNode) {
|
if (!zoneNode) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
info = CardDatabaseManager::getInstance()->getCard(cardName);
|
CardInfoPtr info = CardDatabaseManager::getInstance()->getCard(cardName);
|
||||||
if (!info) {
|
if (!info) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
cardType = info->getMainCardType();
|
QString groupCriteria = getGroupCriteriaForCard(info);
|
||||||
typeNode = dynamic_cast<InnerDecklistNode *>(zoneNode->findChild(cardType));
|
InnerDecklistNode *groupNode = dynamic_cast<InnerDecklistNode *>(zoneNode->findChild(groupCriteria));
|
||||||
if (!typeNode) {
|
if (!groupNode) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return dynamic_cast<DecklistModelCardNode *>(
|
return dynamic_cast<DecklistModelCardNode *>(
|
||||||
typeNode->findCardChildByNameProviderIdAndNumber(cardName, providerId, cardNumber));
|
groupNode->findCardChildByNameProviderIdAndNumber(cardName, providerId, cardNumber));
|
||||||
}
|
}
|
||||||
|
|
||||||
QModelIndex DeckListModel::findCard(const QString &cardName,
|
QModelIndex DeckListModel::findCard(const QString &cardName,
|
||||||
|
|
@ -361,9 +357,7 @@ QModelIndex DeckListModel::findCard(const QString &cardName,
|
||||||
const QString &providerId,
|
const QString &providerId,
|
||||||
const QString &cardNumber) const
|
const QString &cardNumber) const
|
||||||
{
|
{
|
||||||
DecklistModelCardNode *cardNode;
|
DecklistModelCardNode *cardNode = findCardNode(cardName, zoneName, providerId, cardNumber);
|
||||||
|
|
||||||
cardNode = findCardNode(cardName, zoneName, providerId, cardNumber);
|
|
||||||
if (!cardNode) {
|
if (!cardNode) {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
@ -399,23 +393,23 @@ QModelIndex DeckListModel::addCard(const QString &cardName,
|
||||||
|
|
||||||
InnerDecklistNode *zoneNode = createNodeIfNeeded(zoneName, root);
|
InnerDecklistNode *zoneNode = createNodeIfNeeded(zoneName, root);
|
||||||
|
|
||||||
const QString cardType = cardInfo->getMainCardType();
|
QString groupCriteria = getGroupCriteriaForCard(cardInfo);
|
||||||
InnerDecklistNode *cardTypeNode = createNodeIfNeeded(cardType, zoneNode);
|
InnerDecklistNode *groupNode = createNodeIfNeeded(groupCriteria, zoneNode);
|
||||||
|
|
||||||
const QModelIndex parentIndex = nodeToIndex(cardTypeNode);
|
const QModelIndex parentIndex = nodeToIndex(groupNode);
|
||||||
auto *cardNode = dynamic_cast<DecklistModelCardNode *>(cardTypeNode->findCardChildByNameProviderIdAndNumber(
|
auto *cardNode = dynamic_cast<DecklistModelCardNode *>(groupNode->findCardChildByNameProviderIdAndNumber(
|
||||||
cardName, cardInfoSet.getProperty("uuid"), cardInfoSet.getProperty("num")));
|
cardName, cardInfoSet.getProperty("uuid"), cardInfoSet.getProperty("num")));
|
||||||
const auto cardSetName = cardInfoSet.getPtr().isNull() ? "" : cardInfoSet.getPtr()->getCorrectedShortName();
|
const auto cardSetName = cardInfoSet.getPtr().isNull() ? "" : cardInfoSet.getPtr()->getCorrectedShortName();
|
||||||
|
|
||||||
if (!cardNode) {
|
if (!cardNode) {
|
||||||
// Determine the correct index
|
// Determine the correct index
|
||||||
int insertRow = findSortedInsertRow(cardTypeNode, cardInfo);
|
int insertRow = findSortedInsertRow(groupNode, cardInfo);
|
||||||
|
|
||||||
auto *decklistCard = deckList->addCard(cardInfo->getName(), zoneName, insertRow, cardSetName,
|
auto *decklistCard = deckList->addCard(cardInfo->getName(), zoneName, insertRow, cardSetName,
|
||||||
cardInfoSet.getProperty("num"), cardInfoSet.getProperty("uuid"));
|
cardInfoSet.getProperty("num"), cardInfoSet.getProperty("uuid"));
|
||||||
|
|
||||||
beginInsertRows(parentIndex, insertRow, insertRow);
|
beginInsertRows(parentIndex, insertRow, insertRow);
|
||||||
cardNode = new DecklistModelCardNode(decklistCard, cardTypeNode, insertRow);
|
cardNode = new DecklistModelCardNode(decklistCard, groupNode, insertRow);
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
} else {
|
} else {
|
||||||
cardNode->setNumber(cardNode->getNumber() + 1);
|
cardNode->setNumber(cardNode->getNumber() + 1);
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ public:
|
||||||
{
|
{
|
||||||
return nodeToIndex(root);
|
return nodeToIndex(root);
|
||||||
};
|
};
|
||||||
QString getSortCriteriaForCard(CardInfoPtr info);
|
QString getGroupCriteriaForCard(CardInfoPtr info) const;
|
||||||
int rowCount(const QModelIndex &parent) const override;
|
int rowCount(const QModelIndex &parent) const override;
|
||||||
int columnCount(const QModelIndex & /*parent*/ = QModelIndex()) const override;
|
int columnCount(const QModelIndex & /*parent*/ = QModelIndex()) const override;
|
||||||
QVariant data(const QModelIndex &index, int role) const override;
|
QVariant data(const QModelIndex &index, int role) const override;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue